{ "posts" : [
{
		"title": "bt-linkding available on the Chrome and Firefox extension stores",
		"url": "/2026/03/13/bt-linkding-available-on-the-chrome-and-firefox-extension-stores/",
		"tags": ["bookmarking","browser","chrome","extensions","firefox","linkding"],
		"date": "Mar 13<span>th</span>, 2026",
		"ts": "1773408660",
		"summary": "BrettTerpstra.com",
		"keywords": ["bookmarking","extension","plugin","chrome","firefox","store","available","browser","extension","extensions","linkding","marketplace","point","quick","respective","stores","useful"]
	},{
		"title": "Web Excursions for March 11th, 2026",
		"url": "/2026/03/11/web-excursions-for-march-11th-2026/",
		"tags": ["bookmarks","markdown"],
		"date": "Mar 11<span>th</span>, 2026",
		"ts": "1773248400",
		"summary": "Web excursions brought to you in partnership with Fabric, the best way to organize your notes, tasks, and projects in one place. Tokie Ok, this is cool. A macOS file manager that turns your folder into a database for better file management, with some very cool integration with your AI agent, built-in Markdown editor, custom fields for file management, and a ton of other capabilities. A proposal for Markdown on ATProto Providing a Lexicon for putting Markdown in the ATmosphere. Fits nicely into my thoughts about a Markdown Web and has a fair amount of thought and feedback already in the spec. GitHub Actions for WordPress I know this has a limited audience, but if you develop WordPress plugins and haven&rsquo;t explored 10up&rsquo;s GitHub actions, you really should. The deploy one is infinitely useful and means you never have to deal with SVN after intial repo setup. rhsev/matterbase Ralf keeps putting out cool stuff: \"A database-like TUI for querying frontmatter and YAML in Markdown notes with field filters, full-text search, and table view. For macOS and Linux.\" Let Fabric be your second brain, with an all-in-one AI workspace and smart organizer for all your projects, ideas, notes & links. Check it out today",
		"keywords": ["database","finder","linux","macos","management","atproto","atmosphere","actions","check","fabric","github","lexicon","linux","markdown","providing","tokie","wordpress","actions","agent","amount","audience","brain","brought","built","capabilities","custom","database","deploy","develop","editor","excursions","explored","feedback","field","fields","filters","folder","frontmatter","haven","ideas","infinitely","integration","intial","keeps","limited","links","macos","management","manager","matterbase","nicely","notes","organize","organizer","partnership","plugins","projects","proposal","putting","querying","rhsev","rsquo","search","second","setup","smart","stuff","table","tasks","thought","thoughts","today","turns","useful","workspace"]
	},{
		"title": "Unite Pro giveaway!",
		"url": "/2026/03/09/unite-pro-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Mar 9<span>th</span>, 2026",
		"ts": "1773061200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 4 licenses ($39.99 value each) for Unite Pro. Unite has long been my favorite way to create Single Site Browsers (SSBs), sandboxing things like Facebook and MindMeister while adding app-like functionality. The latest version, Unite Pro, is out now, and I have free copies! We&rsquo;ve taken everything we&rsquo;ve learned since 2017 and rethought it for modern macOS. The result is faster, more flexible, and significantly more powerful &mdash; while staying true to what makes Unite valuable: turning web apps into genuine Mac-native experiences. Sign up below to enter. Winners will be randomly drawn on Friday, March 13, at 12pm Central. The drawing is for 4 licenses ($39.99 value each) for Unite Pro, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Giveaway ends in... One entry per person, a full name and valid email required to win. Giveaway ends on 03/13/26 at 12:00 PM. Name: Yes, sign me up for the BrettTerpstra.com mailing list. If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["browser","brettterpstra","browsers","central","check","email","entries","facebook","friday","giveaway","mastodon","mindmeister","single","unite","winners","adding","address","among","appreciated","below","brettterpstra","codes","cooperation","copies","create","developer","drawing","email","enter","entry","everything","excited","experiences","faster","favorite","featured","first","flexible","functionality","generating","genuine","giveaway","giveaways","latest","learned","license","licenses","macos","mailing","makes","mdash","misuse","modern","names","native","offer","person","powerful","randomly","reading","required","rethought","robot","rsquo","sandboxing","series","significantly","signups","since","skipped","staying","taken","turning","valid","valuable","value","vendors","version","visit","while","winner"]
	},{
		"title": "Put all the web browsers in your Dock",
		"url": "/2026/03/06/put-all-the-web-browsers-in-your-dock/",
		"tags": ["browser","bunch","icons","menus","shortcuts"],
		"date": "Mar 6<span>th</span>, 2026",
		"ts": "1772805600",
		"summary": "Here&rsquo;s a silly idea I had. I don&rsquo;t like to keep a bunch of icons in my Dock, preferring to use Bunch along with a simple set of persistent Dock apps. I do keep Firefox in the Dock, but I use a bunch of browsers for different purposes, so what if I could access all of them from the Dock without polluting it? I use Choosy as my default browser. It allows me to pop up a menu or select a default browser whenever I open a link, based on custom rules. There are multiple variations of this idea, but Choosy is the original and still my favorite. Choosy has a url scheme that you can use to pop up browser menus, among other things. So getting a menu of all my browsers is as easy as setting up a Shortcut to open . For this purpose, I&rsquo;m using the Kagi search page as my URL, since that&rsquo;s where most of my browsing sessions start. Then you can just right click on the Shortcut in the Shortcuts app and \"Add to Dock,\" position it where you want it, and you&rsquo;re done. One click to open any of your browsers. I tried adding a custom icon to it, but failed, so I just have a \"Shortcuts\" icon in my Dock. When I click the shortcut in the Dock, I get the Choosy browser menu, with my running browsers highlighted but all of my browsers accessible. There&rsquo;s probably a way to get it to work well as a Share item for URLs, but the fact is that if I&rsquo;m opening a URL, I already have Choosy as a share option, and if I&rsquo;m opening from a browser, I have a Choosy plugin to do it. I just want all of my browsers in my Dock without adding 10 icons to it permanently. As a side note, I also set up an Open URL action in LeaderKey to do the same thing. When you hold down ⌘ while the browser picker is open, shortcut overlays appear on the browsers, so you can open any browser with a keyboard shortcut, making launching any browser keyboard-based. Of course, this is somewhat useless if you use a launcher like Alfred or LaunchBar, as your browsers are all a few keystrokes away anyway, so I&rsquo;m just experimenting to see what my brain likes best&hellip",
		"keywords": ["browsers","firefox","orion","safari","alfred","browsers","bunch","choosy","command","engine","firefox","launchbar","leaderkey","premium","prompt","search","share","shortcut","shortcuts","access","accessible","action","adding","allows","among","anyway","appear","based","blockquote","brain","brettterpstra","browser","browsers","browsing","bunch","bunchapp","choosy","class","click","custom","default","different","experimenting","failed","faster","favorite","getting","github","height","hellip","highlighted","highlighter","https","icons","image","keyboard","keycombo","keystrokes","language","launcher","launching","ldquo","likes","loading","macos","making","media","menus","mikker","multiple","noscript","opening","original","overlays","permanently","persistent","picker","picture","plaintext","plugin","polluting","position","preferring","prompt","rdquo","right","rouge","rsquo","rules","running","scheme","search","separated","sessions","setting","share","shortcut","silly","simple","since","smarter","somewhat","source","srcset","symbol","title","tried","uploads","useless","using","variations","whenever","where","while","width"]
	},{
		"title": "Web Excursions for March 5th, 2026",
		"url": "/2026/03/05/web-excursions-for-march-5th-2026/",
		"tags": ["bookmarks","scripting"],
		"date": "Mar 5<span>th</span>, 2026",
		"ts": "1772733600",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. julienXX/terminal-notifier Send User Notifications on macOS from the command-line. A great shell script companion that doesn&rsquo;t require making your own calls to . giladdarshan/gdialog: Display macOS dialogs from terminal and scripts Another handy scripting tool to display macOS dialogs from terminal and scripts. There was a more involved version of this that I used to use years ago, but this fits the bill nicely for my current needs. steveyegge/beads Beads - A memory upgrade for your coding agent. I haven&rsquo;t quite gotten the hang of this yet, but I think it has a lot of potential. A persistent, structured memory for coding agents, replacing markdown plans with a dependency-aware graph to handle long-horizon tasks without losing context. Get Sh*t Done A light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code and OpenCode. I&rsquo;m not a Claude Code user, but for non-masochistic developers, this looks like an excellent tool",
		"keywords": ["github","another","beads","check","claude","display","notifications","opencode","setapp","access","agent","agents","aware","beads","brought","calls","coding","command","companion","context","dependency","developers","development","dialogs","display","doesn","driven","engineering","excellent","excursions","gdialog","giladdarshan","gotten","graph","great","handle","handy","haven","horizon","hundreds","involved","julienxx","light","looks","losing","macos","making","markdown","masochistic","memory","monthly","needs","nicely","notifier","partnership","persistent","plans","potential","powerful","prompting","replacing","rsquo","script","scripting","scripts","shell","steveyegge","structured","subscription","system","tasks","terminal","think","today","upgrade","version","weight","years"]
	},{
		"title": "A (slightly better?) linkding extension for Firefox and Chrome",
		"url": "/2026/03/04/a-slightly-better-linkding-extension-for-firefox-and-chrome/",
		"tags": ["bookmarking","chrome","extension","extensions","firefox","linkding"],
		"date": "Mar 4<span>th</span>, 2026",
		"ts": "1772632800",
		"summary": "I&rsquo;ve been using Sascha Ißbrücker&rsquo;s extension for linkding with my own instance for a while now, and while it&rsquo;s simple and works great, there&rsquo;s one thing that always frustrated me: the popover window closes the moment you click outside of it, erasing what you&rsquo;ve entered. If you fit the target audience, read on! Picture: you&rsquo;re adding a bookmark, you&rsquo;ve filled in the title and tags, maybe added some notes, and then you realize you need to copy something from the current page. Or maybe you want to paste some text from another window. The moment you click away to grab that text, poof &mdash; the popover closes and you lose everything you&rsquo;ve typed. So I created bt-linkding, a fork that opens the bookmark panel in a persistent popup window instead of the default toolbar popover. The window stays open until you explicitly click Save, Update, or Cancel. No more accidentally dismissing the window and losing your changes. This means you can freely navigate away from the bookmark panel to copy text from the current page, paste from another window, or do whatever else you need to do. Your work stays put until you&rsquo;re ready to save it. The extension keeps all the features from the original like tag autocomplete, automatic page description detection, keyboard shortcuts ( to bookmark the current tab), and Omnibox search (type in the address bar). It just fixes that one annoying behavior. Right now, the extension isn&rsquo;t available in the browser stores (though I&rsquo;ve submitted it to both Firefox and Chrome, but this is my first time submitting to either, so no promises about when or if it&rsquo;ll be available there). For now, you&rsquo;ll need to build and install it manually. Update: The extension has been approved for Firefox, install it from the store. The process is pretty straightforward. First, clone the repo and install dependencies: Then build for your target browser. Firefox and Chrome require different background script formats, so you need to use the right build command: This updates the file for the target browser. Once that&rsquo;s done, you can load it as an unpacked extension. After running , open Firefox and navigate to . Click \"This Firefox\" in the sidebar, then click \"Load Temporary Add-on&hellip;\". Navigate to the project root directory and select any file in the extension (or just the file). The extension will load and you&rsquo;re good to go. After running , open&hellip;",
		"keywords": ["bookmark","extension","building","cancel","chrome","click","developer","firefox","first","github","installing","navigate","omnibox","picture","right","sascha","shift","temporary","accidentally","added","adding","addon","addons","address","annoying","another","approved","audience","autocomplete","automatic","availability","available","background","behavior","bookmark","bookmarks","browser","browsing","build","building","changes","chrome","class","click","clone","closes","closing","command","content","create","created","debugging","default","dependencies","description","detection","difference","different","directory","dismissing","either","entered","erasing","everything","explicitly","extension","extensions","features","files","filled","firefox","first","fixes","formats","freely","frustrated","general","github","going","great","hellip","highlight","highlighter","https","install","installing","instance","instructions","keeps","keyboard","language","ldquo","linkding","losing","makes","making","manifest","manually","maybe","mdash","mozilla","multiple","navigate","notes","opens","original","outside","package","packaged","panel","paste","people","persistent","plaintext","popover","popup","process","project","promises","rdquo","ready","realize","right","rouge","rsquo","running","scoffb","script","search","server","shortcuts","sidebar","simple","since","sissbruecker","solution","source","sources","stays","store","stores","straightforward","strong","submission","submitted","submitting","target","through","timing","title","toggle","toolbar","trying","ttscoff","typed","unexpectedly","unpacked","updates","using","whatever","whats","while","window","works","world"]
	},{
		"title": "Web Excursions for March 3rd, 2026",
		"url": "/2026/03/03/web-excursions-for-march-3rd-2026/",
		"tags": ["bookmarks","markdown"],
		"date": "Mar 3<span>rd</span>, 2026",
		"ts": "1772560800",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. docmd &mdash; Minimalist Markdown Docs Generator Generate beautiful, lightweight static documentation sites directly from your Markdown files with docmd. Zero clutter, just content. I&rsquo;ve written multiple versions of this concept for myself, ranging from Jekyll plugin-based sites to wholly custom solutions using Apex. This is a very nice, plugin-capable solution that I look forward to trying out for my next documentation project. SourceDocs/SourceDocs: Generate Markdown documentation from source code As I get more into Swift development, automatic generation of documentation from source code comments is very nice. Kapeli/cheatset: Generate cheat sheets for Dash I recently had a pull request merged that fixed Cheatset for versions 2.7-4.x compatibility. If you want to make cheat sheets for Dash easily, this provides a DSL for doing so. I&rsquo;ve incorporated it into several workflows, including a new one that uses Apex to convert Markdown documents into Dash cheatsheets that I&rsquo;ll publish soon. Bartender 6 The latest builds of Bartender 6 bring it once again to the top of my list of menu bar managers. Super smooth on Tahoe, and beats Ice and Barbee for me now. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["github","jekyll","languages","lightweight","markdown","markup","preprocessor","taking","backblaze","barbee","bartender","cheatset","check","generator","jekyll","kapeli","markdown","minimalist","sourcedocs","super","swift","tahoe","affordably","again","automatic","backs","based","beats","beautiful","bring","brought","builds","capable","cheat","cheatset","cheatsheets","cloud","clutter","comments","compatibility","computer","concept","content","convert","custom","development","directly","docmd","documents","doing","easily","entire","everything","excursions","files","fixed","generation","including","incorporated","latest","lightweight","managers","mdash","merged","multiple","myself","partnership","plugin","project","provides","publish","ranging","recently","reliably","rsquo","securely","several","sheets","sites","smooth","solution","solutions","source","static","today","trying","using","versions","wholly","workflows","written"]
	},{
		"title": "Generating Man Pages with Apex",
		"url": "/2026/03/02/generating-man-pages-with-apex/",
		"tags": ["formatting","markdown","terminal"],
		"date": "Mar 2<span>nd</span>, 2026",
		"ts": "1772460000",
		"summary": "I&rsquo;ve been using a combination of Pandoc and other tools to generate the man page for Apex from Markdown. As Apex nears a 1.0 release, I figured it should be able to generate man pages on its own. Man pages are what gets shown when you run in Terminal. They use formatting, which is a pain to write as a human. Writing documentation in Markdown is much easier. Apex can now turn your Markdown into roff man pages or styled HTML man docs. Two output formats cover both classic terminals and the web. turns Markdown into roff (the traditional man-page source). Use it to generate , , and so on, then install them with or your package manager. No pandoc or go-md2man needed: after , runs the built binary with to produce the man pages. Write your docs in Markdown and keep a single source for both the website and . turns the same Markdown into HTML. Without you get a content-only snippet (no wrapper, no nav), handy for embedding. With (standalone) you get a full page: fixed left sidebar TOC (NAME, SYNOPSIS, DESCRIPTION, etc.), a large headline from the NAME section, and optional custom CSS via or . The metadata (e.g. for ) is used when present. You can also pass or to highlight code blocks in either snippet or standalone output. HTML (standalone): apex.1.html Markdown source: apex.1.md Both are generated from the same Markdown; the HTML is what you get with (plus any site styling). Man page creation: and as above; Makefile uses for man targets. / output formats: html, json, json-filtered/ast-json/ast, markdown/md, mmd, commonmark/cmark, kramdown, gfm, terminal/cli, terminal256, and now man and man-html. Terminal and terminal256 renderers with theme support, , and user theme files in . JSON and AST JSON output before and after filters for tooling. Terminal options: for column wrap; and metadata; theme style for bullets and numbers; mapping for inline span classes. For the full list, see CHANGELOG.md",
		"keywords": ["changelog","description","highlights","makefile","markdown","pandoc","synopsis","terminal","write","writing","above","action","available","before","binary","blocks","built","bullets","changelog","classes","classic","cmark","column","combination","commonmark","content","cover","creation","custom","easier","either","embedding","figured","files","filtered","filters","fixed","formats","formatting","generated","handy","headline","highlight","human","inline","install","kramdown","manager","mapping","markdown","metadata","nears","needed","numbers","optional","options","output","package","pages","pandoc","produce","release","renderers","rsquo","section","shown","sidebar","single","snippet","source","standalone","style","styled","styling","support","targets","terminal","terminals","theme","tooling","tools","traditional","turns","using","website","wrapper","write"]
	},{
		"title": "Web Excursions for February 27th, 2026",
		"url": "/2026/02/27/web-excursions-for-february-27th-2026/",
		"tags": ["bookmarks","macos"],
		"date": "Feb 27<span>th</span>, 2026",
		"ts": "1772215200",
		"summary": "Whether you&rsquo;re a new user or a seasoned pro, ScreenCastsONLINE offers in-depth screencasts on a wide range of topics, from tutorials to app discovery. Check it out. DockFlow Boost your productivity with DockFlow. Instantly save, manage, and switch between multiple macOS Docks. Interesting app. This is basically how Bunch started (albeit Bunch configuration is text-based). It lets you set up different Dock configurations for different contexts, which I like a lot. It is, in my opinion, overpriced for such a utility, but I also would never begrudge a developer charging what they think their work is worth. Who am I to say? OpenClaw Mac mini M4 Enclosure: Every powerful little crustacean needs a proper shell! | Product Hunt Just for fun. The OpenClaw Mac mini M4 Enclosure is a fun, display-worthy 3D printed case for your OpenClaw/Clawdbot/Moltbot device. It’s a perfect blend of cute character + clean desk setup, turning your Mac mini into a chunky little desk companion. Dockey - Make your Dock faster A simple utility that basically offers GUI access to the animation delay and speed of the macOS Dock hide/show, avoiding the necessity of Terminal commands. Donationware. DockFix A reasonably-priced Dock enhancer with themes, custom icons, custom widgets, file shelf, and more. Want more great tips and apps? Check out ScreenCastsOnline",
		"keywords": ["boost","brett","bunch","check","clawdbot","dockfix","dockflow","dockey","docks","donationware","enclosure","instantly","interesting","moltbot","openclaw","product","screencastsonline","screencastsonline","terminal","access","albeit","animation","appitstudio","avoiding","based","begrudge","between","blend","blockquote","brettterpstra","bterpstra","character","charging","chunky","class","clean","commands","companion","configuration","configurations","contexts","crustacean","custom","depth","developer","device","different","discovery","display","dockey","dockfix","dockflow","enclosure","enhancer","faster","great","height","holding","https","icons","image","little","loading","macos","media","members","multiple","necessity","needs","noscript","offers","openclaw","original","overpriced","picture","powerful","priced","printed","producthunt","productivity","products","proper","publicspace","range","reasonably","rsquo","screencasts","screencastsonline","seasoned","setup","shelf","shell","simple","source","speed","srcset","started","switch","themes","think","title","topics","turning","tutorials","uploads","utility","widgets","width","worth","worthy"]
	},{
		"title": "A NYT Connections Helper",
		"url": "/2026/02/26/a-nyt-connections-helper/",
		"tags": ["scripting"],
		"date": "Feb 26<span>th</span>, 2026",
		"ts": "1772107200",
		"summary": "I love playing the New York Times game Connections. Some days it&rsquo;s easy, occasionally it stumps me. I don&rsquo;t cheat at it &mdash; I&rsquo;ll take a loss when I have to. What I do do, though, is check the built-in hints to find out what order the categories are in. My goal is always to get the purple (hardest) first, which often involves figuring out at least the other three categories first. Once I know all four categories, the guessing game is just which one Connections thinks is hardest",
		"keywords": ["connections","games","times","&#39;https","&#39;paywall","cheat","connections","content","paywall","premium","register","subscribe","subscriber","times","actions","brettterpstra","built","button","categories","cheat","check","class","collected","config","container","content","contentid","cookiename","display","figuring","first","function","global","guessing","hardest","height","hints","https","image","instance","involves","loading","loads","login","mdash","media","member","message","noscript","occasionally","often","onclick","original","overlay","paywall","paywallconfig","paywalllogin","picture","placeholder","playing","purple","queue","registration","rsquo","score","script","serviceurl","shadow","source","srcset","stumps","style","subscribe","support","thinks","title","token&#39;","uploads","width","window"]
	},{
		"title": "Web Excursions for February 25th, 2026",
		"url": "/2026/02/25/web-excursions-for-february-25th-2026/",
		"tags": ["bookmarks"],
		"date": "Feb 25<span>th</span>, 2026",
		"ts": "1772022960",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. rhsev/grubber Another cool one from Ralf Hülsmann. Turn YAML front matter and YAML code blocks in a bunch of Markdown files into structured data you can search like a database. Like data view without Obsidian. Cursor Widget App A cool (free) idea that lets you connect a macOS desktop widget to Cursor using an MCP. What I&rsquo;ll use it for is yet to be determined, but I like the idea. Right now I&rsquo;m just having it reflect its current todo list to the widget, which is kinda handy, but I think I can do cooler stuff with it. What I learned building an opinionated and minimal coding agent Lessons I learned while building my own coding agent from scratch. aryankashyap0/shorlabs Vercel for Backend. One-click deploy of Python and Node.js apps to AWS with no Docker knowledge needed. Mostly bookmarking this for my own future needs&hellip",
		"keywords": ["reality","vercel","virtual","widget","another","backend","brett","cleanmymac","cursor","docker","lessons","markdown","mostly","obsidian","python","right","vercel","widget","absolute","agent","apple","aryankashyap","blockquote","blocks","bookmarking","border","brettterpstra","brought","building","bunch","class","click","coding","connect","cooler","cursor","database","deploy","desktop","determined","display","excursions","files","front","github","grubber","handy","having","height","hellip","hidden","holding","https","image","impactradius","kinda","knowledge","learned","loading","lsmann","macos","macpaw","mariozechner","media","minimal","needed","needs","noscript","opinionated","original","partnership","picture","position","posts","reflect","rhsev","rsquo","scratch","search","shorlabs","source","speed","srcset","structured","stuff","style","think","title","tools","uploads","using","visibility","while","widget","width"]
	},{
		"title": "Web Excursions for February 20th, 2026",
		"url": "/2026/02/20/web-excursions-for-february-20th-2026/",
		"tags": ["bookmarks"],
		"date": "Feb 20<span>th</span>, 2026",
		"ts": "1771588680",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Devly — Developer Utilities The fastest way to encode, decode, format, hash, and convert — 50+ developer tools, one click from your menu bar. No subscriptions, no internet required. A nice companion to TextBuddy⏎. google webfonts helper Found this nifty tool for downloading very streamlined, compressed versions of Google fonts for self-hosting. Get eot, ttf, svg, woff and woff2 files + CSS snippets. giscus A comments widget built on GitHub Discussions. If I give up on running comments from my forum Discourse server at some point, this is what I&rsquo;ll switch to. Cursor iThoughts integration One of my own design: teach Cursor to read iThoughts X mind maps and create implementation plans for them. Just place in .cursor/commands for the project and run . Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["cursor","fonts","format","google","wordpress","backblaze","brett","check","cursor","developer","devly","discourse","discussions","found","github","google","textbuddy","utilities","affordably","backblaze","backs","brainstorm","brettterpstra","brought","built","class","click","cloud","commands","comments","companion","compressed","computer","convert","create","cursor","decode","design","developer","devly","downloading","encode","entire","everything","excursions","fastest","files","fonts","format","forum","giscus","github","google","height","helper","highlighter","holding","hosting","https","ithoughts","image","implementation","integration","internet","ithoughts","language","loading","media","mranftl","nifty","noscript","original","partnership","picture","plaintext","plans","point","project","reliably","required","retina","rouge","rsquo","running","secure","securely","server","snippets","source","srcset","streamlined","studio","subscriptions","switch","teach","techfixpro","textbuddy","title","today","tools","ttscoff","uploads","versions","webfonts","widget","width"]
	},{
		"title": "Apex and Multiple Image Formats",
		"url": "/2026/02/18/apex-and-multiple-image-formats/",
		"tags": ["browser","formatting","markdown","video","webdesign"],
		"date": "Feb 18<span>th</span>, 2026",
		"ts": "1771430700",
		"summary": "Here&rsquo;s part two of my Apex posts for the day: Multiple image formats from a single image syntax. Modern browsers support a bunch of image formats, like WebP and AVIF, that are smaller and sharper than good old PNG and JPEG. The trick is serving them without breaking older browsers. Apex makes that easy with a few attributes on your image syntax. Apex isn&rsquo;t going to generate the additional images themselves, of course, that&rsquo;s up to you. But if you have a series of images in the same directory, inserting them properly is super simple now. Take a directory with: image.png image@2x.png image.webp image@2x.webp image.avif image@2x.avif Add or after the URL and Apex wraps the image in a element with the right tags. Browsers that support the format use it; everyone else falls back to the main image. Both attributes work with for retina. So produces a srcset with at 1x and at 2x. Same deal for avif. Apex also recognizes @3x, if you need that. If you&rsquo;d rather not list every format by hand, use the attribute: When is set (e.g. from the document path or ), Apex checks the filesystem for existing variants. For images it looks for 2x, 3x, webp, and avif. It only emits elements for files that actually exist, so you can add formats over time without touching the Markdown. That scans for jpg, png, gif, webp, and avif (plus 2x and 3x variants) for images, and mp4, webm, ogg, mov, and m4v for videos. is equivalent to . Video URLs in image syntax get special treatment. If the URL ends in mp4, mov, webm, ogg, ogv, or m4v, Apex emits a tag instead of : That becomes . No extra syntax needed. Apex adds elements for each format you specify. The primary URL (e.g. ) stays as the fallback; the attributes add webm, ogg, or whatever before it. So gives you an ogg source plus the mp4 fallback. Like I said, using or as a video URL will generate markup for all the existing formats. It means proper, accessible markup, and optimized web pages. It won&rsquo;t mean much if your output goal is PDF or DOCX, but it&rsquo;s great for web production. The and * syntaxes mean you can write the Markdown once, and then every time you add a new format or resolution, the correct markup will be generated the next time you render, without touching the Markdown. Same Markdown image syntax, better output. Check out the Apex wiki for more details",
		"keywords": ["images","picture","video","browsers","check","discovers","markdown","modern","multiple","profile","quick","retina","syntax","video","accessible","attribute","attributes","banner","becomes","before","breaking","broader","browser","browsers","bunch","captions","checks","class","compatibility","details","different","directory","discovery","document","element","elements","emits","everyone","exist","extension","extra","fallback","falls","figure","files","filesystem","format","formats","generated","gives","going","great","highlight","highlighter","image","images","inserting","intro","language","looks","makes","markdown","markup","maximum","media","needed","older","optimized","optionally","output","pages","picture","plaintext","posts","primary","produces","production","profile","projects","proper","properly","quick","rather","recognizes","requires","resolution","retina","right","rouge","rsquo","scans","series","serving","sharper","simple","single","smaller","source","special","specify","srcset","stays","super","support","syntax","syntaxes","table","tbody","thead","themselves","touching","treatment","trick","using","variants","video","videos","whatever","wraps","write"]
	},{
		"title": "Apex as Terminal Markdown Renderer",
		"url": "/2026/02/18/apex-as-terminal-markdown-renderer/",
		"tags": ["customization","filters","formatting","markdown","mdless","scripting","terminal","themes"],
		"date": "Feb 18<span>th</span>, 2026",
		"ts": "1771430400",
		"summary": "This is the first of two Apex posts today. In my opinion, the two things I&rsquo;ve been working on deserve their own headlines. So here&rsquo;s part one: terminal rendering. If you&rsquo;ve ever wanted to read Markdown in the terminal with syntax highlighting and nice formatting, you&rsquo;ve probably reached for mdless or glow. They&rsquo;re great tools. But what if you want all of that plus Apex&rsquo;s extensions, filters, and plugins—tables with captions, footnotes, callouts, file includes, and whatever your custom filters do? That&rsquo;s where Apex&rsquo;s new built-in terminal output comes in. Both produce colored, formatted output suitable for reading in an interactive terminal. No piping to mdless required—Apex handles it natively. For terminals that support 256 colors, use: This gives you a richer color palette for headings, code blocks, links, and other elements. If your terminal supports it, the difference is noticeable. Extensions: Tables, footnotes, definition lists, task lists, callouts, wiki links, and all the rest Filters: Any filters in your config run before render, so your title filter, delink filter, or custom Lua scripts all apply Plugins: Pre-parse and post-render plugins run as usual &mdash; kbd for tags, md-fixup, or whatever you&rsquo;ve installed So when you , you&rsquo;re seeing the same processed document you&rsquo;d get as HTML, just rendered for the terminal instead. It&rsquo;s not perfect for handling all elements yet, but the foundation is there and I&rsquo;ll tweak it as needed. Apex&rsquo;s terminal theming is compatible with mdless theme files. If you already use mdless, you can point Apex at your existing theme: Or set a default in your Apex config. The theme format matches mdless, so your (or any file) works out of the box. Apex adds a few extra keys for elements mdless doesn&rsquo;t have—callouts, definition lists, table captions, and the like. If you don&rsquo;t define them, sensible defaults are used. You can override them in your theme file when you want finer control. This emits the full AST, including blocks, inlines, metadata, to stdout. From there you can pipe it into your own script to generate whatever you want: custom terminal formatting, a different HTML structure, plain text, or something else entirely. The JSON format is the same one filters use. So if you&rsquo;ve written a filter, you already know the structure. A simple Python script can read it, walk the tree, and emit&hellip;",
		"keywords": ["readme","iterm","markdown","reading","terminal","because","build","compatibility","description","extensions","filters","markdown","output","pandoc","plugins","python","quick","readme","renderer","tables","terminal","theming","triggering","apply","basic","before","blocks","browsing","build","built","callouts","captions","class","color","colored","colors","comes","compatibility","compatible","config","control","custom","default","defaults","define","definition","delink","deserve","difference","different","directly","document","doesn","doing","elements","emits","entirely","extensions","extra","files","filter","filters","finer","first","fixup","footnotes","format","formatted","formatting","foundation","gives","great","handles","handling","headings","headlines","highlight","highlighter","highlighting","includes","including","inlines","installed","interactive","language","links","lists","matches","mdash","mdless","metadata","natively","needed","noticeable","output","override","palette","parse","parser","pipeline","piping","plaintext","plugins","point","posts","processed","processing","produce","projects","quick","reached","reading","rendered","renderer","rendering","representation","required","richer","rouge","rsquo","script","scripts","seeing","sensible","short","simple","special","stdout","strong","structure","suitable","support","supports","syntax","table","tables","target","tbody","terminal","terminals","thead","theme","theming","title","today","tools","triggering","tweak","using","wanted","whatever","where","working","works","written"]
	},{
		"title": "NiftyMenu Tahoe Edition",
		"url": "/2026/02/15/niftymenu-tahoe-edition/",
		"tags": ["desktop","macos","menus","niftymenu","screenshot","scripting","webdesign","writing"],
		"date": "Feb 15<span>th</span>, 2026",
		"ts": "1771181820",
		"summary": "NiftyMenu is the little tool I use to dump a macOS app&rsquo;s menu bar into an HTML page so I can search it, click through to items, and add callouts for screencasts and product documentation. The latest round of updates brings the UI in line with macOS Tahoe and cleans up a bunch of behavior and script logic. I wrote NiftyMenu years ago, and did a major update for Ventura. But it was way behind on Liquid Glass and basically wasn&rsquo;t working anymore. Since it&rsquo;s been a while, let me explain NiftyMenu a bit. It&rsquo;s a tool specifically for people documenting or blogging about apps (though anybody might get a kick out of it). When you want a screenshot of a menu item, highlighted (maybe with callouts), getting a menu to stick in place and maintain highlight state while you take a screenshot can be tricky, and doing a bunch of screenshots like this can be a pain. NiftyMenu creates an HTML version of any app&rsquo;s menu bar. You can click any item to lock it in place, navigate submenus, select items, highlight them, add callouts, and focus the shortcut key. It has dark and light modes, quick search for finding menu items with just the keyboard, customizable desktop images (including random images), and more. I recommend viewing the pages it produces in Chrome. The styling should work well in any browser, but with Chrome you can just hit ⇧+S to save a screenshot of the currently-focused menu item. It&rsquo;s super handy. Screenshotting works in Firefox, but the text gets screwy. And it doesn&rsquo;t work at all in Safari. So use Chrome/Chromium. At the bottom right of a generated menu page there&rsquo;s a settings box that appears on hover, and you can change things like light/dark mode, background image, callout type, etc. NiftyMenu is a Ruby script that generates a web app of sorts. Just one page with all the markup necessary for the menu, and some CSS and JavaScript to enable all of its functionality. The new layout and colors are tuned to feel like Tahoe&rsquo;s menu bar. The font stack uses SF Pro when available (Tahoe and recent macOS), with sensible fallbacks. Top-level menu items get a soft white overlay on hover with rounded corners instead of a flat accent block; the solid accent is reserved for the selected item (). Submenus use the same idea: light grey overlay on hover, accent only on the selected row. Toolbar height, padding, and submenu positioning are adjusted so the overall&hellip;",
		"keywords": ["applescript","chrome","google","mouseover","safari","shortcut","applescript","backgrounds","because","chrome","chromium","divider","firefox","glass","javascript","liquid","niftymenu","picsum","stderr","safari","screenshotting","shift","since","styling","submenu","submenus","tahoe","terminal","toolbar","unsplash","ventura","video","vimeo","accent","accept","adjusted","alpha","alternate","anybody","anymore","anyone","appear","appears","apply","approach","attached","automatically","automating","available","background","backgrounds","backward","bails","based","becomes","before","behavior","behind","blend","block","blockquotes","blogger","blogging","bluish","bogus","bottom","brettterpstra","brightening","brighter","brings","browser","bugged","bunch","callout","callouts","change","channels","choose","class","cleans","clear","click","clicks","color","colors","combiner","combo","compatible","concept","consistent","contain","container","content","convert","corners","couldn","create","creates","currentcolor","customizable","darkens","deprecated","desktop","dialog","divider","documenting","doesn","doing","embeds","emoji","enter","entity","events","explain","fallbacks","feasible","figure","finding","fixed","fixes","focus","focused","functionality","fuzzy","gather","gathers","generated","generates","generator","getting","github","gives","globe","going","gradient","grayscale","handler","handy","height","hidden","highlight","highlighted","highlighter","hover","https","image","images","including","index","inverted","items","jsapi","keyboard","keycombo","labels","language","latest","layer","layout","ldquo","level","light","lightening","lighter","little","loading","logic","longer","macos","madness","maintain","major","markdown","markup","match","maybe","mdash","media","menus","missing","modes","modifier","morning","multiply","names","navigate","necessary","nicely","niftymenu","normalized","noscript","nothing","often","opaque","opened","options","original","outputs","overall","overlap","overlapping","overlaps","overlay","overlays","padding","pages"]
	},{
		"title": "Pandoc-style filters for Apex",
		"url": "/2026/02/07/pandoc-style-filters-for-apex/",
		"tags": ["filters","markdown","pandoc"],
		"date": "Feb 7<span>th</span>, 2026",
		"ts": "1770478560",
		"summary": "In my quest to make Apex as complete as possible before I integrate it into Marked, I&rsquo;ve added Pandoc-compatible filters, which can be written in Lua for native execution, or in any language using a Pandoc JSON pipeline. The filter system runs your code on the document after parsing and before rendering. The pipeline is: Markdown → AST → Pandoc-style JSON → your filters → JSON → HTML. That means you can transform the document in any language that speaks JSON &mdash; Ruby, Python, Lua, Node, whatever &mdash; using the same Pandoc JSON AST that Pandoc uses. If you&rsquo;ve written a Pandoc filter, the proecess is the same: read one JSON document from stdin, write one JSON document to stdout. — Run a single filter. Apex looks for an executable named in your user filters directory ( or ). So runs . These can exist inside of subdirectories. — Run all executables in that directory, in sorted order. Handy if you keep a fixed pipeline (e.g. , ) and just want one flag. — Run a Lua script as a filter. Apex calls ; the script reads Pandoc JSON from stdin and writes JSON to stdout. You need a JSON library (e.g. dkjson: ). No Pandoc Lua runtime required. Filters run in sequence. If any filter exits non-zero or outputs invalid JSON, Apex aborts unless you pass (then it skips the bad filter and continues). There&rsquo;s a small index of filters at ApexMarkdown/apex-filters. It&rsquo;s a single JSON file listing filter id, title, description, author, repo, etc. This will grow as I and others create new filters. — Prints \"Installed Filters\" (what&rsquo;s in your dir) and \"Available Filters\" from that index, with titles and descriptions. — Installs a filter by id from the index (e.g. ). It clones the repo into your filters directory. You can also install by Git URL or GitHub shorthand (user/repo). — Removes that filter (with a confirmation prompt). To add your own filter to the list, open a pull request on github.com/ApexMarkdown/apex-filters. Once it&rsquo;s merged, everyone can and . See the docs for more info on contributing. ApexMarkdown/apex-filter-uppercase — Lua filter that uppercases every inline. Shows how to walk the AST with dkjson and mutate in place. ApexMarkdown/apex-filter-unwrap — Lua filter that unwraps elements starting with (e.g. custom block markers). More involved AST walking. Install them with and , then use or in your pipeline. A minimal filter that reads Pandoc JSON, does one&hellip;",
		"keywords": ["pipeline","additionally","apexmarkdown","available","config","example","feature","filters","github","handy","header","however","install","installed","installs","invalid","learn","markdown","marked","optional","pandoc","prints","python","removes","replace","requires","running","short","shows","string","trying","untitled","abilities","aborts","added","adding","ahead","amazing","author","before","block","blocks","calls","capabilities","central","chmod","class","clones","close","cmark","compatibility","compatible","config","confirmation","continues","contract","contributing","create","custom","decode","delink","dependency","description","descriptions","details","directory","dkjson","document","easily","elements","encode","enough","especially","everyone","example","examples","executable","executables","execution","exist","exits","export","extensions","external","feature","filter","filters","fixed","flavors","follows","format","generated","github","going","header","highlight","highlighter","https","important","index","inline","input","inside","install","integrate","invalid","involved","issues","language","ldquo","learn","library","listing","literally","local","looks","luarocks","makes","markers","master","mdash","merged","metadata","minimal","mutate","myfilter","named","native","options","others","output","outputs","pandoc","parity","parse","parsing","pipeline","pipelines","plaintext","point","possible","posted","prepend","primary","proecess","prompt","protocol","quest","rdquo","readme","reads","references","relatively","renderer","rendering","replace","replicate","required","restructuring","rouge","rsquo","running","runtime","script","sense","sequence","short","shorthand","similar","simplified","single","skips","small","sorted","speaks","starting","stderr","stdin","stdlib","stdout","strict","strong","style","subdirectories","supporting","switch","system","testing","title","titles","transform","trying","tweak","types","uninstall","unwrap","unwraps","updates","uppercase","uppercases","users"]
	},{
		"title": "A trick for better naps",
		"url": "/2026/02/05/a-trick-for-better-naps/",
		"tags": ["health","personal","productivity","sleep"],
		"date": "Feb 5<span>th</span>, 2026",
		"ts": "1770317460",
		"summary": "I&rsquo;ve been sleeping anywhere between 4 and 6 hours a night, which isn&rsquo;t great because through trial and (mostly) error, I&rsquo;ve determined that at this point in my life, 8.5 hours of sleep is what I do best on. But naps help quite a bit. By the way, if you want to follow my sleep journey as well as a couple of other neurodivergent people, along with fun pop culture and knowledge tech tidbits, you should listen to Overtired. As I&rsquo;ve mentioned before, this sleep deprivation hasn&rsquo;t affected my coding productivity, but it&rsquo;s been a serious detriment to my social life, and affects my dysautonomia (which I haven&rsquo;t talked about for a while but is still a major issue for me) and overall pain levels pretty drastically. My only saving grace has been daily naps. I&rsquo;ve always taken naps, even when sleeping well. I find it very rejuvenating and my afternoons are way more productive if I nap about an hour after lunch. Once upon a time there was a startup called Napjitsu that sold a product appropriately called Nap. It was a combination of a chewable with mostly Valerian and 2 capsules containing mostly caffeine plus some other nootropics. You took them all at once. The chewable kicked in within 10 minutes, and the capsules metabolized about 30 minutes later, giving you a deep sleep for about 20 minutes and then waking up raring to go. I loved those, but whatever else was in the capsules often made me wake up a bit \"shaky.\" Napjitsu shuttered a while back, but I found alternatives. This version of the routine doesn&rsquo;t leave me shaky. To the contrary, I wake up feeling quite energetic without side effects. For the caffeine, I&rsquo;m using capsules with 50mg of caffeine & 100mg of L-Theanine (these are Amazon affiliate links, which are helpful to me, but you can find these direct in other places, and I would support you not supporting Amazon). I only take one of those, as that&rsquo;s enough to get me going without making me jittery or affecting my sleep later that night. You can really just drink a cup of coffee or a shot of espresso before laying down, as caffeine in general takes 30 minutes to metabolize. But if you want the combination of caffeine and L-Theanine, that&rsquo;s basically tea. Just drink a cup of tea. (White or green tea will give you approximately the right amount of caffeine, with white tea capping out at 55mg and green tea capping out at 70mg.) The capsules aren&rsquo;t the key, just the&hellip;",
		"keywords": ["diuretics","drink","drinks","energy","guarana","theanine","valerian","amazon","caffeine","guarana","napjitsu","onyuqm","origin","overtired","phase","routine","scheduled","sleep","theanine","valerian","velerian","wakeup","weirdly","white","affected","affecting","affects","affiliate","afternoon","afternoons","alternatives","amount","anecdotally","anxiety","anywhere","appropriately","because","before","between","blockquote","brettterpstra","caffeine","called","capping","capsules","chamomile","chewable","class","clevelandclinic","cocktail","coding","coffee","combination","commonly","compounds","containing","couple","culture","daily","decent","depending","deprivation","derived","determined","detriment","diagnoses","direct","diseases","dislike","diuretics","doesn","doubling","dozing","dragging","drastically","drink","drinks","dysautonomia","easiest","edition","effective","effects","endorse","energetic","energy","enough","error","espresso","essentially","evidence","feeling","force","forum","found","general","gives","giving","going","grace","great","green","guaranine","guarantee","gummies","happens","haven","health","helpful","hours","https","ideas","includes","indicated","ingredient","jittery","journey","kicked","knowledge","later","laying","ldquo","leave","levels","links","liquids","listen","little","looking","loved","lunch","major","making","melatonin","mentioned","metabolize","metabolized","minutes","mostly","napping","necessary","neurodivergent","night","nootropics","offers","often","origin","others","overall","overcome","overtired","overtiredpod","people","personally","phase","places","plant","point","primarily","product","productive","productivity","project","raring","rdquo","recommended","rejuvenating","restful","results","right","routine","rsquo","rumored","safety","saving","scheduled","scientific","sedation","seeds","serious","serving","shaky","shuttered","sleep","sleepfoundation","sleeping","sleepless","social","startup","stimulants","stress","supplemental","supplements","support","supporting","taken","takes","talked","through","tidbits","trial","trick","tried","trouble","unlike","updates","urinate","using"]
	},{
		"title": "Project Updates Feb 4, 2026 — Sleepless Edition",
		"url": "/2026/02/04/project-updates-feb-4-2026-sleepless-edition/",
		"tags": ["wordpress","developer","downloads","features","howzit","keyboard","markdown","marked","plugins","shortcuts","sleep"],
		"date": "Feb 4<span>th</span>, 2026",
		"ts": "1770218640",
		"summary": "I&rsquo;ve been hard at work on a bunch of projects at once, so this is partly just a personal check-in on how things are going. Thanks for being my therapist of sorts. So here&rsquo;s what&rsquo;s up with current projects, including Marked 3, Howzit, Apex, and more. The Marked beta continues. It&rsquo;s going really well, and I believe I&rsquo;ve fixed all crashes and made a bunch of improvements. One thing the next release will feature is better large document handling. This was important for dealing with BlogBook (see below) exports, but is also a vital quality of life improvement. Now the loading doesn&rsquo;t hang while reading 1MB+ files, and the rendering is faster for all processors. I added full tab handling (finally), with the option to open new documents in tabs. Plus a Quick Open feature that lets you hit ⇧+⌘+O and quickly type or use the arrow keys to jump to a window, tab, or recent document. I also included a CLI that makes accessing all of Marked&rsquo;s URL scheme methods easy from the command line. It can&rsquo;t yet automate a full export, but it&rsquo;s still useful. I&rsquo;ve refactored the whole export system to eventually allow full automation, but that&rsquo;s going to be a 3.1 feature, not something that holds up the 3.0 release. This is a new app I&rsquo;m publishing as a complement to Marked 3. It generates a \"Book\" from WordPress, Micro.blog, or Ghost blogs. You can filter posts by author, categories, tags, date ranges, and more, then export a Markdown document (or collection of documents with an index file) which you can open in any Markdown editor. If you open it in Marked 3, special syntax like Table of Contents and page breaks will be rendered, and you can output to PDF, HTML, EPUB, and more. This will be a great tool for people who have been blogging for a few (or a lot of) years who want a more permanent record of their work. Websites are known to disappear, but a good EPUB on your backup drive means your content will never be lost. Store your content as text, PDF, or EPUB for posterity, and/or distribute (or sell) a PDF/Ebook version of your writings. The filtering means you can easily export just a certain type of post, export only a certain date range, and you can even have the export split by year or month for making smaller books. Check out the documentation at blogbook.my to see what it looks like. If you&rsquo;re interested in helping me test, a TestFlight build will&hellip;",
		"keywords": ["automattic","shell","software","apple","blogbook","check","chinese","command","contents","doing","ebook","eventually","first","fixes","french","german","ghost","hopefully","howzit","issues","italian","leanpub","liquid","markdown","marked","micro","multimarkdown","multitasking","overtired","plugins","quick","second","settings","shell","shift","simplified","spanish","store","table","testflight","tests","textindex","thanks","unified","utility","viewer","websites","wordpress","xcode","ability","accessing","accuracy","added","adding","addressed","allow","allowing","almost","anyone","anywhere","appended","applied","arbitrary","arrow","assets","attached","attribute","attributes","author","authors","automate","automation","available","backlink","backup","based","because","before","believe","below","between","blank","blocks","blogbook","blogging","blogs","books","bored","bracket","breaks","brettterpstra","build","bunch","categories","certain","changes","check","class","classes","closing","coding","collection","combiner","command","commands","commit","committing","compiles","complement","configured","constantly","contact","containing","content","contexts","continues","conversion","converted","converting","converts","copious","correctly","couple","crashes","credit","custom","cycle","dealing","deploy","develop","developer","developing","directly","directory","disappear","displays","distribute","document","documents","doesn","doing","downloads","drive","easily","editor","either","enabled","endnotes","entries","entry","especially","eventually","execute","executing","exist","exists","export","exports","extension","fails","fairly","faster","feature","feels","fenced","figure","files","filter","filtering","finally","first","fixed","fixes","fnref","focus","footnote","footnotes","forum","found","fresh","function","functionality","fuzzy","generated","generates","getting","github","going","great","handle","handling","handy","haven","headings","height","helping","hierarchical","highlighter","holds","hooks","hours","howzit","https"]
	},{
		"title": "Karabiner Home row app switcher",
		"url": "/2026/02/03/home-row-app-switcher/",
		"tags": ["karabiner","keyboard"],
		"date": "Feb 3<span>rd</span>, 2026",
		"ts": "1770132180",
		"summary": "Here&rsquo;s a new Karabiner-Elements trick that I&rsquo;ve been using to add home row app switching to my workflow. Tools like LeaderKey are great, but sometimes you just want the App Switcher, and sometimes you just want to be lazy with your fingers. My goal was a home-row app switcher that triggered without leaving the home row, and didn&rsquo;t steal keys for normal typing. The solution is a Karabiner-Elements complex modification that uses simultaneous key detection: the layer only activates when A and S are pressed together within a very short window (basically at the exact same time). This modification is designed for the Keyboard Maestro app switcher, not the macOS default ⌘+⇥ switcher. Keyboard Maestro&rsquo;s switcher uses Shift alone to move backward, whereas the system switcher expects ⇧+⌘+⇥; the key outputs below match KM&rsquo;s behavior, so you&rsquo;d need to adjust the modification (e.g. have D send ⇧+⇥) to use it with the built-in app switcher. Hold A and S at the same time. While both are held, you get a temporary layer: D &rarr; previous app (Shift only; KM uses this for backward) F &rarr; next app (⌘+⇥) G &rarr; quit (⌘+Q) So you chord A+S, then tap F, it loads the App Switcher, then tap D or F to move through the apps, or G to quit the highlighted app. Release A and/or S and switch to the highlighted app. This works great with my home row arrow keys, allowing easy up/down/left/right navigation through Keyboard Maestro&rsquo;s grid-based app switcher. Two-handed, but still all home row. The modification never intercepts a lone A or S. It only triggers when both keys are pressed simultaneously, with a 50 ms threshold (). When you type normally, you press one key, release it, then press another. Your \"a\" and \"s\" key events are separated by hundreds of milliseconds, so Karabiner never sees them as a chord. Only an intentional A+S chord activates the layer. Single-key \"a\" and \"s\" pass through unchanged. Under the hood, the rule uses Karabiner&rsquo;s condition: an array of key codes that must all be pressed together. On that chord it sets a variable () and injects leftcommand so that the following D/F/G rules (which are gated on ) produce the right modifiers. When either A or S is released, clears the variable and the layer drops. So you keep full use of A and S for typing; only the deliberate two-finger chord turns them into a layer key",
		"keywords": ["arrow","keyboard","macos","shortcut","technology","&#39;failed","&#39;loading","&#39;absolute&#39;","&#39;application","&#39;aria","&#39;biner","&#39;click&#39;","&#39;copy&#39;","&#39;data","&#39;div&#39;","&#39;false&#39;","&#39;hidden&#39;","&#39;https","&#39;keydown&#39;","&#39;modification","&#39;paywall","&#39;readonly&#39;","&#39;style&#39;","&#39;textarea&#39;","&#39;true&#39;","binermodal","close","command","content","download","elements","error","escape","fbrettterpstra","fhome","fkarabiner","fmodifications","import","karabiner","keyboard","leaderkey","maestro","paywall","premium","register","release","shift","single","subscribe","subscriber","switcher","tools","under","while","actions","activates","addeventlistener","adjust","align","allowing","alone","another","appendchild","array","arrow","assets","avoids","background","backward","based","basic","behavior","below","between","biner","border","bottom","break","brettterpstra","built","button","catch","center","chevron","chord","class","classname","clears","click","clipboard","close","close&#39;","closemenu","closemodal","cluster","codes","collected","color","column","combiner","command","complex","config","container","contains","content","contentid","cookiename","copy&#39;","createelement","createmodal","createobjecturl","currentscript","currenttext","cursor","default","deliberate","designed","detection","dialog","direction","display","document","download","download&#39;","dropdown","drops","either","eschandler","events","exact","execcommand","expanded","expanded&#39;","expects","false","family","faster","fetch","filename&#39;","finally","finger","fingers","fixed","focus","footer","function","gated","getattribute","github","global","great","group","handed","haspopup","header","height","hidden","hidden&#39;","highlighted","highlighter","hijacking","hover","https","hundreds","import","important","index","inherit","injects","innerhtml","inset","instance","intentional","intercepts","items","json&#39;","jsonurl","justify","karabiner","keybindings","keyboardmaestro","keycombo","keydown","label","labelledby","language","launcher","layer","ldquo","leaving","loads","login","macos","margin","match","member","menu&#39;","menuitem","message","mikker","milliseconds","modal","modifications","modifiers"]
	},{
		"title": "A couple new WordPress plugins",
		"url": "/2026/02/02/a-couple-new-wordpress-plugins/",
		"tags": ["customization","downloads","editor","keyboard","plugins","shortcuts","wordpress"],
		"date": "Feb 2<span>nd</span>, 2026",
		"ts": "1770058800",
		"summary": "Just for fun, I&rsquo;ve been porting some of my Jekyll plugins to WordPress, and two of them have turned into what I think are really useful plugins. I&rsquo;m not switching from Jekyll to WordPress, I&rsquo;ve just been enjoying the challenge of recreating these tools as WordPress extensions. It&rsquo;s somewhat funny because the Jekyll plugins were originally created from WordPress plugins I&rsquo;d built, and they developed over time. So this is kind of a round trip. A plugin for managing downloadables and dropping download cards into posts. You get a custom post type for each download (file URL, version, description, info link, icon, changelog), upload buttons for the file and icon right on the edit screen, and an editable HTML card template with Mustache-style conditionals () plus custom CSS with a live preview. Insert them via a TinyMCE button in the classic editor or a Download block in the block editor. Pick from a dropdown and the shortcode (or block) is inserted for you. On the frontend you get a styled card: title, download link, description, dates, and optional donate/info links. There&rsquo;s also a WP-CLI command to import from CSV (the way I handle downloads in Jekyll): . Full details, more screenshots, and the shortcode reference are on the BT Downloads project page . This one is for writing keyboard shortcuts in posts without hand-coding symbols. I&rsquo;ve created a few variations of this over time: for this blog , for Marked and Bunch documentation, and probably others. A shortcode renders things like ⌥+⇧+⌘+A in the order Apple recommends, with options for symbol vs text (e.g. \"Command-Shift-P\"), a + separator, and Mac vs Windows naming. In the block or classic editor, use the formatting menu and choose ⌘ Insert keyboard shortcut to open a dialog: check modifiers (Cmd/Opt/Shift/Ctrl/Fn), type the key, and insert the shortcode. Under Settings → Keyboard Shortcuts you can tweak display (symbols vs text, + separator, key symbols) and add custom CSS for the keycaps, with a live preview. Examples: &rarr; ⇧+⌘+P, → ⇧+⌘+P. More syntax and options are on the BT Keyboard Shortcuts project page . Both require WordPress 5.8+ and PHP 7.4+, and are GPLv2 or later. The source for these and any future WordPress plugins from me is my wordpress-plugins repo on GitHub . Grab the code there or follow the install steps on each project page",
		"keywords": ["keyboard","shortcut","tinymce","apple","bunch","command","download","downloads","examples","github","jekyll","keyboard","marked","mustache","project","rendered","settings","shift","shortcuts","tinymce","under","windows","wordpress","admin","because","block","brettterpstra","btkbd","built","button","buttons","cards","challenge","changelog","check","choose","class","classic","coding","combiner","command","conditionals","created","custom","dates","description","details","developed","dialog","display","documenting","donate","download","downloadables","downloads","dropdown","dropping","editable","editor","enjoying","extensions","formatting","frontend","funny","github","handle","height","highlighter","https","image","import","inserted","install","jekyll","keyboard","keycaps","keycombo","language","later","ldquo","links","loading","managing","media","modifiers","naming","noscript","optional","options","original","originally","others","picture","plaintext","plugin","plugins","porting","posts","preview","project","projects","rdquo","recommends","recreating","renders","right","rouge","round","rsquo","screen","screenshots","separated","separator","shift","shortcode","shortcut","shortcuts","somewhat","source","srcset","steps","strong","style","styled","switching","symbol","symbols","syntax","template","think","title","tools","ttscoff","turned","tweak","upload","uploads","useful","variations","version","width","wordpress","writing"]
	},{
		"title": "Web Excursions for February 2nd, 2026",
		"url": "/2026/02/02/web-excursions-for-february-2nd-2026/",
		"tags": ["bookmarks"],
		"date": "Feb 2<span>nd</span>, 2026",
		"ts": "1770048840",
		"summary": "Whether you&rsquo;re a new user or a seasoned pro, ScreenCastsONLINE offers in-depth screencasts on a wide range of topics, from tutorials to app discovery. Check it out. I Love a Piano I met Max Mellman at Macstock and we became fast friends. His first app is a piano synth with multiple on-screen scrollable keyboards, different piano sounds, and a built in music player with fine scrubbing for learning along with your favorite music. The Lawyer&rsquo;s Guide to Podcasting A book from my friend Michael D.J. Eisenberg ((The Tech-Savvy Lawyer): The Lawyer&rsquo;s Guide to Podcasting: Building Your Brand, Audience, Tech Stack, and Expertise! rhsev/mi.lan: A lightweight URL bridge for macOS automation, and a companion for dy.lan, which I wrote about last week. ‎Vimari App - App Store A port of Vimium for Safari. Vimium is one of my favorite extensions on Chrome and Firefox, and I&rsquo;d always missed it on Safari, not realizing someone had already ported it. ‎LinkThing Not perfect, but if you need to view and search your linkding bookmarks, this runs on all Apple platforms and does the trick. moltbot/moltbot: Your own personal AI assistant. A personal chatbot assistant for any OS and any platform. I think this is what I&rsquo;m going to do with one of the 2012 Mac minis I picked up for $25. Gas Town - multi-agent workspace manager We talked about this at some length on the last Overtired. Run multiple AI coding agents simultaneously with lots of useful features. Not cheap to implement fully, but powerful. UpScrolled is live If you&rsquo;ve been waiting for a real alternative to Instagram, this is it. From a Palestinian-Australian developer and supported by Tech for Palestine, a solid looking alternative to Instagram that allows text updates and no shadow banning/censorship. Right now it&rsquo;s mostly my source for news from Gaza, but I&rsquo;m curious to see how it grows. They&rsquo;ve already hit limitations of scale and are updating rapidly. Want more great tips and apps? Check out ScreenCastsOnline",
		"keywords": ["instagram","itunes","safari","apple","audience","australian","brand","brett","building","check","chrome","eisenberg","expertise","firefox","guide","instagram","lawyer","lawyers","linkthing","macstock","mellman","michael","overtired","pages","palestine","palestinian","piano","podcasting","right","safari","savvy","screencastsonline","screencastsonline","stack","store","upscrolled","vimari","vimium","agent","agents","allows","amazon","apple","assistant","automation","banning","became","blockquote","bookmarks","brettterpstra","bridge","bterpstra","built","censorship","chatbot","cheap","class","coding","companion","curious","depth","detailbullets","developer","different","discovery","engine","extensions","favorite","feature","features","first","friend","friends","fully","gastown","github","going","great","grows","height","holding","https","iloveapiano","image","instagram","keyboards","learning","length","lightweight","limitations","linkding","linkthing","loading","local","looking","macos","manager","media","members","minis","missed","moltbot","mostly","multi","multiple","music","network","noscript","offers","original","overtiredpod","personal","piano","picked","picture","platform","platforms","player","ported","powerful","range","rapidly","realizing","rhsev","router","rsquo","scale","screen","screencasts","screencastsonline","scrollable","scrubbing","search","seasoned","shadow","simultaneously","solid","sounds","source","srcset","steveyegge","supported","synth","talked","techforpalestine","thats","think","title","topics","trick","turns","tutorials","updates","updating","uploads","upscrolled","useful","vimari","waiting","width","workflow","workspace","wrote"]
	},{
		"title": "Project-level plugins and config for Apex",
		"url": "/2026/01/28/project-level-plugins-and-config-for-apex/",
		"tags": ["markdown","plugins"],
		"date": "Jan 28<span>th</span>, 2026",
		"ts": "1769624040",
		"summary": "If you use Apex for more than one project, you&rsquo;ve probably hit the point where a single global setup doesn&rsquo;t quite cut it. Maybe your book project wants a different plugin set than your docs site, or one repo has stricter defaults than everything else on your machine. As a personal example, most of my app documentation has always been written in MultiMarkdown, where header ids get generated with no spaces or dashes, so all of my cross-references link to type of anchors. My blog and my Jekyll-based documentation sites have always used Kramdown, so header ids and cross references are . I needed an easy way to always have Apex use the right header format for the current project. I also have special plugins for different destinations. For example, my Marked documentation has special Liquid-style tags like that generates nice HTML for referencing Preference panes with URLs that will open a preference pane directly in Marked. I don&rsquo;t need or want a plugin to do that universally, the output it generates is very specific to Marked. So I added project-scoped plugins and configurations to Apex. This allows me to get the settings just right for a project, then save them into a local directory and be able to just run without a bunch of command line flags to remember. You also get a cleaner way to \"shadow\" plugins you don&rsquo;t want with a local noop plugin. I also added syntax for adding tags, but that&rsquo;s just a little one-off addition. Now there&rsquo;s a proper project scope, searched in this order: When Apex builds the plugin list, earlier locations win by id. If a plugin with id exists in both and your global config dir, the project version is the one that runs. If there&rsquo;s a global plugin you usually like, but you don&rsquo;t want it in a specific project, you can \"shadow\" it by dropping an empty or no-op plugin with the same id into . For example: Because the project copy of is discovered first, it shadows the global one. You can also do the same trick with purely declarative regex plugins: define a plugin with the same id that simply doesn&rsquo;t match anything meaningful, and the global behavior is effectively disabled for that project. To make this discoverable, was updated to use the same resolution rules as the runtime plugin loader. An \"Installed Plugins\" section that includes plugins from: (if was used) global config plugins An \"Available Plugins\" section from the remote directory&hellip;",
		"keywords": ["command","config","configuration","processor","apply","available","because","command","config","document","explicit","global","installed","jekyll","kramdown","liquid","marked","maybe","multimarkdown","pandoc","plugins","preference","project","running","while","wrapping","added","adding","aliases","allows","alongside","anchors","another","anywhere","aware","based","behavior","below","benefit","blocks","builds","bunch","cleaner","command","config","configuration","configurations","constantly","couple","cross","dashes","declarative","defaults","define","destinations","different","directly","directories","directory","disabled","discoverable","discovered","document","doesn","dropping","earlier","easier","effectively","empty","entries","entry","esoteric","everything","example","exists","explicit","filtered","first","flags","format","front","generated","generates","gives","global","handy","having","header","heavy","helpfully","hidden","highest","includes","including","inside","installed","juggling","layer","layered","layers","layout","letting","level","lifting","lightweight","listing","little","loader","local","locations","lowest","machine","manually","markup","match","matters","meaningful","merge","metadata","needed","offer","output","override","overrides","panes","personal","places","plugin","plugins","point","precedence","preference","project","projects","proper","purely","quick","recap","references","referencing","regex","remember","remote","resolution","right","rsquo","rules","runtime","scope","scoped","scoping","scripts","searched","section","settings","setup","shadow","shadowing","shadows","shell","shorter","shows","simplify","simply","single","sites","small","spaces","special","specific","stricter","style","syntax","system","thought","title","trick","turning","typing","understands","universally","updated","using","usually","version","wants","where","wired","working","worthwhil","wrapper","written"]
	},{
		"title": "Dy.lan: turn your local network into a workflow engine",
		"url": "/2026/01/27/a-url-router-that-turns-your-local-network-into-a-workflow-engine/",
		"tags": ["automation","automator","hosting","network","plugins","productivity","scripting","search","shortcuts"],
		"date": "Jan 27<span>th</span>, 2026",
		"ts": "1769522400",
		"summary": "Have you ever wished you could turn your local network into a smart routing system? Instead of remembering IP addresses and ports, what if you could use simple, memorable URLs that trigger workflows, redirect to services, or even search your notes? That&rsquo;s exactly what dy.lan does. It&rsquo;s a self-hosted URL router with a plugin architecture that transforms your local network into a powerful automation platform. Built by Ralf Hülsmann, a Ruby rookie from Sevelen, Germany, dy.lan (pronounced \"Dylan\") is a lightweight HTTP router designed specifically for local networks. At its core, dy.lan acts as a central entry point that translates URLs into actions. Instead of remembering for Syncthing, you can access . Instead of writing complex scripts, you can use to search your Apple Notes. Infrastructure abstraction: When a service moves to a new IP or port, you update one config line instead of hunting down bookmarks and scripts Workflow shortcuts: Turn URLs into actions with pattern-based routing Clean local services: Route HTTP traffic without the complexity of full reverse proxies like Traefik or nginx for simple use cases Extensibility: YAML configs for simple redirects, Ruby plugins for custom logic What makes dy.lan powerful is its plugin system. The architecture is built around numbered plugins (00-, 10-, 20-&hellip;) that follow a first-match-wins priority system. Each plugin can: Plugins are hot-reloadable for YAML configs (after domain-match), and the system is resilient &mdash; syntax errors and loops won&rsquo;t crash the server. The project includes 8 example plugins covering everything from simple redirects to API integrations, monitoring dashboards, and cron jobs. You can extend it with any feature you can implement in Ruby. Access and it redirects to a Google search for \"ruby\". Simple, memorable, and no coding required. One of the great things about dy.lan is its flexibility. It can run on your Mac for local development or on a Synology NAS for 24/7 operation. On Synology: The project includes for easy deployment on NAS devices. With macvlan networking, you can give dy.lan its own dedicated IP address, avoiding conflicts with other reverse proxies. The performance is impressive: 6,000 requests per second on a Mac mini M4, and 2,500 requests per second on a Synology DS224+ (compared to ~200 req/s for YOURLS on similar hardware). All while using just 20-30 MB of RAM. Built with Ruby 4.0&rsquo;s async/fiber-based&hellip;",
		"keywords": ["docker","hosted","networking","access","apple","architecture","basic","built","clean","concept","configuration","devonthink","deployment","devonthinkplugin","dylan","examples","execute","extensibility","filter","germany","getting","github","google","handle","highlights","infrastructure","match","notes","notesplugin","options","plugin","plugins","rails","response","route","search","sevelen","shortcut","shortcuts","simple","started","syncthing","synology","technical","traefik","workflow","world","yourls","abstraction","access","actions","address","addresses","alias","architecture","async","automation","avoiding","based","basic","benefit","block","blocking","bookmarks","breaker","breakers","browser","built","capture","central","check","circuit","class","clean","clone","coding","common","compared","complex","complexity","compose","concept","concurrency","config","configs","configurable","conflicts","container","covering","crash","custom","dashboard","dashboards","database","decided","dedicated","default","deployment","designed","developing","development","devices","devonthink","disable","docker","document","domain","entry","errors","everything","example","examples","explicit","extend","extensibility","extensible","feature","fiber","files","filtering","first","flexibility","friction","getting","github","google","great","groups","hardware","hellip","highlight","highlighter","highlights","hosted","https","hunting","implementation","impressive","includes","input","integrations","keeping","language","ldquo","lightweight","local","logic","loops","lsmann","macvlan","makes","management","match","mdash","meeting","memorable","middleware","modern","monitoring","moves","network","networking","networks","nginx","notes","numbered","opens","operation","options","others","parameter","pattern","patterns","performance","personal","plaintext","platform","plugin","plugins","point","ports","powerful","practical","priority","problems","project","pronounced","provides","proxies","proxy","public","query","rdquo","redirect","redirects","regex","reloadable","remembering","repository","requests","required","resilient","reverse"]
	},{
		"title": "Tween: Fish function for outputting ranges of text",
		"url": "/2026/01/22/tween-fish-function-for-outputting-ranges-of-text/",
		"tags": ["command","regex","shell","utilities"],
		"date": "Jan 22<span>nd</span>, 2026",
		"ts": "1769100660",
		"summary": "I&rsquo;ve been developing a Fish function called . It&rsquo;s a simple, flexible utility for extracting ranges of lines from files or STDIN input, and it&rsquo;s flexible enough to handle just about any scenario you can throw at it, from numeric ranges, array style position/length ranges, or even string matching with regex capabilities. You can find the source code in my Fish functions repository, specifically at tween.fish. displays lines between a start and end point. The start and end can be line numbers, string matches, or regex patterns. It supports multiple ranges, relative offsets, and even works with piped input. And here&rsquo;s the nice part: arguments can be in any order. Both of these work the same way: Both formats work, so use whichever feels more natural. This shows lines 50 to 10 lines from the end of the file. There&rsquo;s a special case: means the end of the file (the last line): This displays lines 50 through the end of the file. Other negative numbers like , , etc. still mean \"N lines from the end\" (second-to-last, third-to-last, etc.). Instead of line numbers, you can match on strings. This is super useful when you know the content but not the exact line: This displays the range with syntax highlighting, which is especially nice when viewing code. This is handy when you&rsquo;re already working with a pipeline. The function is flexible enough to handle most text extraction tasks, and the ability to mix line numbers, strings, and regex makes it incredibly versatile. Give it a try and see how it fits into your workflow",
		"keywords": ["begin","basic","exclusive","multiple","options","piped","regex","relative","stdin","sometimes","string","syntax","treat","ability","argument","arguments","array","between","called","capabilities","certain","commas","complex","containing","content","count","dashed","developing","display","displays","enough","especially","exact","expressions","extract","extracting","extraction","feels","files","finds","flexible","format","formats","function","functions","handle","handy","highlighting","including","inclusive","incredibly","input","installed","length","makes","markers","match","matches","matching","message","multiple","natural","negative","numbers","numeric","offsets","output","pattern","patterns","piped","pipeline","point","position","range","ranges","regex","regular","relative","repository","rsquo","scenario","second","sections","separate","several","shows","simple","simplest","single","slashes","source","special","specifically","specify","specifying","string","strings","style","summary","super","supports","syntax","tasks","themselves","third","through","throw","treat","treated","tween","usage","useful","using","utility","versatile","viewing","where","whichever","workflow","working","works","wrapped"]
	},{
		"title": "Markdown Fixup plugin for Apex",
		"url": "/2026/01/19/markdown-fixup-plugin-for-apex/",
		"tags": ["fixup","markdown","plugins"],
		"date": "Jan 19<span>th</span>, 2026",
		"ts": "1768846380",
		"summary": "My two biggest projects over the last week have been Markdown Fixup and Apex. It seemed worthwhile to integrate the two in some useful way. A quick update on Markdown Fixup: I fixed the regex replacement engine to handle multi-line replacements. This is kind of a big deal if you&rsquo;re trying to convert things like BBCode to Markdown as part of the pipeline. I&rsquo;ve added a new plugin that integrates directly into Apex&rsquo;s processing pipeline. If you haven&rsquo;t been tracking md-fixup, it&rsquo;s an opinionated markdown linter and fixer that can normalize spacing, fix emphasis markers, and apply custom regex replacements to your markdown files. And if you haven&rsquo;t been following Apex, it&rsquo;s my \"universal markdown processor\" project that handles all kinds of Markdown extensions in one place. That works fine for simple cases, but if you want to run md-fixup as part of a pipeline with other Apex plugins, the plugin version is the way to go. Plugins run in a deterministic order, and you can enable or disable them as needed without changing your workflow. The md-fixup plugin runs in the phase, which means it processes your raw markdown text before Apex parses it. This is important for a couple of reasons: Compatibility: md-fixup can normalize your markdown to ensure it&rsquo;s compatible with Apex&rsquo;s formatting expectations Regex replacements: Most importantly, if you&rsquo;re using custom regex replacements in your file, those run before Apex processes the text. This means you can transform markdown syntax itself, not just the final HTML output The plugin assumes you already have the md-fixup binary installed and available in your PATH. (And it uses the Rust version, which is what will install.) After installation, the plugin creates a support directory at with a template file. Edit this file to add your custom regex replacements. To use the plugins on a file, you can enable it globally, or run them for a specific conversion: The plugin runs automatically if you&rsquo;ve enabled plugins globally. The plugin is hosted at https://github.com/ApexMarkdown/apex-plugin-md-fixup if you want to check out the code or contribute improvements. And if you haven&rsquo;t, check out Apex. Quick side note: it&rsquo;s been pointed out that md-fixup makes a great Marked preprocessor. Marked 3 adds enough search and replace capabilities that it might not be necessary, but for Marked 2, or if you prefer to edit all your&hellip;",
		"keywords": ["bbcode","conversion","manipulation","preprocessor","processor","regex","string","apexmarkdown","bbcode","compatibility","configuring","custom","fixup","install","installation","markdown","marked","plugins","proprocessor","quick","regex","running","added","apply","array","assumes","automatically","available","before","biggest","binary","blocks","capabilities","changing","check","compatible","contribute","conversion","convert","couple","creates","custom","dedicated","descriptive","deterministic","directly","directory","disable","emphasis","enabled","engine","enough","example","expectations","extensions","files","fixed","fixer","fixup","format","formatting","frontmatter","github","globally","great","groups","handle","handles","haven","hosted","https","important","importantly","improvements","inside","install","installation","installed","integrate","integrates","itself","kinds","linter","listed","makes","markdown","markers","match","multi","necessary","needed","normalize","opinionated","output","parses","pattern","phase","pipeline","plugin","plugins","pointed","prefer","preprocessor","processes","processing","processor","project","projects","quick","reasons","regex","replace","replacement","replacements","rsquo","search","seemed","simple","spacing","specific","support","syntax","template","tracking","transform","trying","universal","useful","using","version","workflow","works","worthwhile"]
	},{
		"title": "Markdown to Sendy with Image Stacks and File Uploads",
		"url": "/2026/01/17/markdown-to-sendy-with-image-stacks-and-file-uploads/",
		"tags": ["automation","email","markdown","mdtosendy","scripting","sendy"],
		"date": "Jan 17<span>th</span>, 2026",
		"ts": "1768652520",
		"summary": "I&rsquo;ve updated my Markdown to Sendy script with the ability to use \"sliced\" images with separate links, the ability to upload assets to a CDN automatically, and a \"test email\" mode that will actually send a test email to you without going through Sendy. If you haven&rsquo;t heard of mdtosendy before, it&rsquo;s a Ruby script that converts Markdown files into email-ready HTML with automatic inline styling for maximum email client compatibility. While it can generate emails for any newsletter or email platform, it integrates best with Sendy, automatically creating and scheduling campaigns. You write your emails in Markdown, maintain your styles in CSS files, and mdtosendy handles all the messy email HTML details. And it can handle multiple templates, so you can have different styles for the same newsletter, and/or configure multiple instances with different styles/settings. The HTML preview mode is useful, but nothing beats being able to actually view the email in an email app so you can see exactly how it will render. Now you can send test emails directly without going through Sendy. The new option does exactly that: This sends a test email directly via SMTP, bypassing Sendy entirely. Perfect for quick previews or testing your email design before creating a campaign. You&rsquo;ll need to configure SMTP settings in your : For Gmail, you&rsquo;ll need to generate an App Password (not your regular password) at https://myaccount.google.com/apppasswords. Most other SMTP providers follow a similar pattern. The CDN image upload feature is a significant enhancement. You can add a section to config (which can be inherited from the main config, or set per template), and when detects a local file path, it will be uploaded to the CDN and the url in the output HTML will be updated accordingly. CDN uploads work with S3, SCP, or SFTP. See the example config in the repo for details. By default, mdtosendy uses original filenames (no timestamps) and prompts you when a file already exists. The prompt defaults to \"Yes\", so you can just press Enter or type to overwrite, or to skip. If you choose not to overwrite, a timestamp will be added to the filename to avoid conflicts. This works with all three CDN types: S3, SCP, and SFTP. The file existence checking is smart enough to detect existing files before uploading. The new tag is perfect for creating multi-part images that need to be displayed as a seamless vertical stack. This is especially useful for&hellip;",
		"keywords": ["gmail","newsletter","control","email","enter","getting","github","gmail","image","local","markdown","overwrite","password","prompt","sending","sendy","stack","started","upload","while","ability","added","apppasswords","assets","automatic","automatically","avoid","based","beats","before","behavior","between","bucket","bypassing","campaign","campaigns","check","checking","choose","client","compatibility","config","configuration","configure","configured","confirmation","conflicts","content","converts","creates","creating","default","defaults","definitions","design","details","detect","detects","different","directly","displayed","email","emails","enhancement","enough","entirely","especially","example","examples","exist","existence","exists","feature","features","filename","filenames","files","generated","going","google","handle","handles","haven","heard","https","image","images","inherited","inline","installation","integrates","latest","layout","liner","links","local","maintain","markdown","marked","maximum","mdtosendy","messy","modes","multi","multiple","myaccount","newsletter","nothing","optionally","options","original","output","overwrite","password","pattern","platform","powerful","press","preview","previews","prompt","prompting","prompts","providers","quick","ready","regular","repository","rsquo","scheduling","script","seamless","section","sections","sends","separate","setting","settings","shows","significant","similar","single","sliced","smart","spacing","stack","stacks","structured","styles","styling","supports","syntax","table","template","templates","testing","through","timestamp","timestamps","types","updated","upload","uploaded","uploading","uploads","useful","using","version","vertical","visual","width","workflows","works","write"]
	},{
		"title": "Marked features for Apex",
		"url": "/2026/01/16/marked-features-for-apex/",
		"tags": ["criticmarkup","features","markdown","marked"],
		"date": "Jan 16<span>th</span>, 2026",
		"ts": "1768572000",
		"summary": "When Apex reaches 1.0, I&rsquo;m planning to include it in Marked 3. I realized that Marked has a lot of preprocessing features that were previously handled in Objective-C that would make sense to have in the core processor for both speed and accessibility from the command line. So I&rsquo;ve added a bunch of new flags and C API definitions to Apex that bring some of Marked&rsquo;s capabilities directly into the processor. These are all available via command-line flags, configuration options, and the C API. The flag converts in your Markdown into span-wrapped hashtags. By default, it uses the class, but you can use to use instead. This is smart enough to skip hashtags inside code blocks and HTML attributes, so you won&rsquo;t get false matches in things like or code examples. Hashtags are disabled by default because they would conflict with headers if you&rsquo;re not in the habit of putting a space after the in an ATX header (e.g. ). This option is only for people who want to convert things like Bear notes with tag formatting. They can be enabled with on the command line, by including in a config file, or by using the boolean when using the C API. When you&rsquo;re combining multiple documents, footnote ID collisions can be a problem. The flag generates hash-based footnote IDs using an 8-character hex prefix from the document content. Instead of and , you&rsquo;ll get and . Different documents get different hash prefixes, so you can safely combine them without conflicts. The flag prevents short widows in headings by inserting non-breaking spaces between trailing words. It works backwards from the end of the heading, combining words until the trailing portion exceeds 10 characters. So a heading like \"introduction to the topic\" becomes &mdash; ensuring that if the heading wraps, the trailing portion won&rsquo;t be a short, lonely word on its own line. Widon&rsquo;t is disabled by default in all modes, as it might create potentially unexpected results if the user isn&rsquo;t aware of it. It can be explicitly enabld with , in config, or with the boolean in the C API. Code blocks without a programming language specified can be treated as poetry with the flag. This adds a class to code blocks that don&rsquo;t have a language specified, and automatically enables so only code blocks with languages get syntax highlighting. Again, this is disabled by default as it has very specific use cases. The flag converts and syntax into CriticMarkup highlight and&hellip;",
		"keywords": ["hashtag","language","languages","markdown","markup","pandoc","widont","accessibility","again","apexmarkdown","available","breaks","build","command","configuration","consistency","criticmarkup","different","document","everywhere","extensibility","footnote","github","hashtags","header","headings","markdown","marked","moving","multimarkdown","pandoc","poetry","proofreader","random","speed","title","toggle","widon","works","above","accessibility","added","anchor","anyone","approaches","attributes","automatically","available","aware","backlink","backwards","based","because","becomes","before","behavior","between","blocks","boolean","break","breaking","breaks","bring","build","bunch","called","capabilities","changes","character","characters","class","collisions","combining","command","config","configuration","conflict","conflicts","content","contribute","control","conversion","convert","converts","create","default","defaults","definitions","deletion","development","develops","different","directly","disabled","document","documents","easier","elements","enabld","enabled","enables","endnotes","enough","ensuring","everything","everywhere","examples","exceeds","explicitly","extensions","extracts","false","faster","features","fenced","files","first","flags","flavors","flexibility","fnref","focusing","footnote","footnotes","format","formatting","front","generates","github","going","habit","handled","handling","hashtags","header","headers","heading","headings","highlight","highlighter","highlighting","https","ideas","identification","including","indented","inserting","inserts","inside","integration","interested","introduction","killer","language","languages","ldquo","little","lonely","making","manipulation","markdown","matches","mdash","metadata","mkhashtag","mkstyledtag","modes","multiple","needing","noteref","notes","options","originally","output","override","pandoc","people","plaintext","planning","poetry","portion","possible","potentially","powerful","prefix","prefixes","preprocessing","prevents","previously","problem","process","processed","processing","processor","programming","proofreader","proper","provides","putting","random","rdquo","reaches","realized","recent","rendering","replaces","replicate"]
	},{
		"title": "Git-based changelogs for Rust projects and more",
		"url": "/2026/01/15/git-based-changelogs-for-rust-projects-and-more/",
		"tags": ["automation","changelog","formatting","markdown","scripting","support"],
		"date": "Jan 15<span>th</span>, 2026",
		"ts": "1768485600",
		"summary": "I&rsquo;ve been using my changelog script for years to generate release notes from git commit messages. It&rsquo;s saved me countless hours and helped me maintain complete, informative changelogs across all my projects. I wrote in 2017 and mentioned it back in 2024. I&rsquo;ve used it for every project I&rsquo;ve worked on since then, and I&rsquo;ve been improving it and making it work with more and more project types over the years. The latest update adds support for Rust projects, which I&rsquo;m just dipping my toes into. The script now automatically detects Rust projects in two ways: Cargo.toml detection: If your project has a file, it reads the and fields directly from it. Rust source file scanning: For projects without a (or as a fallback), it scans files looking for version constants like and command names from . This means you can use the changelog script with any Rust project just by running or to update your file, and it will automatically pull the version from your or source files. Along with Rust support, I&rsquo;ve made a few other improvements: VERSION constant: The script now includes its own constant that stays in sync with the file, making it easier to track the script&rsquo;s version. Code refactoring: I&rsquo;ve extracted the version detection, git log parsing, and formatting logic into separate modules (, , and ) to make the codebase more maintainable. Better version detection: The script now has a more robust fallback chain for detecting versions, with Rust projects taking priority when detected, followed by Ruby gems, Xcode projects, and plain files. flag: You can now generate changelogs starting from a specific version tag using (or for short). This is useful when you want to see changes since a particular release, and it supports partial version matching. For example, will find the most recent tag starting with \"1.0\" and generate a changelog from that point. flag: If you prefer an interactive approach, use (or ) to pop up an menu of all your git tags. This lets you visually choose which tag to use as the starting point for your changelog generation. Perfect for when you can&rsquo;t remember the exact version number but know roughly when you want to start from. flag: Filter changelog output to show only specific change types. Use it like to see only new features and bug fixes, or to see only breaking changes and modifications. flag: When used with or , this splits the&hellip;",
		"keywords": ["developer","keepachangelog","notes","release","bunch","cargo","filter","marked","version","xcode","across","adapt","anyone","approach","automate","automatically","breaking","build","chain","change","changed","changelog","changelogs","changes","choose","codebase","command","commit","commits","comprehensive","configuration","constant","constants","control","countless","default","designed","detected","detecting","detection","detects","develop","difference","dipping","directly","directory","easier","exact","example","extracted","fallback","features","fields","files","first","fixes","followed","format","formatting","gated","generates","generating","generation","great","helped","hours","improvements","improving","includes","including","informative","interactive","latest","logic","looking","maintain","maintainable","makes","making","matching","mdash","mentioned","messages","modifications","modules","multiple","names","needs","newest","notes","nvultra","oldest","operation","output","parsing","partial","particular","paths","personal","point","prefer","prefixes","priority","project","projects","reads","ready","recent","refactoring","release","remember","robust","roughly","rsquo","running","saved","scanning","scans","script","seamlessly","separate","separately","short","showing","since","source","specific","splits","starting","stays","structures","support","supports","taking","track","types","useful","using","version","versions","visually","worked","workflow","working","works","wrote","years"]
	},{
		"title": "Regex Replacements for Markdown Fixup",
		"url": "/2026/01/14/regex-replacements-for-markdown-fixup/",
		"tags": ["markdown","mdfixup","regex"],
		"date": "Jan 14<span>th</span>, 2026",
		"ts": "1768399200",
		"summary": "BBEdit has a cool feature called Text Factories for automating repetitive text transformations. When Younghart mentioned it on the forum , it got me thinking. While I can&rsquo;t replicate the full power of Text Factories (which can chain multiple transformations, with all of BBEdit&rsquo;s power), I could at least add a flexible regex search-and-replace system to md-fixup. So that&rsquo;s what I built: a YAML-driven regex replacement engine that lets you define custom patterns that run as part of an pass. It&rsquo;s not a replacement for Text Factories &mdash; it only does regex search and replace &mdash; but it offers a way to extend with your own transformations. Replacements are defined in a YAML file and can be scoped to run before or after Markdown Fixup&rsquo;s built-in rules. Each replacement can optionally run inside code blocks or YAML frontmatter, giving you fine-grained control over where transformations happen. name: A human-readable identifier (useful for debugging) pattern: A Rust pattern (supports capture groups) replacement: The replacement string (use , , etc. for capture groups) timing: When to run&mdash; or the built-in rules incodeblocks: If , the pattern runs inside fenced code blocks in_frontmatter: If , the pattern runs inside YAML frontmatter This would turn \"Version 1.2 is released\" into \"Version 2.1 is released\". The pattern captures two groups of digits separated by a dot, then swaps them in the replacement. Stupid example, of course (why would you ever do that?), but hopefully you get the idea. This regex replacement system is intentionally limited, and as mentioned, is no replacement for Text Factories. It only does regex search and replace, but it runs automatically as part of md-fixup&rsquo;s fixup pass, which means you can integrate custom transformations into your existing workflow without switching tools. If you need the full power of Text Factories, by all means use BBEdit . It&rsquo;s an amazing text editor. But if you just need a few regex replacements to run alongside Markdown Fixup&rsquo;s built-in rules, this might be exactly what you&rsquo;re looking for. Check out the latest version of Markdown Fixup on GitHub . Find installation and usage instructions there",
		"keywords": ["bbedit","correction","expression","linter","regular","replace","search","bbedit","check","complex","controlling","example","factories","fixup","github","markdown","replacements","setting","stupid","version","while","works","younghart","alongside","amazing","automatically","automating","before","blocks","built","called","capture","captures","chain","checked","command","config","control","custom","debugging","define","defined","digits","directory","disable","double","driven","editor","engine","example","extend","feature","fenced","fixes","fixup","flags","flexible","forum","frontmatter","giving","grained","groups","happen","hopefully","human","identifier","inside","installation","instructions","integrate","intentionally","latest","limited","links","lives","locations","looking","mdash","mentioned","multiple","normalizes","numbers","offers","optionally","pattern","patterns","properties","readable","regex","released","repetitive","replace","replacement","replacements","replicate","rsquo","rules","scoped","search","separated","simple","spaces","string","supports","swaps","switching","system","thinking","timing","tools","transformations","usage","useful","using","version","where","workflow"]
	},{
		"title": "Built-in Syntax Highlighting for Apex",
		"url": "/2026/01/13/built-in-syntax-highlighting-for-apex/",
		"tags": ["developer","markdown"],
		"date": "Jan 13<span>th</span>, 2026",
		"ts": "1768315320",
		"summary": "I think a lot of people using Apex are going to want syntax highlighting of code blocks. Including a script like Highlight.js in your HTML output is fine, but I wanted Apex to be able to directly output HTML with the necessary spans and tables for highlighting. So, introducing the flag. Rather than bundling a syntax highlighting engine (which would bloat the binary and require constant updates for new languages), I decided to leverage external tools that you probably already have installed. When you specify a highlighter, Apex processes your Markdown normally, then makes a second pass over the HTML output. It finds all blocks, extracts the raw code content, pipes it through the external tool, and replaces the original block with the colorized HTML output. Apex handles language specification in the standard way you&rsquo;d expect. Just add the language identifier after the opening fence: The language is extracted from either the attribute on the code tag or the attribute on the pre tag (depending on how cmark-gfm formatted it). This language is then passed to the external highlighter. If you don&rsquo;t specify a language, both Pygments and Skylighting will attempt auto-detection. Pygments is particularly good at this thanks to its (guess) flag. Skylighting will try its best but may fall back to plain text for ambiguous code. Sometimes you want line numbers in your code blocks, especially for tutorials or when referencing specific lines. The new flag has you covered: This passes the appropriate options to the highlighter (Pygments gets , Skylighting gets the flag). The result is nicely numbered code that&rsquo;s easy to reference. When you use with and don&rsquo;t specify a option, Apex automatically embeds GitHub-style syntax highlighting CSS in the document head. This covers all the common class names used by both Pygments and Skylighting, so your highlighted code looks great out of the box. The embedded CSS uses a clean, GitHub-inspired color scheme that works well with light backgrounds. Keywords are red, strings are blue, comments are gray, and so on. If you want different colors, you can always override with your own stylesheet using the flag. Speaking of stylesheets, another improvement today is that now accepts multiple files. You can either use the flag multiple times or pass a comma-separated list: All specified stylesheets are linked in the document head in the order provided. If you use , all of them get embedded as inline blocks&hellip;",
		"keywords": ["highlight","syntax","automatic","detection","github","highlight","homebrew","improved","including","install","integrating","keywords","language","markdown","multiple","numbers","pygments","rather","skylighting","sometimes","speaking","standalone","stylesheets","styling","updates","works","accepts","accessible","alongside","ambiguous","another","arguments","attribute","automatically","available","backgrounds","badge","battle","because","binary","bloat","block","blocks","bundling","class","clean","cleaner","cmark","color","colorization","colorized","colors","comma","comments","common","constant","content","count","covered","covers","decided","depending","detection","different","directly","document","either","embedded","embeds","engine","errors","especially","expect","external","extracted","extracts","failures","feature","fence","files","finds","formatted","found","functional","generation","going","great","guess","handle","handles","helpers","highlighted","highlighter","highlighters","highlighting","identifier","improvement","infrastructure","inline","inspired","installed","introducing","landed","language","languages","leave","leverage","light","linked","looks","maintainable","makes","multiple","names","necessary","needs","nicely","normally","numbered","numbers","opening","options","original","output","outputs","override","parsing","particularly","passed","passes","people","pipes","print","processes","publishing","refactoring","referencing","replaces","rsquo","runner","scheme","script","second","separated","shows","spans","specific","specification","specify","standard","strings","structure","style","stylesheet","stylesheets","suite","suites","syntax","tables","tested","tests","thanks","think","through","times","titles","today","tools","tracking","tutorials","unstyled","updates","useful","using","wanted","warning","while","works","worlds"]
	},{
		"title": "Markdown to Sendy update: button tags, template fixes",
		"url": "/2026/01/13/markdown-to-sendy-update-button-tags-template-fixes/",
		"tags": ["automation","email","liquid","markdown","mdtosendy","sendy"],
		"date": "Jan 13<span>th</span>, 2026",
		"ts": "1768312800",
		"summary": "I&rsquo;ve been working on a few updates to my Markdown to Sendy script that add some nice quality-of-life improvements for creating email campaigns. The main additions are support for greeting/salutation customization and a new button liquid tag that makes it easier to create styled call-to-action buttons. The key takes precedence if both are defined, which is useful if you want to keep things semantic. The greeting will automatically appear after the header image and before the first paragraph in your email. The greeting text can contain Markdown or HTML and will be processed accordingly. The syntax is a Sendy merge tag that gets replaced when the email is sent. One of the more tedious parts of creating email buttons has been remembering the exact syntax for applying classes. The new liquid tag makes this much easier. The second example uses the class, which maps to the secondary button style. You can also use for tertiary buttons. These classes ( and ) are aliases for and , making it quick to type common variants. Reference matching is case-insensitive, so , , and all work the same way. Note that button creation and styling requires a Markdown processor that handles IALs, such as Kramdown or Apex. I recommend installing Apex for this tool. I know this is a project with a niche audience, but I&rsquo;m aware of a few people are already getting some use out of this. I know I personally love it. If you publish a newsletter or send marketing emails, let me know what you&rsquo;d need to see before it was useful in your own situation",
		"keywords": ["marketing","button","check","github","greetings","kramdown","links","liquid","markdown","salutations","sendy","style","action","additions","aliases","anywhere","appear","applying","arguments","attributes","audience","automatically","aware","before","button","buttons","campaigns","class","classes","clean","common","configuration","contain","create","creating","creation","custom","customizable","customization","default","define","defined","directly","easier","email","emails","exact","example","first","frontmatter","getting","great","greeting","greetings","handles","header","image","improvements","individual","insensitive","installing","keeping","links","liquid","makes","making","markdown","marketing","matching","merge","named","newsletter","niche","override","paragraph","parts","people","personally","positional","precedence","processed","processor","project","publish","quality","quick","recommend","remembering","replaced","requires","rsquo","salutation","script","second","secondary","semantic","situation","style","styled","styling","support","supports","syntax","takes","tedious","template","tertiary","updates","useful","variants","working"]
	},{
		"title": "Web Excursions for January 12nd, 2026",
		"url": "/2026/01/12/web-excursions-for-january-12nd-2026/",
		"tags": ["bookmarks","markdown"],
		"date": "Jan 12<span>th</span>, 2026",
		"ts": "1768240800",
		"summary": "Web excursions brought to you in partnership with Tower, the absolute best Git GUI for macOS. moss://xmunch.com Right in line with what I was thinking with my Markdown Web brainstorming. A protocol for content distribution that requires Markdown &mdash; portable, secure, and durable. NSHipster/sosumi.ai: Making Apple docs AI-readable A web app and MCP server for converting Apple API docs into AI-compatible formats. Another way to save on tokens and get better results. karol-broda/snitch: a prettier way to inspect network connections Great little CLI for inspecting network connections that&rsquo;s friendlier than /. JustContent Another (better?) take on markdownification. Very similar to Marky but I think it might get even better results. Works well as a command, and while it can output markdown the same way Gather or Marky does, it&rsquo;s ostensibly designed as a better for your LLMs, reducing tokens and context. How Markdown took over the world Excellent article from Anil Dash documenting the rise and rapid ubiquity of Markdown. (The banner image on this post is pretty amazing as well.) If you&rsquo;re using Git, you need Tower. Check it out today",
		"keywords": ["markdown","markdownifier","another","apple","check","excellent","gather","great","justcontent","making","markdown","marky","nshipster","right","tower","works","absolute","amazing","article","banner","brainstorming","broda","brought","command","compatible","connections","content","context","converting","designed","distribution","documenting","durable","excursions","formats","friendlier","image","inspect","inspecting","karol","little","macos","markdown","markdownification","mdash","network","ostensibly","output","partnership","portable","prettier","protocol","rapid","readable","reducing","requires","results","rsquo","secure","server","similar","snitch","sosumi","think","thinking","today","tokens","ubiquity","using","while","world","xmunch"]
	},{
		"title": "Apex gets tables right",
		"url": "/2026/01/12/apex-gets-tables-right/",
		"tags": ["markdown","tables"],
		"date": "Jan 12<span>th</span>, 2026",
		"ts": "1768226400",
		"summary": "Tables in Markdown have always been a bit of a mess. Every processor handles them slightly differently, and when you start wanting advanced features like column spans or captions, you&rsquo;re usually out of luck. I&rsquo;ve been working on Apex, my unified Markdown processor, and I&rsquo;m happy to say that tables are now pretty solid. One of the trickier issues I ran into was how to handle empty cells versus colspan syntax. In many table implementations, consecutive pipes () create a column span. But what about cells that are just&hellip; empty? You know, with some whitespace between the pipes for alignment? Previously, Apex was a little too eager to merge cells. If you had (an empty cell with spaces), it might get treated as part of a colspan. That&rsquo;s not what anyone wants. The &laquo;&nbsp;Marker for Explicit Colspans Sometimes you want a colspan but you also want your source Markdown to look nice and aligned. That&rsquo;s where the new marker comes in: Each indicates \"this cell is part of a colspan from the left.\" In this example, spans all three columns. Your source stays perfectly aligned, and you get the colspan you wanted. Column spans get all the attention, but row spans are just as useful. Use in a cell to merge it with the cell above: Here, \"Engineering\" spans three rows. Stack multiple markers and the rowspan grows accordingly. In unified and kramdown modes, you don&rsquo;t even need a separator row: Apex figures out it&rsquo;s a table and renders it. No required. The alignment row sets the column alignment, and the rest is body data. No phantom header row cluttering up your HTML. Apex renders the first column of each body row as , which is exactly what screen readers expect for accessible data tables. Don&rsquo;t feel like typing all those pipes? Use a fenced code block with the info string: Apex auto-detects whether it&rsquo;s CSV or TSV and converts it to a proper table. You can even include an alignment row using keywords like , , . That last one even lets you attach IAL attributes directly to the table through the caption. Use or to control placement. Tables were one of the areas where I really wanted Apex to shine. Between relaxed parsing, multiple colspan/rowspan syntaxes, CSV support, captions, footers, and per-cell alignment, I think it covers pretty much every table scenario I&rsquo;ve ever needed. Check out the Apex repository and the Tables documentation for more details. And if you find edge&hellip;",
		"keywords": ["comma","pandoc","separated","spreadsheet","table","values","alignment","between","caption","captions","cells","check","colspans","column","columns","empty","engineering","everything","explicit","footers","formats","github","header","headerless","leave","markdown","marker","multiple","override","pandoc","previously","problem","relaxed","sometimes","spans","stack","table","tables","wrapping","above","accessible","accidentally","advanced","alignment","anyone","areas","attach","attributes","before","between","block","caption","captions","carefully","cells","cluttering","colons","colspan","column","columns","comes","consecutive","control","converts","covered","covers","create","details","detects","differently","directly","eager","empty","example","expect","extension","features","fenced","figures","first","footer","footers","grows","handle","handles","happy","haven","header","headers","hellip","implementations","indicates","individual","inline","issues","keywords","kramdown","laquo","little","looking","marker","markers","merge","merging","modes","multiple","needed","nothing","output","parsing","perfectly","phantom","pipes","placement","predictable","processor","proper","readable","readers","relaxed","renders","replaced","repository","required","rowspan","rsquo","scenario","screen","section","semantic","separator","several","shine","simple","slightly","solid","source","spaces","spans","stays","string","stripped","style","styles","support","supports","syntax","syntaxes","table","tables","think","through","treated","trickier","typing","unified","useful","using","usually","versus","wanted","wanting","wants","where","whitespace","working"]
	},{
		"title": "A quick Markdown Fixup update",
		"url": "/2026/01/09/a-quick-markdown-fixup-update/",
		"tags": ["formatting","linking","markdown","mdfixup","scripting"],
		"date": "Jan 9<span>th</span>, 2026",
		"ts": "1767992520",
		"summary": "I&rsquo;ve made a couple of improvements to md-fixup, the opinionated Markdown formatting and linting tool I shared this week. The main additions are better emphasis handling and link conversion options. By default, md-fixup normalizes bold markers to (double underscore) and italic markers to (single asterisk). So becomes and becomes . This keeps everything consistent in your Markdown files. This will convert to and to . Handy if you&rsquo;re working with a different Markdown flavor or just have a preference. The new link conversion feature is one I should have had originally but kind of forgot. By default, md-fixup now converts all your links to numeric reference-style links, keeping your document body clean and all the URLs organized at the bottom. Notice how the second link reuses the same reference number since it&rsquo;s the same URL. It de-duplicates for you automatically. Reference links are the default behavior (rule 28). Links get converted to format, and all definitions are placed at the end of the document (rule 29, also default). This is useful if you prefer your reference definitions up top, or if you&rsquo;re using a tool that reads links from the beginning. If you prefer inline links instead, you can enable rule 30. This converts everything to format and automatically disables the reference link behavior. Since inline links are disabled by default, the cleanest way to enable them is through a config file. Create : Or if you&rsquo;re using the skip/include pattern already, just add to your include list. Inline links will override reference links when enabled. This can&rsquo;t be set in the config file yet—it&rsquo;s command-line only for now. Inline links: → Reference links: → (renumbered) Implicit reference links: → (if definition exists) Links with titles: becoming (or in reverse mode). It&rsquo;s aware of context and won&rsquo;t mess with code blocks or other protected regions. Speaking of Markdown stuff, I also pushed v0.1.51 of Apex today. It adds support for syntax before tables (previously only after), with or without IAL attributes, and handles blank lines between captions and tables. It fixes table and other parsing when files don&rsquo;t end with a newline or use CR line endings. already had great CRLF handling, but I broke some of it when building out the Apex extensions. Should be better now, and I&rsquo;ve added regression tests to ensure it stays that way",
		"keywords": ["element","emphasis","hyperlink","language","lightweight","markup","another","apexmarkdown","before","caption","configuration","conversion","converted","create","default","emphasis","examples","handling","handy","implicit","inline","links","markdown","reverse","since","speaking","added","additions","another","asterisk","attributes","automatically","aware","becomes","becoming","before","beginning","behavior","between","blank","blockquote","blocks","bottom","brackets","broke","building","captions","class","clean","cleanest","cmark","command","config","configuration","consistent","context","continue","conversion","convert","converted","converter","converts","couple","default","definition","definitions","different","disabled","disables","document","double","duplicates","emphasis","enabled","endings","entirely","everything","exact","example","examples","exists","extensions","false","feature","files","fixes","fixup","flavor","forgot","format","formatting","github","great","hacking","handles","handling","happens","highlight","highlighter","https","ignores","implicit","improvements","inline","inside","italic","keeping","keeps","language","ldquo","links","linter","linting","maintain","mangled","markdown","markers","modifying","morning","needed","nested","newline","normalization","normalizer","normalizes","numeric","opinionated","options","organized","originally","override","overwrite","parsing","pattern","placed","plaintext","practical","prefer","preference","previously","projects","protected","pushed","rdquo","readability","reads","regions","regression","releases","renumbered","reuses","reverse","rouge","rsquo","rules","second","section","setups","shared","since","single","smartly","spans","square","stays","strong","stuff","style","support","surrounded","syntax","table","tables","tests","think","through","title","titles","today","ttscoff","tuned","underscore","useful","using","where","width","working"]
	},{
		"title": "Web Excursions for January 9th, 2026",
		"url": "/2026/01/09/web-excursions-for-january-9th-2026/",
		"tags": ["bookmarks","markdown"],
		"date": "Jan 9<span>th</span>, 2026",
		"ts": "1767967200",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. A Collection of Cursor custom slash commands A collection of custom slash commands for Cursor. All potentially useful, with some exhaustive examples. zcaceres/markdownify-mcp: A Model Context Protocol server for converting almost anything to Markdown A Model Context Protocol server for converting almost anything to Markdown. It can do YouTube videos to Markdown, which is worth trying out. Atmospheric Computing Cloud computing has been extremely successful, but it lost the values that drove personal computing. We can solve this by evolving forward. Updatest Trying this out and I&rsquo;m really impressed. A worthy successor to MacUpdater (which ceased operations at the beginning of the month). Keeps all your Sparkle and Homebrew apps/utils up to date automatically, and can run in the background, menu bar only. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["homebrew","atmospheric","backblaze","check","cloud","collection","computing","context","cursor","homebrew","keeps","macupdater","markdown","model","protocol","sparkle","trying","updatest","youtube","affordably","almost","automatically","background","backs","beginning","brought","ceased","cloud","collection","commands","computer","computing","converting","custom","drove","entire","everything","evolving","examples","excursions","exhaustive","impressed","markdownify","operations","partnership","personal","potentially","reliably","rsquo","securely","server","slash","solve","successful","successor","today","trying","useful","utils","values","videos","worth","worthy","zcaceres"]
	},{
		"title": "Markdown Fixup: An Opinionated Markdown Linter",
		"url": "/2026/01/07/markdown-fixup-an-opinionated-markdown-linter/",
		"tags": ["formatting","linter","markdown","scripting","tools"],
		"date": "Jan 7<span>th</span>, 2026",
		"ts": "1767808800",
		"summary": "I have some strong opinions about how Markdown should look. Liberal line breaks everywhere. ATX headers with exactly one space after the . Consistent list indentation using tabs. Tables that are properly aligned. And on and on. So I made Markdown Fixup (md-fixup). I just wanted a tool to fix my own Markdown files up to match these preferences. But then I thought, maybe someone else out there has the same opinions, or at least could be swayed to think they were good ideas? So I decided to make it available to the world, just in case anyone&rsquo;s tastes matched mine. is a comprehensive markdown linter and formatter that performs 27 different normalization and formatting rules. It solves some common issues you might run into with \"it works in X.app but not in Y\" by standardizing on a consistent set of rules. I considered building this functionality directly into my Apex project, but I determined it was feature bloat and made more sense as a standalone tool. Keeping it separate means it can be used independently, works great in pipelines, and doesn&rsquo;t add complexity to Apex itself. If you want to use it with Apex, you can always pipe it in (the Unix philosophy of doing one thing well). There are a few good markdown linters available that can be configured to use similar rules &mdash; this one is just specific to my own preferences and easy to run. If your preferences happen to align with mine, you might find it useful. The tool takes STDIN and can be used in a pipeline, and can output to STDOUT or overwrite files. Here&rsquo;s a quick example: All linters can be enabled or disabled on the command line, via project config files, or via global config (in that order of precedence). So you can customize it to match your exact needs, even if they don&rsquo;t perfectly align with my defaults. The config file lives at and lets you set defaults for width, overwrite behavior, and which rules to skip. There&rsquo;s a start of a VS Code extension in the repo, but I haven&rsquo;t fully developed that yet. It&rsquo;s on the roadmap, but for now the command-line tool works great. The release action is generating macOS and Linux binaries (x86, arm) so you don&rsquo;t need any external tools to install via Homebrew. Normalizes line endings to Unix Trims trailing whitespace (preserves exactly 2 spaces for line breaks) Collapses multiple blank lines (max 1 consecutive, except in code blocks) Normalizes headline spacing (exactly 1 space after&hellip;",
		"keywords": ["character","configuration","configure","homebrew","newline","pandoc","script","whitespace","attribute","building","collapses","configuration","consistent","converts","ensures","extension","feedback","fixes","fixup","flexible","github","homebrew","inline","installation","keeping","kramdown","liberal","linux","markdown","normalizes","pandoc","python","resets","stdin","stdout","tables","tools","trims","usage","welcome","wraps","action","align","aligns","anyone","appreciated","available","before","behavior","binaries","blank","bloat","block","blockquote","blocks","breaks","build","building","bullet","checkbox","columns","command","common","complexity","comprehensive","config","configured","consecutive","considered","consistent","consistently","contributions","curly","currency","customize","dashes","decided","defaults","definition","details","determined","developed","differ","different","directly","disabled","display","doesn","doing","ellipses","emoji","enabled","endings","everywhere","exact","example","except","extension","external","feature","features","fenced","files","fixup","formatter","formatting","fully","functionality","fuzzy","generating","global","great","guillemets","handles","happen","haven","headerless","headers","headline","horizontal","ideas","identifier","indentation","independently","inline","install","installing","issues","italic","itself","language","level","links","linter","linters","lists","lives","lowercase","macos","markdown","marker","markers","match","matched","matching","maybe","mdash","multi","multiple","names","needs","normalization","opinions","ordered","output","overwrite","perfectly","performs","philosophy","pipeline","pipelines","precedence","preferences","preserves","preserving","project","properly","quick","quotes","relaxed","release","renumber","requests","roadmap","rsquo","rules","sense","separate","similar","solves","source","space","spaces","spacing","spans","specific","spellcheck","standalone","standardize","standardizing","starting","straight","strong","style","styles","swayed","table","tables","takes","tastes","think","thought","tools","trailing","typography","typos","useful","using"]
	},{
		"title": "Howzit Script Helpers",
		"url": "/2026/01/06/howzit-script-helpers/",
		"tags": ["automation","features","howzit","logging","markdown","productivity","scripting"],
		"date": "Jan 6<span>th</span>, 2026",
		"ts": "1767710520",
		"summary": "One of the things I love about Howzit is how it bridges the gap between simple task lists and full automation. You can write quick (or complex) scripts right in your build notes and, with the latest updates, they can communicate back to Howzit in useful ways. The latest updates make this even easier with automatically-injected helper scripts and some powerful new directives. The first thing I did was a major overhaul of the way Topics are processed. It now \"streams\" the topics in a sequential order, reevaluating conditions and variable substitutions after each executable directive or block is run. That means that the variables you pass from inside of run blocks can be used to control if/else logic in the rest of the topic being run, and it makes variables immediately available in the next task in the topic. Previously you would have had to incorporate multiple topics to use the variables effectively. Now they work the way you would expect in any scripting environment. (Yes, I&rsquo;ll apply this idea to Bunch soon, too). When you write a run block (those fenced code blocks with as the language), Howzit automatically detects your script&rsquo;s interpreter from the hashbang and injects helper functions. No setup required &mdash; just start using them. Here&rsquo;s what happens behind the scenes: Howzit sees your hashbang, figures out you&rsquo;re using bash (or Ruby, Python, Fish, etc.), and automatically loads the appropriate helper script. The helpers are installed in and made available via the environment variable. By the way, Howzit now runs out of instead of . It will automatically migrate files as necessary, with confirmation. You can force a migration with . The same helpers work in Ruby, Python, Fish, and other languages—just with syntax that matches each language. In Ruby, it&rsquo;s and . In Python, it&rsquo;s and . You get the idea. Sometimes you want verbose output during development, but quieter logs in production. The directive lets you control which messages from your scripts actually get displayed. Log levels work like you&rsquo;d expect: shows everything, shows informational messages and above, shows warnings and errors, and only shows errors. You can change the log level multiple times throughout a topic: This is especially useful when you have scripts that output a lot of debug information. Set the log level to or and you&rsquo;ll only see what matters. Variables are super useful for making your build notes dynamic. You&hellip;",
		"keywords": ["build","developer","notes","tools","automatic","branch","build","build","bunch","checking","command","controlling","deploy","deployment","development","howzit","helper","hopefully","howzit","injection","matters","output","previously","production","putting","python","status","support","script","setting","sometimes","starting","substitution","together","topics","version","variables","verify","abbrev","above","adapt","apply","automatic","automatically","automation","available","backticks","basic","becomes","before","behind","between","block","blockquote","blocks","boilerplate","brettterpstra","bridges","build","cascade","change","check","class","combines","command","commands","communication","completed","complex","conditional","conditions","config","confirmation","control","controlling","controls","couple","debug","decide","deploy","deployment","describe","detects","development","directive","directives","directly","displayed","dynamic","easier","effectively","environment","error","errors","especially","everything","example","executable","execute","expect","failed","features","fenced","figures","files","first","force","formats","friction","functions","github","gives","happens","hashbang","helper","helpers","highlight","highlighter","howzit","https","incorporate","information","informational","injected","injection","injects","inside","installed","interesting","interpreter","keeping","language","languages","latest","ldquo","leaving","level","levels","lists","loads","local","logger","logging","logic","major","makes","making","markdown","matches","matters","mdash","messages","migrate","migration","multiple","necessary","noise","notes","output","overhaul","overview","parse","plaintext","possible","powerful","practical","print","process","processed","production","project","projects","putting","quick","quieter","rdquo","recent","reevaluating","release","remember","required","right","rouge","rsquo","scenes","script","scripting","scripts","sequential","setting","setup","share","shows","simple","simpler","simplicity","staging","status","straightforward","streams","stripped","stuff","substituted","substitution"]
	},{
		"title": "Improved Apex Xcode integration",
		"url": "/2026/01/05/improved-apex-xcode-integration/",
		"tags": ["developer","macos","markdown","swift","xcode"],
		"date": "Jan 5<span>th</span>, 2026",
		"ts": "1767621600",
		"summary": "I&rsquo;ve been working on making Apex (my ultimate Markdown processor) easier to integrate into Xcode projects, and I&rsquo;m excited to share what&rsquo;s new. The biggest change is full Swift Package Manager (SPM) support, which makes adding Apex to your project as simple as clicking a button in Xcode. While Apex is still in a 0.x state, I don&rsquo;t suggest it be used in production, but if developers want to start testing it out in an application scenario, it should be easy to load in a Mac or iOS app. Once it gets to 1.0, it will be a lot less likely to have breaking changes, and the API won&rsquo;t change in the 1.x series. I don&rsquo;t foresee many, if any, changes to the API moving forward, but we&rsquo;ll see how reception goes and what feedback arises. The easiest way to add Apex to your Xcode project now is through Swift Package Manager. Just open your project, go to the Package Dependencies tab, and add the Apex repository. Xcode handles the rest. That&rsquo;s it. No framework dragging, no manual linking, no build configuration tweaks. SPM takes care of everything. The package supports both macOS 10.13+ and iOS 11+, so you can use Apex in your iOS apps too. I&rsquo;ve bundled libyaml as part of the package to make iOS support work seamlessly, with worrying about system library dependencies. If you prefer the traditional framework approach, that still works too. The CMake build now includes a module map in the framework, which means Swift can import the C API directly if you need it. The framework build is still the way to go if you&rsquo;re integrating with existing CMake projects or need more control over the build process. The framework gets installed to by default, or you can customize the install location. I&rsquo;ve improved the Swift API wrapper to make it more idiomatic. The struct now has a public initializer, so you can create options instances directly: The bridging between Swift and Objective-C has been cleaned up too. All the category methods on are now properly accessible from Swift, so you get the full API surface without any awkward workarounds. If you need to use the C API directly from Swift, there&rsquo;s now a module map that makes it straightforward: This is useful if you need fine-grained control or want to use features that aren&rsquo;t exposed through the higher-level Swift API yet. I&rsquo;ve included a test script () that creates a temporary test project and verifies everything works. It does a&hellip;",
		"keywords": ["framework","iphone","languages","library","markdown","markup","access","apexmarkdown","apexoptions","build","cmake","dbuild","dependencies","direct","framework","framework","frameworks","hello","integration","learn","library","manager","markdown","module","nsstring","options","package","support","swift","testing","while","world","xcode","access","accessible","adding","apexhtml","approach","arises","autocorrect","awkward","basic","between","biggest","breaking","bridging","build","builds","bundled","button","category","change","changes","class","clean","cleaned","clicking","closest","cmake","confident","configuration","configure","control","conversion","correctly","count","create","creates","customize","default","dependencies","developers","different","direct","directly","document","doesn","dragging","easier","easiest","emoji","enabled","everything","excited","exposed","features","feedback","foresee","forgiving","framework","generateheaderids","generation","github","grained","handles","higher","highlight","highlighter","https","idiomatic","import","improved","improvement","improvements","included","includes","initializer","install","installed","integrate","integrating","integration","interested","issues","language","latest","level","library","libyaml","likely","linking","location","macos","makes","making","manager","manual","markdown","match","methods","modes","module","moving","options","package","plaintext","points","prefer","process","processor","production","project","projects","properly","public","quality","ready","reception","release","releases","repository","rocket","rouge","rsquo","scenario","scratch","script","seamlessly","series","share","simple","small","standalone","straightforward","struct","suggest","suggestions","support","supports","surface","swift","syntax","system","takes","temporary","testing","tests","through","traditional","tweaks","ultimate","unified","useful","verifies","whole","workarounds","working","works","worrying","wrapper"]
	},{
		"title": "How about a Markdown Web?",
		"url": "/2026/01/02/how-about-a-markdown-web/",
		"tags": ["brainstorming","markdown","webdev"],
		"date": "Jan 2<span>nd</span>, 2026",
		"ts": "1767376800",
		"summary": "I often come up with ideas in the hazy half-dream state before I wake up. Recently I was thinking about exactly how shitty the web has become. And also about how much I love plain text formats like Markdown. So what about a Markdown Web? The idea is harkening back to the dawn of the web, but instead of basic HTML, everything is Markdown. The rendering is client side (with some plugins for extensibility) and the user gets to decide how the whole web looks simply by choosing a theme for their browser. All script and style tags are stripped, no hosted ads, no tracking. Sites can still run sponsors and use affiliate links, but banner ads are gone. I know that a lot of the web depends on ads to survive. There have been a lot of micropayment options, and I think something like that could work, replacing the ad-based model entirely. Everything is paywalled, but at very affordable rates. That would require a lot more central processing than I&rsquo;ve brainstormed thus far, so I&rsquo;m leaving it as an open question. I&rsquo;m envisioning this as running on the same servers the web currently exists on, not building some independent blockchain web or anything. Although I&rsquo;m open to brainstorming on that. I&rsquo;m posting this mind map in the hopes that it will start a conversation. Let me know what projects you know already exist around this, what you think it would require, and what your own imagination for a better web looks like. Add a comment to this post to start a conversation on the forum. Just thinking out loud here. Let me know what you think",
		"keywords": ["banner","blocking","enshittification","although","center","everything","jekyll","markdown","mindnode","recently","reset","sites","viewer","affiliate","affordable","banner","based","basic","before","blockchain","brainstormed","brainstorming","browser","building","central","choosing","client","comment","conversation","courtesy","decide","depends","dream","entirely","envisioning","everything","exist","exists","extensibility","formats","forum","harkening","hopes","hosted","ideas","imagination","independent","leaving","links","looks","micropayment","model","often","options","paywalled","plugins","posting","potential","processing","projects","rates","rendering","replacing","rsquo","running","script","servers","shitty","simply","sponsors","stripped","style","survive","theme","think","thinking","tracking","whole"]
	},{
		"title": "Additional Pandoc features for Apex",
		"url": "/2026/01/01/additional-pandoc-features-for-apex/",
		"tags": ["features","linking","markdown","pandoc"],
		"date": "Jan 1<span>st</span>, 2026",
		"ts": "1767301200",
		"summary": "Apex has always supported Kramdown-style IAL (Inline Attribute Lists), but I&rsquo;ve been steadily adding more Pandoc compatibility. The latest release brings several new features that make Apex work better with Pandoc-style markdown while maintaining backward compatibility. Table captions now support three different formats. You can use the existing and syntax, plus the new Pandoc-style format: Even better, IAL attributes in table captions are now extracted and applied to the table element itself. So you can do things like: This applies both the and attributes directly to the element, not just the caption. One of the biggest changes is full support for Pandoc-style IAL syntax without the colon prefix. Where you used to need , you can now use in all contexts: Block-level IALs after headings, paragraphs, and other blocks Inline IALs on links, images, emphasis, and other inline elements Pure IAL paragraphs Table captions Both formats work, so your existing Kramdown documents continue to work while new Pandoc-style documents are fully supported. Pandoc&rsquo;s fenced divs are now supported in unified mode (enabled by default). You can create custom block containers with attributes: Fenced divs support nesting, attributes, and all the usual IAL features. You can control them with the and command-line flags. The syntax converts to . It supports all IAL attribute types—IDs, classes, and key-value pairs—and processes markdown inside the spans. Reference links take precedence, so if matches a reference link definition, it stays a link. Otherwise, it becomes a span. Bracketed spans are enabled by default in unified mode, and you can control them with and flags. This means you get clean, semantic HTML output that works well across different contexts. Reference image definitions also now preserve title attributes, so ) now works correctly, and IALs are properly stripped from output even when parsing fails, preventing raw IAL syntax from appearing in your HTML. All of these features work together seamlessly. You can mix Kramdown and Pandoc syntax in the same document, use IALs everywhere, and get clean, semantic HTML output. The test suite has been expanded to cover all these new features, so everything should work reliably. Check out the latest release for full release notes. And if you haven&rsquo;t tried Apex yet, check out the Apex project and help me build the ultimate Markdown processor",
		"keywords": ["element","languages","markdown","markup","pandoc","apexmarkdown","attribute","attributes","block","bracketed","caption","captions","check","decimal","detection","everywhere","fenced","flexible","image","inline","kramdown","lists","markdown","pandoc","percentages","pixel","smarter","spans","style","table","thanks","title","where","across","adding","alert","appearing","applied","applies","attribute","attributes","backward","becomes","biggest","block","blocks","bracketed","brettterpstra","brings","build","caption","captions","changes","check","class","classes","clean","codebase","colon","command","compatibility","containers","contexts","continue","control","conversion","convert","converts","correctly","cover","create","custom","default","definition","definitions","detection","different","directly","document","documents","element","elements","emphasis","enabled","enhanced","everything","everywhere","expanded","extracted","fails","features","fenced","flags","flexible","follows","format","formats","fully","github","haven","headings","height","highlight","highlighter","https","image","images","improved","includes","inline","inside","integers","issues","itself","language","latest","level","links","maintaining","markdown","matches","nesting","notes","output","pairs","pandoc","paragraphs","parsing","photo","pixel","plaintext","precedence","prefix","preventing","processes","processor","project","projects","properly","release","releases","reliably","rouge","rsquo","rules","seamlessly","semantic","several","significantly","simple","smarter","somelinguist","spaces","spans","stays","steadily","stripped","style","styling","suffix","suggestions","suite","support","supported","supports","syntax","table","throughout","thumbnail","title","together","tried","types","ultimate","unified","units","using","value","values","warning","while","width","works"]
	},{
		"title": "Howzit with conditional blocks",
		"url": "/2026/01/01/howzit-with-conditional-blocks/",
		"tags": ["automation","developer","howzit","logging","markdown","productivity","scripting","terminal"],
		"date": "Jan 1<span>st</span>, 2026",
		"ts": "1767281640",
		"summary": "Happy New Year! I spent some time this morning developing some features for Howzit that I think will be really useful (at least for me). Howzit is my tool for documenting my project structure/build/deploy/CI methods and instructions, with the ability to execute code from the Markdown documentation. I use it in every project I create, and it makes it really easy to come back to a project where I&rsquo;ve forgotten exactly how it works. For example, every project has a \"Deploy\" topic where I detail the steps for deploying/publishing. In any project, I can type and get the instructions, and will just execute my automated deploy scripts. Scripts can now communicate back to Howzit while they&rsquo;re running. This lets scripts send log messages and set variables that can be used in subsequent tasks or conditional blocks. The communication happens through a temporary file. Howzit sets the environment variable to point to this file, and your scripts can write to it using a simple format: Variables set by scripts are merged into Howzit&rsquo;s named arguments, so they&rsquo;re available for variable substitution () in subsequent tasks and can be used in conditional blocks. Log messages are displayed through Howzit&rsquo;s console logger at the appropriate log level. This is particularly useful for scripts that need to communicate their status or set flags that affect later tasks. See the Script-to-Howzit Communication wiki page for complete details and examples. Howzit now supports conditional blocks, so you can include or exclude content and tasks based on conditions. Use and directives to control what appears in your build notes. Conditions support various string comparison operators. The newest addition is the fuzzy match operator , which matches if the search string&rsquo;s characters appear in order within the target string. For example, matches because the characters f, f, and y appear in order. Other operators include for exact equality, for contains, for starts with, for ends with, and for regex matching. See the Conditional Blocks wiki page for details on all comparison operators. The file path can be a literal path or a variable from metadata, named arguments, or environment variables. This makes it easy to check version files, configuration files, or any other file content as part of your conditional logic. Howzit also supports special conditions like , , , , and . You can even check the current working directory with using string&hellip;",
		"keywords": ["build","development","notes","basic","blocks","check","communication","comparison","conditional","conditions","contents","deploy","happy","howzit","markdown","operators","script","scripts","special","string","variables","ability","added","advanced","appear","appears","arguments","automated","available","based","because","blocks","branches","build","characters","check","communication","comparison","conditional","conditions","configuration","console","contains","content","contents","control","couple","create","deploy","deploying","detail","details","developing","development","directives","directly","directory","displayed","documenting","enjoy","environment","equality","exact","example","examples","execute","features","files","flags","forgotten","format","fuzzy","general","happens","instructions","later","level","literal","logger","logic","makes","match","matches","matching","merged","messages","metadata","methods","morning","multiple","named","newest","notes","operator","operators","particularly","point","project","publishing","regex","rsquo","running","script","scripts","search","simple","smooth","special","spent","starts","status","steps","straightforward","string","structure","substitution","support","supports","syntax","target","tasks","temporary","think","through","topic","types","useful","using","variable","variables","various","version","where","while","within","working","works","write"]
	},{
		"title": "Markdown to HTML Emails with multiple templates",
		"url": "/2025/12/30/markdown-to-html-emails-with-multiple-templates/",
		"tags": ["design","email","markdown","mdtosendy","scripting"],
		"date": "Dec 30<span>th</span>, 2025",
		"ts": "1767124800",
		"summary": "I&rsquo;ve been working a bit more on mdtosendy, my Ruby script for converting Markdown to email-ready HTML, and recently added a multi-template system that makes it much more flexible for managing different email designs. To read more about the inspiration and initial development of mdtosendy, see the blog post I wrote a couple of days ago. Originally, used a single set of template files in . If you wanted different styling or configuration options for different types of emails, you&rsquo;d have to manually swap files or maintain multiple config directories. Not ideal. Now you can create multiple templates, each in its own directory under . Each template can have its own HTML template, CSS file, and configuration. Even better, you can create child templates that inherit from a parent. This is perfect when you have a base design but want variations: You can override specific settings in the child&rsquo;s config, and if you don&rsquo;t provide HTML or CSS files, it automatically uses the parent&rsquo;s. Base config () - Your Sendy API settings, default list IDs, etc. Template config () - Template-specific overrides Child template config - Overrides parent template config Each layer can override the previous, so you can have base settings for Sendy, template-specific list IDs, and child-specific styling tweaks. It&rsquo;s much easier to iterate on designs when you can edit CSS and see changes immediately in the browser. While building this, I also added support for button variants. You can now use: If you&rsquo;re upgrading from an older version, the script automatically migrates your existing template files to on the first run, so nothing breaks. The multi-template system makes much more flexible for managing different email designs, whether you need completely different templates or just variations on a theme. Check out the GitHub repo for the latest script and details",
		"keywords": ["sendy","templates","another","backwards","button","check","child","compatibility","configuration","creating","development","directories","github","hierarchy","inherits","linked","markdown","originally","overrides","problem","proper","sample","sendy","solution","template","templates","variants","while","added","aliases","applies","automatically","blank","breaks","browser","building","button","changes","child","classes","completely","config","configuration","content","converting","copied","couple","create","creates","default","design","designs","details","detects","development","different","directories","directory","easier","elements","email","emails","exist","files","first","flexible","generates","ideal","inherit","initial","inlined","inspiration","iterate","latest","layer","layers","looks","maintain","makes","managing","manually","matches","mdtosendy","migrates","multi","multiple","nothing","older","options","override","overrides","parent","ready","recently","refresh","rsquo","script","settings","showing","simple","single","specific","styles","styling","support","system","table","template","templates","theme","tweaks","types","under","upgrading","using","variant","variants","variations","version","wanted","working","works","wrapper","wrote"]
	},{
		"title": "Apex Inline Attribute Lists Update",
		"url": "/2025/12/30/apex-inline-attribute-lists-update/",
		"tags": ["markdown"],
		"date": "Dec 30<span>th</span>, 2025",
		"ts": "1767109380",
		"summary": "I&rsquo;m excited to share that Apex version 0.1.41 has comprehensive support for Inline Attribute Lists (IALs), including inline IALs for span-level elements, key-value pairs, and Attribute List Definitions (ALDs). This brings Apex&rsquo;s IAL support to full feature parity with Kramdown. In case you haven&rsquo;t been keeping up, Apex is my universal Markdown processor project. The goal is to create one Markdown processor that incorporates all the best features from other Markdown processors, like Pandooc, Kramdown, Maruku, MultiMarkdown, and more. One processor to rule them all. Learn more on the wiki. Inline Attribute Lists are a Kramdown extension (inspired by Maruku) that let you add HTML attributes (IDs, classes, and custom key-value pairs) directly to Markdown elements. Instead of dropping into raw HTML every time you need to add a class or ID, you can use a simple syntax. Previously, IALs only worked for block-level elements. Now you can apply attributes to links, images, emphasis, strong text, and code spans—all inline within your paragraphs. All three headers in the example above get the same set of attributes from the ALD definition on the last line. Much cleaner than repeating attributes everywhere! Both the italic and bold elements get their respective classes, even when nested. The implementation uses element indexing to correctly match attributes to elements, even when multiple elements share the same content (like two links with the same URL). This ensures that each element gets the right attributes based on its position in the document. For inline elements, the processing is recursive, so it handles nested structures correctly. The IAL syntax is extracted from the text nodes and attributes are attached to the corresponding AST nodes before HTML rendering. IALs are available in Kramdown and unified modes. In unified mode (the default), they&rsquo;re enabled automatically. To use Kramdown mode: The documentation covers all the edge cases, shows examples for every element type, and explains both block-level and inline IAL syntax in detail. Grab the latest version of Apex and start adding attributes to your Markdown! Homebrew is updated, just follow the Installation instructions in the README. See the release notes for the latest details. Whether you&rsquo;re styling links, adding IDs for anchor navigation, or using ALDs to maintain consistent styling, IALs make it easy to add HTML attributes without leaving the&hellip;",
		"keywords": ["attribute","definitions","inline","kramdown","lists","apexmarkdown","attribute","attributes","beyond","definitions","elements","external","guide","header","heading","here&#39;s","homebrew","important","inline","installation","kramdown","learn","lists","markdown","maruku","multimarkdown","nested","pairs","pandooc","paragraph","previously","quick","readme","support","syntax","tooltip","usage","value","works","above","accent","across","adding","anchor","appear","apply","attached","attribute","attributes","automatically","available","based","before","blank","block","brings","button","class","classes","cleaner","comfort","comprehensive","consistent","content","correctly","corresponding","covers","create","created","custom","default","define","definition","definitions","detail","details","directly","document","double","dropping","element","elements","emphasis","enabled","ensures","everywhere","example","examples","excited","explains","extension","extracted","feature","features","github","great","guide","handles","haven","headers","heading","highlight","highlighter","https","images","implementation","implemented","important","including","incorporates","indexing","inline","inside","inspired","installation","instructions","italic","keeping","kramdown","language","latest","leaving","level","links","lists","looks","maintain","maintaining","markdown","match","modes","multiple","navigation","nested","nodes","nofollow","notes","pairs","paragraph","paragraphs","parity","plaintext","position","primary","processing","processor","processors","project","quoted","quotes","readme","recursive","release","releases","rendering","repeating","respective","reusable","right","rouge","rsquo","section","separately","share","shows","simple","single","spans","strong","structures","style","styled","styling","support","syntax","target","times","title","trickier","unified","universal","unquoted","updated","usage","using","value","values","version","whats","within","worked","works","wrapper"]
	},{
		"title": "Brett's Favorites 2025",
		"url": "/2025/12/29/bretts-favorites-2025/",
		"tags": ["accessibility","answered","bunch","developer","devonthink","drafts","email","fonts","hookmark","iphone","iterm","keyboard","leaderkey","linking","macos","mailmate","markdown","marked","mastodon","nvultra","plugin","productivity","reading","search","service","setapp","support","taskpaper","tools","twitter","writing"],
		"date": "Dec 29<span>th</span>, 2025",
		"ts": "1767021840",
		"summary": "It&rsquo;s time for my yearly roundup of my favorite tools, hardware, and projects. I&rsquo;m combining everything in one post this year. You might find something new, or you might just have your own preferences validated. Feel free to add your own suggestions in the comments! It&rsquo;s been an interesting year. I lost my job in April, and have spent the remainder of the year furiously coding, mostly on Marked 3. A lot of my top picks for the year are a result of that. Cursor As skeptical as I am about AI in the world in general, I&rsquo;ve almost mastered getting great results from Copilot and Cursor, Cursor being my tool of choice. Claude is good, but I like the interface of Cursor better. I should also mention cmux, which has been helpful, but a lot of what I originally liked about it has already been incorporated into Cursor. Cotypist A little more AI. This one offers predictive text anywhere you&rsquo;re typing. It&rsquo;s very intelligent and generally completes my words and sentences like it&rsquo;s reading my mind. It&rsquo;s especially useful in Cursor, where it completes variable names and writes prompts basically magically for me. Tower More great improvements this year from my favorite Git client. The UI keeps getting better. They added support for Graphite (stacked PRs), plus other advanced functionality. Tower even released a rebuilt version of git-flow (git-flow-next) One thing I discovered is that if you paste a full commit message into the commit subject field, with the message on the first line, a blank line, and then the commit body, it will automatically format it for you, breaking the body into the notes field. I have Cursor write my specialized changelog commits for me, then just paste them into Tower, where I have full control over what gets staged and committed. Kaleidoscope Still my favorite diff tool. I love it for resolving merge conflicts, but also for things like directory comparison/merging and image diffing. The image diff in Kaleidoscope got a huge update this year and is pretty spectacular. KindaVim This nifty utility lets you enter a limited \"Vim mode\" in any text field. I use it everywhere, allowing me to use Vim navigation when I&rsquo;m typing in places like nvUltra or iTerm. You can use and to move to word boundaries, and to jump to characters, and even or to delete text. and work for returning to \"insert mode\" (ending Vim navigation), as well as and . LeaderKey Another really handy&hellip;",
		"keywords": ["github","pixelfed","store","usability","action","aeukcvbpy","aldente","alexa","allison","amazon","among","analytics","another","answer","apache","apexmarkdown","apple","arcade","bettertouchtool","boltai","brett","built","calendar","charging","christopher","claude","cleanshot","coderunner","coming","command","commonmark","condo","config","copilot","cotypist","criticmarkup","cursor","devonthink","default","downie","drafts","editor","email","engine","faster","fathom","favorite","fletcher","folder","forklift","fzeuy","gambl","glass","google","graphite","great","hardware","homepod","hookmark","houdahspot","howzit","hyper","iconjar","impressia","instagram","jekyll","kaleidoscope","keycue","keyboard","kindavim","kramdown","launchbar","leaderkey","links","liquid","living","macbook","macros","maestro","mailmate","management","manager","markdown","marked","mastodon","merge","mindnode","monsters","multimarkdown","noteplan","omnifocus","paletro","pandoc","paprika","party","permute","pikapods","pinball","pinboard","pixelfed","platform","premium","previews","projects","rkodvk","reader","readwise","recipe","reimagined","replacement","researching","ripple","sanebox","sanelater","scrivener","search","searchlink","setapp","share","sheridan","shift","similar","software","soulver","spark","startech","station","studio","super","synology","taskpaper","tender","terminal","terpstra","threads","threes","timing","tower","trickster","twitter","typeface","ulysses","umami","unite","updated","viewer","wallendjack","white","windows","wordpress","workflow","ability","access","accessible","account","achieve","actions","activation","active","actively","added","advanced","affiliate","ahead","allowing","allows","almost","analytics","annotated","another","answer","anymore","anyway","anywhere","apache","apple","articles","aside","asleep","assigning","assistant","assistants","attach","automatically","automation","available","awesome","backlink","barely","based","battery","bearandglass","beast","because","bedside","believe","between","bibliography","black","blank","bloated","bookmark","bookmarks","bought"]
	},{
		"title": "Join the Marked 3 Beta!",
		"url": "/2025/12/26/join-the-marked-3-beta/",
		"tags": ["marked"],
		"date": "Dec 26<span>th</span>, 2025",
		"ts": "1766772000",
		"summary": "I&rsquo;m thrilled to announce a public β for Marked 3. I&rsquo;m 🙏 this will be a short 🏃 and it will make it to public 🚀 before my unemployment benefits 👻. So if you&rsquo;re interested in helping me squash some 🪲, please come 🥳! Once I have some assurance that it&rsquo;s not all horribly broken, I&rsquo;m going to be pushing pretty hard to get the final release out. I could really use the income right now, and I think the last 9 months of work will be worth it to a lot of users&hellip; I&rsquo;ve been running this beta as a limited release for a month now and I think I have all the biggest bugs squashed. I need more eyes on it, though, because of the sheer quantity of new features, many of which apply to a limited subset of users. Take a look at my previous post on the new version for in-depth details about the new features that you might want to test out. Here are the highlights, with a couple of additions: Custom Rules editor for conditional custom processors and built-in transformations Completely revamped DOCX handling, both import and export Revamped Scrivener rendering Revamped CriticMarkup handling Markdown Dingus Style Stealer Comments/Footnotes Sidebar navigation with back/forward navigation and backlinks in the same directory Style Manager, plus new Gallery and Editor Improved, keyboard-driven export panel Improved Word Repetition view with floating panel showing top-used words and allowing exclusion There&rsquo;s a bunch more. The only feature from the \"quick look\" post that didn&rsquo;t make it into this release is the ability to put footnotes on the same page as they occur in PDF/Print export. That feature needs more work to be usable, but it&rsquo;s definitely on my list to do after I get the initial v3 out. Subscribers will automatically get this functionality when it&rsquo;s added. The current roadmap can be seen in this poll, where you&rsquo;re welcome to order the features based on your own priorities and influence where my time goes from here. Development has been feverish since April and there&rsquo;s enough new stuff that not all of it has been as thoroughly tested as I would like. So get the beta, use it in all the ways you want to, and let me know what you run into. Use Help->Report an Issue to create a bundle with your config settings Adjust the subject line to a relevant title for your feedback Include screenshots and source files (Markdown, Word, etc.) Email me directly at the&hellip;",
		"keywords": ["markdown","preview","testflight","adjust","anonymous","comments","completely","criticmarkup","custom","development","dingus","editor","email","footnotes","gallery","improved","manager","markdown","marked","paddle","paginated","print","repetition","report","revamped","rules","scrivener","setapp","sidebar","stealer","store","style","subscribers","testflight","visit","ability","active","added","additions","address","allowing","announce","apply","assurance","automatically","available","backlinks","based","because","before","benefits","biggest","blockquote","brettterpstra","broader","broken","built","bunch","bundle","button","changelog","charged","class","conditional","config","contact","contacting","context","couple","crash","create","custom","definitely","depth","detail","details","direct","directly","directory","discount","documents","doing","driven","editor","email","enough","enter","exclusion","experiencing","explanation","export","feature","features","feedback","feverish","field","files","first","floating","followup","footnotes","forum","functionality","generation","going","handling","having","hellip","helping","highlighter","highlights","horribly","https","import","inbox","income","influence","initial","install","interested","intermediate","invite","issues","joining","keyboard","language","ldquo","limited","macos","mailing","maintain","marked","markedapp","mtjqohbxa","navigation","nearly","needs","notes","occur","occurred","offer","outside","panel","particular","particularly","plaintext","possible","priorities","private","process","processors","public","pushing","quantity","quick","range","rdquo","release","relevant","rendering","report","reports","respond","response","revamped","reward","right","roadmap","rouge","rsquo","running","screenshots","settings","sheer","short","showing","shows","since","solve","source","squash","squashed","strong","stuff","subscribe","subset","supplied","support","taken","tested","testers","testing","think","thoroughly","thrilled","through","title","transformations","trial","unable","unemployment","usable","users"]
	},{
		"title": "Create Email Campaigns from Markdown",
		"url": "/2025/12/26/create-email-campaigns-from-markdown/",
		"tags": ["email","markdown","mdtosendy","scripting","webdesign","writing"],
		"date": "Dec 26<span>th</span>, 2025",
		"ts": "1766757600",
		"summary": "I&rsquo;m sure some mailing list services handle Markdown to HTML conversion, but I use Sendy, and it doesn&rsquo;t. It doesn&rsquo;t really even have a decent WYSIWYG editor. I wanted to create good-looking emails while just writing in Markdown, like I do everywhere else. Email design is a special kind of hell. While the rest of the web has moved on to modern CSS, flexbox, and grid layouts, email clients are still stuck in the dark ages. You&rsquo;re forced to use table-based layouts, inline CSS styles, and work around the limitations of Outlook (which still renders emails using the Word HTML engine from 2007). It&rsquo;s enough to make you want to just send plain text and be done with it. But I love writing in Markdown: use a few simple formatting markers, and let the tools handle the rest. I don&rsquo;t want to deal with WYSIWYG editors or fight with HTML table structures just to send an email newsletter. So I built a solution: a Ruby script called that converts simple Markdown files into email-ready HTML campaigns. It handles all the painful parts—converting your content into table-based layouts, inlining CSS styles, and ensuring compatibility across email clients—while you just focus on writing. Your Markdown gets converted to HTML CSS rules from a stylesheet get converted to inline styles (because email clients strip out tags) Elements get wrapped in table structures for proper email client rendering Headings, paragraphs, lists, and images all get the proper email-friendly treatment Buttons are automatically converted to email-safe table-based buttons with fallback links The result is a clean HTML file that you can paste directly into any email service, or—if you&rsquo;re using Sendy—the script can automatically create and schedule campaigns for you. I&rsquo;ve been using Apex as my Markdown processor, and it works beautifully with this script. Apex supports inline attribute lists (IALs), which means you can create call-to-action buttons with just a simple syntax: That single line gets converted into a fully-styled email button with proper table structure, fallback text, and all the email client compatibility you need. No HTML, no CSS wrestling—just clean Markdown. But here&rsquo;s the thing: the script doesn&rsquo;t care which Markdown processor you use. All of the email-specific conversion—the table wrapping, the CSS inlining, the button creation—happens after the Markdown is converted to HTML. So you can use: The&hellip;",
		"keywords": ["email","marketing","newsletter","sendy","action","amazon","apexmarkdown","automatically","buttons","check","elements","email","flexible","github","great","headings","integration","kramdown","maintain","markdown","multimarkdown","newsletter","newsletters","optionally","outlook","processing","schedule","sendy","supports","wysiwyg","while","works","write","across","action","attribute","attributes","automatically","available","based","beautifully","because","block","brettterpstra","built","button","buttons","called","calls","campaign","campaigns","cheaper","class","clean","client","clients","command","compatibility","configure","content","control","conversion","converted","converting","converts","create","creation","decent","design","details","directly","doesn","draft","editor","editors","email","emails","engine","enough","ensuring","everywhere","example","fallback","favorite","fight","fighting","files","flexbox","flexible","focus","forced","formatting","friendly","frontmatter","fully","github","handle","handles","happens","heavy","height","highlight","highlighter","https","image","images","inline","inlining","input","install","installation","instructions","integration","language","layouts","lifting","limitations","links","lists","loading","looking","looks","mailing","markdown","markers","marketing","mdtosendy","media","modern","moved","needs","newsletter","noscript","original","output","painful","paragraphs","parts","paste","picture","plaintext","processing","processor","proper","publish","ready","recommendation","rendered","rendering","renders","rouge","rsquo","rules","schedule","scheduling","script","sendy","service","services","setup","showing","shows","simple","single","smoother","solution","source","special","specific","srcset","status","straight","strip","strong","structure","structures","stuck","stuff","style","styled","styles","stylesheet","styling","supports","syntax","table","takes","title","together","tools","treatment","ttscoff","uploads","using","version","versions","wanted","where","while","width","workflow","works","wrapped","wrapping"]
	},{
		"title": "Off (White) with gradients",
		"url": "/2025/12/25/off-white-with-gradients/",
		"tags": ["javascript","offwhite","webdesign"],
		"date": "Dec 25<span>th</span>, 2025",
		"ts": "1766671920",
		"summary": "Merry Christmas! I&rsquo;m all alone for the most part today (I&rsquo;m ok with it), so working on a few different projects. Here&rsquo;s my 4am accomplishment, such that it is. In the process of designing emails for the Marked 3 launch, I was using my Off (White) generator and found myself wishing I could easily make simple gradients. So I built that. Off (White) is a stupid thing I made back in April that helps you find subtle off-white or off-black colors. I&rsquo;ve found that for creating just-barely-off-white and -black colors, most slider setups were too finicky. So I just made an HSL slider bank that had a very limited range and wide sliders, allowing very exact color selections. When you check the new \"Gradient\" checkbox, a section appears with controls for creating a linear gradient. The gradient is automatically calculated from your selected color, creating a light end (15% lighter) and a dark end (15% darker) by default. The intensity slider lets you adjust how much lighter and darker the gradient ends are, from 0% to 50%. There&rsquo;s also an angle dial. Instead of just typing a number, you can click and drag the dial to set the gradient angle from 0 to 360 degrees. The dial provides visual feedback as you rotate it, and the angle input field stays in sync. The gradient CSS output includes both a fallback background color and the linear gradient, using and properties. This ensures better browser compatibility and provides a solid color fallback for older browsers. The output is formatted on two lines for readability, and there&rsquo;s a dedicated copy button that will copy the gradient CSS properties instead of just the color code. The gradient calculation uses HSL color space to adjust lightness values. The light end is calculated as (clamped to 100), and the dark end is (clamped to 0). This ensures the gradient always works within valid color ranges. Take it for a spin! I&rsquo;m 99% sure you won&rsquo;t have a use for it right now, but it might be worth bookmarking for the next time you need a subtle gradient",
		"keywords": ["color","colors","design","gradient","lightness","model","space","christmas","feature","gradient","marked","merry","output","white","works","accomplishment","adjust","allowing","alone","angle","appears","automatically","background","barely","black","bookmarking","browser","browsers","built","button","calculated","calculation","check","checkbox","clamped","click","color","colors","compatibility","controls","creating","darker","dedicated","default","degrees","designing","different","easily","emails","ensures","exact","fallback","feedback","field","finicky","formatted","found","generator","gradient","gradients","helps","includes","input","intensity","launch","light","lighter","lightness","limited","linear","myself","older","output","process","projects","properties","provides","range","ranges","readability","right","rotate","rsquo","section","selected","selections","setups","simple","slider","sliders","solid","space","stays","stupid","subtle","today","typing","using","valid","values","visual","white","wishing","within","working","works","worth"]
	},{
		"title": "Apex Updates - Accessibility, CSV Tables, and More",
		"url": "/2025/12/23/apex-updates-accessibility-csv-tables-and-more/",
		"tags": ["accessibility","markdown","multimarkdown","plugin"],
		"date": "Dec 23<span>rd</span>, 2025",
		"ts": "1766499120",
		"summary": "I&rsquo;ve been busy improving Apex with some great new features and fixes. CSV tables, aria labels, and more. Accessibility has been a focus, and I&rsquo;m happy to announce the new flag. When enabled, it adds ARIA labels and attributes throughout your HTML output to improve screen reader support. All of this happens without changing how your documents look—it&rsquo;s purely behind-the-scenes accessibility enhancement. When installing from Git sources, you&rsquo;ll get an interactive confirmation prompt since plugins execute code—safety first! The Homebrew installation process has been simplified. Apex now installs from precompiled universal binaries, so you no longer need CMake or Xcode build tools. Just: lets you inject JavaScript libraries. The argument to this flag can be a URL or shorthand keyword. I&rsquo;ve included shorthands for common ones: Supports: , , , , , , Note: These can&rsquo;t be used together—pick the approach that fits your workflow. These commands don&rsquo;t process Markdown syntax, they just combine multiple files (replacing include syntax) into a single document. By default this output goes to STDOUT, so you can pipe it back in to Apex (or any other CLI). Just add after the or run. Table captions now default to appearing below tables (use to change) Better detection of alignment separator rows Improved rowspan/colspan handling that correctly maps HTML positions to AST indices Support for per-cell alignment using colons (, , ) Multi-line cells using trailing backslashes Better handling of headerless tables and empty sections If a header row of a table starts with a blank cell, then the entire column becomes a header column, with the first cell in each row being a element. The system automatically detects whether you&rsquo;re using commas or tabs, handles alignment rows , and supports captions just like regular Markdown tables. An alignment row is a row containing just and characters (standard Markdown table alignment), or just the keywords , , , or ( = ). If this row is the first row, it creates a headerless table and adds alignment to each row. If it&rsquo;s the second row, then the first row becomes a row of elements. If a header row of a table starts with a blank cell, then the entire column becomes a header column, with the first cell in each row being a element. The system automatically detects whether you&rsquo;re using commas or tabs, handles alignment rows , and supports captions&hellip;",
		"keywords": ["homebrew","merge","multimarkdown","scripting","tables","accessibility","apexmarkdown","changelog","cmake","concatenates","dependent","document","download","embedding","features","fthelab","generated","gitbook","github","happy","header","homebrew","image","improved","improvements","injection","inline","installation","installing","javascript","kramdown","latest","markdown","merges","modes","multi","multimarkdown","options","plugin","renders","stdout","summary","script","support","supports","table","table","tables","unified","version","xcode","above","accessibility","adding","align","alignment","alpine","announce","appearing","appreciate","approach","argument","attributes","automatically","backslashes","becomes","behavior","behind","below","between","binaries","blank","block","blocks","build","building","button","caption","captions","cells","center","change","changelog","changes","changing","characters","check","class","colons","colspan","column","columns","command","commands","commas","comment","common","confirmation","consistent","contained","containing","content","contents","conveniences","conversion","convert","correctly","create","creates","csvtsv","default","dependent","depending","describedby","detection","detects","differently","directly","document","documents","easier","element","elements","embed","embedding","empty","enabled","encoding","enhancement","entire","execute","expansion","external","features","feedback","fenced","figure","files","first","fixed","fixes","fletcher","flexible","focus","github","great","handles","handling","happens","happy","header","headerless","height","highlight","highlighter","highlightjs","highlights","homebrew","howdoisplitamultimarkdowndocumentintoseveralparts","https","iterm","image","improve","improved","improvements","improving","included","index","indices","inject","injection","inline","inlines","install","installation","installing","installs","interactive","iterm","katex","keeps","keyword","keywords","label","labels","language","latest","libraries","links","longer","making","markdown","marker","mathjax","merge","mermaid","modern","modes","multi","multimarkdown","multiple","navigation","options","output","philosophy"]
	},{
		"title": "Fish: Send files to another iTerm pane",
		"url": "/2025/12/18/fish-send-files-to-another-iterm-pane/",
		"tags": [],
		"date": "Dec 18<span>th</span>, 2025",
		"ts": "1766064540",
		"summary": "For my subscribers, here&rsquo;s a Fish function for sending files from the current iTerm pane to another pane in the same tab. When working in Forklift or Path Finder, I love the ability to send files from one pane to the other with a keyboard shortcut when browsing in split pane mode. I wanted to replicate that in iTerm. This is written for Fish, but the AppleScript it uses can easily be repurposed for other shells",
		"keywords": ["applescript","function","management","&#39;cbff","&#39;https","&#39;paywall","applescript","content","finder","forklift","paywall","premium","register","subscribe","subscriber","ability","actions","another","brettterpstra","browsing","button","class","collected","config","container","content","contentid","cookiename","display","easily","files","fishshell","function","global","https","iterm","instance","keyboard","loads","login","member","message","onclick","overlay","paywall","paywallconfig","paywalllogin","placeholder","queue","registration","replicate","repurposed","rsquo","script","sending","serviceurl","shell","shells","shortcut","split","style","subscribe","subscribers","support","title","token&#39;","wanted","window","working","written"]
	},{
		"title": "Easier Gather CLI installation via Homebrew",
		"url": "/2025/12/16/easier-gather-cli-installation-via-homebrew/",
		"tags": ["gather","homebrew","markdown","terminal"],
		"date": "Dec 16<span>th</span>, 2025",
		"ts": "1765912080",
		"summary": "I&rsquo;ve updated the Homebrew formula for Gather to use binaries instead of requiring Swift to compile. This will make it much, much easier for most users to install it using Homebrew. In case you missed it, Gather is a tool I built a little while ago that does Readability/Markdownification of web urls. It&rsquo;s a local, command line version of Marky that tends to get even better results. This functionality is also built into Marked 3, but the Gather CLI allows for automating markdownification of urls in any pipeline. If you gave up on trying Gather because it was too complicated to install, and you have Homebrew set up, try it out again. The Swift requirement of the previous formula meant that you had to install the entire Xcode package in order to run . This should be a thing of the past now, with a signed universal binary that will just pop right into your bin folder. (I learned a lot while working on Apex and Homebrew.) Let me know if you still have issues! I&rsquo;ve been recommending Gather to users who run into failures with Marky, but installing it hasn&rsquo;t always been easy for non-developers. If you&rsquo;re not into Homebrew, you can still install with the PKG download below. Gather CLI v2.1.12 Download Gather CLI v2.1.12 A Frankenstinian combination of html2text and Arc90 Readability. This command line tool makes clipping web pages into Markdown text without ads and comments simple. Published 01/04/12. Updated 12/16/25. Changelog Donate &bull; More info&hellip",
		"keywords": ["command","install","interface","xcode","changelog","donate","download","frankenstinian","gather","homebrew","markdown","markdownification","marked","marky","published","readability","swift","updated","xcode","again","allows","automating","because","below","binaries","binary","built","clipping","combination","command","comments","complicated","developers","download","easier","entire","failures","folder","formula","functionality","hellip","iterm","install","installing","issues","learned","little","local","makes","markdownification","meant","missed","package","pages","pipeline","recommending","requirement","requiring","results","right","rsquo","signed","simple","tends","trying","universal","updated","users","using","version","while","working"]
	},{
		"title": "Apex gets extensible",
		"url": "/2025/12/16/apex-gets-extensible/",
		"tags": ["markdown"],
		"date": "Dec 16<span>th</span>, 2025",
		"ts": "1765902900",
		"summary": "Apex was designed to make using existing Markdown syntax from a range of tools (CommonMark, GFM, MultiMarkdown, Kramdown, mmark) easier &mdash; not to add a bunch of new or special syntax. Plugins allow you to add your own syntax and even entirely new tools to markdown generation, keeping the core focused while giving you the flexibility to extend it however you need. The new plugin architecture is a flexible system that lets you extend the core Markdown engine without patching the main binary. You can browse the full details, plugin types, and environment variables on the wiki&rsquo;s plugins page: Apex Plugins. The first \"official\" example is the plugin, which adds support for or -style inline Liquid markup that renders as semantic keyboard shortcuts, ordering and formatting based on Apple&rsquo;s guidelines. To install it: This now installs a precompiled binary from GitHub, so it no longer builds from source and does not require Xcode (just the usual Command Line Tools Homebrew expects). This clones the plugin (based on an entry/id in the directory) into your local Apex plugins directory and runs any optional post-install step defined in the plugin&rsquo;s . After installation, the plugin is automatically available whenever you run on your documents—no extra flags required. You can also install a plugin directly from a GitHub repository, so plugins can be distributed directly (this will result in a security warning when installing). Just run or just . You can use to show your locally-installed plugins as well as those available in the directory (which, right now, is only kbd). Apex does not enable plugins by default. Because they shell out and run external scripts, plugins can greatly increase the processing time, and I want to keep it snappy by default. To run with plugins, you need to include the flag when running, e.g. . There&rsquo;s a new setup that allows you to create a YAML configuration at and include a line like to always run plugins when you run . This is true for all possible command line options, and is equivalent to running (which parses and merges YAML or MMD metadata into every document it parses in that command). Plugin bundles let a single repository ship multiple related plugins behind one install. Instead of publishing separate repos for , , , and other documentation helpers, you can define them all in one using a array, each with its own , phase, and handler or regex. Apex treats each entry as an independent plugin&hellip;",
		"keywords": ["extensions","homebrew","plugins","processor","apexmarkdown","apple","because","build","bundles","command","commonmark","details","fapex","first","fthelab","github","homebrew","install","kramdown","liquid","looking","markdown","multimarkdown","organization","plugin","plugins","running","share","tools","xcode","above","active","added","allow","allows","architecture","array","author","automatically","available","based","behavior","behind","binary","browse","build","building","builds","bunch","bundle","bundles","button","central","class","clear","clones","command","common","community","config","configuration","create","default","define","defined","designed","details","development","directly","directory","distributed","document","documents","easier","engine","entire","entirely","entry","environment","example","examples","expects","extend","external","extra","families","feature","first","flags","flexibility","flexible","focused","formatting","generation","github","giving","greatly","group","grows","guidelines","handler","happens","hearing","helpers","highlight","highlighter","hitting","homepage","however","https","iterm","ideas","included","increase","independent","inline","install","installation","installed","installing","installs","iterm","keeping","keyboard","language","ldquo","little","lives","local","locally","location","longer","makes","markdown","markup","mdash","menubar","merges","metadata","mmark","multiple","mydocument","official","optional","options","ordering","organization","organize","parses","patching","phase","plaintext","plugin","plugins","possible","precompiled","prefpane","priority","processing","publishing","range","rdquo","redirects","regex","related","renders","repos","repository","requests","required","right","rouge","rsquo","running","runtime","scripts","security","semantic","separate","setup","share","shares","shell","shift","shortcuts","single","snappy","source","special","strong","style","submitting","support","syntax","system","thelab","theming","tools","treats","ttscoff","types","under","users","using"]
	},{
		"title": "So much new Apex stuff",
		"url": "/2025/12/14/so-much-new-apex-stuff/",
		"tags": ["developer","markdown","marked","multimarkdown","tools"],
		"date": "Dec 14<span>th</span>, 2025",
		"ts": "1765725120",
		"summary": "I&rsquo;ve added so much new stuff to my universal Markdown processor, Apex, that it&rsquo;s hard to count. It&rsquo;s developing quickly! In case you missed the announcement, Apex is my latest project &mdash; a command line tool and C library that combines the best of various Markdown tools, supporting syntax from CommonMark, GitHub Flavored Markdown, MultiMarkdown, Kramdown, mmark, Pandoc, and even Marked&rsquo;s own special syntax. The first and most important change is that I fixed multiple bugs that caused Apex to hang on some files. In all of my testing, it no longer chokes on any file, no matter how complex. And while the rendering speed is slower than plain , it&rsquo;s far faster than it was previously, and slots into the middle of the pack for efficiency, with about a 70ms render time on a complex document. I&rsquo;ve added bibliography and index support. Citations work with multiple types of bibliography files, and Apex handles syntax from both Pandoc and MultiMarkdown. And you can create automatic indices for your documents using mmark or TextIndex format (a cool project by Matt Gemmell with a clever syntax that I like a lot). Given that bibliography support is the #1 reason Marked users need to use Pandoc as an external processor, building citation support into Apex &mdash; as well as Pandoc metadata and other features &mdash; means a lot of users won&rsquo;t need an external processor at all. I&rsquo;m in no way trying to replace or replicate Pandoc entirely; it&rsquo;s a brilliant tool with a ton of capabilities that Apex does not aspire to to include. I just want to support the features that make the most sense for a universal Markdown tool. Almost all command line options can now also be controlled with metadata (YAML or MMD), allowing per-document control of options when operating on batches. It also means you can create a single configuration for Apex and then load it with something like , and all of the options defined in will be applied to . MultiMarkdown allows you to include metadata in a document with syntax. Apex supports this, and adds on to it by allowing \"transforms\" &mdash; string transforms like or , and array transforms like . Transforms also include date parsing and transformation with formatting, e.g. . This feature allows you to use metadata in a document, or common metadata across multiple files, to control text generation. I&rsquo;ve added some cool features to file inclusion, including \"&hellip;",
		"keywords": ["command","comment","element","expression","github","interface","metadata","pandoc","regular","added","address","advanced","again","almost","alpha","alphabetical","array","autolinking","automatic","bibtex","bibliography","boolean","change","changed","citation","citations","commonmark","comprehensive","control","definition","differentiates","discount","empty","fixed","flavored","french","gemmell","german","github","header","hierarchical","highlight","highlights","improved","improvements","inclusion","index","issues","kramdown","level","linux","markdown","marked","metadata","multimarkdown","nested","optimize","posix","pandoc","prefix","previously","processing","regular","relaxed","setext","spanish","string","stuff","superscript","support","textindex","transclusion","transform","transforms","underline","unified","writer","xcode","accept","across","added","adding","additions","address","addresses","addressing","adjust","algorithm","alias","allow","allowing","allows","alpha","alphanumeric","angle","announcement","appearing","applied","applies","appreciated","array","aspire","attribute","autolink","autolinking","autolinks","automatic","automations","available","awake","based","basename","batches","before","behavior","between","bibliography","binary","blank","block","boundaries","bracket","break","breaks","brilliant","broken","build","building","built","capabilities","capitalize","caused","chaining","change","changelog","characters","checking","chokes","citation","citations","clever","closing","cmark","colons","combines","comma","command","comments","common","compatibility","complex","comprehensive","configuration","contain","containing","contains","content","contribute","contributions","control","controlled","convert","correctly","count","create","created","creating","creation","custom","default","defined","definition","definitions","detected","detection","developing","development","different","directory","disable","disabled","document","documents","donations","downcased","download","dreaming","efficiency","elsewhere","email","emails","embed","enabled","enables","encode","enough","ensured","ensures","ensuring","entirely","entries","escape","eventually","example","exclusive","exits","expected","explicit","expression"]
	},{
		"title": "Introducing Apex: universal Markdown processor",
		"url": "/2025/12/06/introducing-apex-universal-markdown-processor/",
		"tags": ["linking","markdown","marked"],
		"date": "Dec 6<span>th</span>, 2025",
		"ts": "1765055220",
		"summary": "This is currently a work in progress, but I have a 0.1.0 release of a \"One Ring To Rule Them All\" Markdown processor published. The goal of Apex is to make it possible to write in any Markdown processor&rsquo;s syntax, be it Kramdown (with IALs), MultiMarkdown (with v6 extensions), CommonMark (with GFM extensions), or any syntax that uses parts of those processors. Apex defaults to a mode that combines the features of all of these, automatically adjusting to the syntax it finds. Where CommonMark is strict, Apex aims to be very permissive. While I advocate for clean, clear Markdown, you shouldn&rsquo;t have to worry whether the Markdown you wrote for GitHub is going to work on your blog, or whether syntax you used in Marked is going to work when you export from the command line. Speaking of Marked , yes, the ultimate goal of Apex is to have a Markdown processor option in Marked that&rsquo;s essentially universal. It will default to Apex and the user won&rsquo;t have to question why their Markdown from Obsidian isn&rsquo;t working in Marked, and I won&rsquo;t have to explain the differences between the processors anymore. Apex has a ways to go before it&rsquo;s stable enough for production integration like that, but it&rsquo;s already not far off. But I&rsquo;m also open sourcing it, so please feel free to contribute (any code contributors will be named in Marked&rsquo;s credits when it&rsquo;s integrated). Even if that just means filing Issues, any help making this bulletproof is appreciated. I&rsquo;ll do a separate announcement of the Marked 3 public beta soon, but you can join now if you head over to markedapp.com. I&rsquo;ve set up a GitHub repo , and a pretty complete wiki for the project. It details installation, usage, syntax, and more. Use to break consecutive lists Use Marked, MultiMarkdown, or iA Writer syntax to include external files automatically detects images, source code, and Markdown files and inserts the correct formatting if a CSV file is included, it&rsquo;s converted to a table Marked and Leanpub pagebreak syntax, which can be styled to create page breaks in print and PDF Advanced table syntax, allowing for rowspans and footers! Relaxed table mode allowing any consecutive lines with an even number of piped cells to create a headless table, no alignment row required Callout syntax from Bear/Obsidian and Xcode playgrounds works and generates basic markup you can style as needed (the mode can automatically include&hellip;",
		"keywords": ["homebrew","obsidian","pandoc","advanced","callout","check","commonmark","contents","github","homebrew","issues","kramdown","leanpub","markdown","marked","multimarkdown","obsidian","readme","relaxed","speaking","table","where","while","writer","xcode","adding","adjusting","advocate","alignment","allowing","allows","anchors","announcement","anymore","anyway","appreciated","attributes","automatically","basic","before","between","block","break","breaks","build","bulletproof","cells","classes","clean","clear","combines","command","compressed","configurable","consecutive","contribute","contributors","converted","create","credits","dashes","default","defaults","definitely","depth","details","detects","differences","element","emojis","enough","essentially","explain","export","extensions","external","feature","features","feedback","files","filing","finds","footers","formatting","fully","generates","generation","going","haven","header","headless","images","included","inserts","install","installation","integrated","integration","issues","linking","lists","making","markedapp","markup","mirror","multiple","named","needed","pagebreak","parts","permissive","piped","playgrounds","possible","print","processor","processors","production","project","public","published","random","ready","recognized","release","rendered","report","required","rowspans","rsquo","separate","shouldn","source","sourcing","spaces","special","stable","strict","style","styled","stylesheet","syntax","table","tested","testing","think","ultimate","universal","usage","using","working","works","worry","write","wrote"]
	},{
		"title": "TaskPaper search syntax for NA",
		"url": "/2025/12/03/taskpaper-search-syntax-for-na/",
		"tags": ["productivity","search","taskpaper"],
		"date": "Dec 3<span>rd</span>, 2025",
		"ts": "1764777240",
		"summary": "NA has always had its own search syntax for navigating TaskPaper files, but it didn&rsquo;t understand TaskPaper&rsquo;s actual search syntax. I thought it might be time to change that. For years, has focused on a simple idea: when you sit down to work, you should be able to see your next actions for a project with a single, fast command (or even a prompt hook when you cd into a folder). It started as a thin wrapper around TaskPaper-style todo files, but its own filtering language slowly grew more powerful and less obvious. Recently, I decided to turn that around and lean into something that already exists: TaskPaper&rsquo;s own search syntax. TaskPaper search is surprisingly rich. You can filter by plain text on the action line, query tags and their values, and even combine multiple conditions with logical operators. Instead of reinventing all of that, now understands most of the same syntax. You can drop a TaskPaper query like straight into and get exactly what you expect: high-priority, incomplete actions for the current project. Under the hood, maps TaskPaper-style predicates into its own query engine. Bare words become text searches on the action line. Tag predicates like , , or are parsed into comparison operators that already knew how to handle. Special handling for keeps the UX sane: alone means \"include completed tasks,\" while or combinations with other predicates flip the filter to only show what is still active. It even understands nested comparisons and item path syntax like . The nicest part, in my own usage, is that TaskPaper queries are now first-class citizens in todo files themselves. If you drop a line like: into your TaskPaper document, can treat that as a saved search. Running something like will execute the embedded expression and show you only the actions that match. Your TaskPaper document becomes both a list of tasks and a library of reusable, named filters you can run from the command line. TaskPaper queries are not limited to inline lines in your TaskPaper files. also recognizes syntax in , so you can define named searches there using pure TaskPaper syntax and reuse them everywhere. That means the same query language works in your editor, inside your todo documents, and in your global saved searches, giving you one universal way to describe how you want your TaskPaper tasks filtered. This change does not replace &rsquo;s existing search language; it layers a familiar syntax on top of it. You can still use the more&hellip;",
		"keywords": ["command","utility","recently","running","special","taskpaper","under","action","actions","active","against","alone","battle","becomes","change","citizens","class","combinations","command","compact","comparison","comparisons","completed","conditions","configuration","context","dates","decided","define","describe","detail","details","document","documented","documents","editor","embedded","engine","everywhere","execute","exists","expect","expression","expressions","expressive","extra","familiar","files","filter","filtered","filtering","filters","first","focused","folder","getting","giving","global","handle","handling","incomplete","inline","inside","items","keeps","language","latest","layers","learn","library","limited","logical","match","mental","model","multiple","named","navigating","nested","nicest","obvious","opens","operators","parsed","powerful","predicates","priorities","priority","project","prompt","queries","query","quick","recognizes","reinventing","replace","reusable","reuse","rsquo","saved","search","searches","simple","single","slice","slowly","small","started","straight","style","support","supported","surprisingly","switch","syntax","tagged","tasks","terminal","tested","themselves","thought","todos","treat","understand","understands","universal","usage","using","values","version","while","words","works","wrapper","years"]
	},{
		"title": "A few Black Friday deals",
		"url": "/2025/11/26/a-few-black-friday-deals/",
		"tags": ["deals","macos","marked"],
		"date": "Nov 26<span>th</span>, 2025",
		"ts": "1764169440",
		"summary": "First off, Marked 2 is part of the Unclutter Black Friday bundle, along with 11 other excellent Mac apps. You can get the full bundle for 77% off, or individual apps (like Marked 2) for 50% off. You should definitely check that out. I&rsquo;ve gathered a few other deals you may or may not have seen already. I mostly just wanted to get some less-visible ones on your radar. CleanMyMac is 30% off starting Friday. This link is having a little trouble on non-Chrome browser, and I&rsquo;m asking for a new one. I&rsquo;ll update if I get one. Elements web site creator is 45% until December 1st Notepad.exe is over 50% off UGREEN stuff like UGREEN NASync DXP4800 is all marked down Flying Meat apps (Acorn, Retrobatch) are all $10 off Tower Git client is 30% off MacSparky field guides are 25% off with code Auralog (migraine tracker) is $8.99/year (normally $19.99) TextTastic is 50% the first year Eternal Storms software (Yoink, Screenfloat, Transloader, and more) is 50-77% off, and 30% goes to charity. Cesare Forelli&rsquo;s apps (LifePace, SendScan, GlanceCam, and more) are 25-40% off There&rsquo;s a great directory of Black Friday app sales at indieappsales.com All of Apparent Software&rsquo;s titles (Trickster, Cashculator, and more) are up to 50% off, including their latest \"Calm My Dog\" anxiety trainer. If you&rsquo;re looking for web development and design courses, here are some great deals compiled by Josh Comeau (whose courses are also on sale)",
		"keywords": ["apple","migraine","acorn","auralog","black","cashculator","cesare","chrome","cleanmymac","comeau","elements","eternal","first","flying","forelli","friday","glancecam","lifepace","macsparky","marked","nasync","notepad","retrobatch","screenfloat","sendscan","software","storms","texttastic","tower","transloader","trickster","ugreen","unclutter","yoink","anxiety","asking","browser","bundle","charity","check","client","comments","compiled","couple","courses","creator","deals","definitely","design","development","directory","excellent","field","first","gathered","great","guides","having","including","indieappsales","individual","latest","little","looking","marked","mention","migraine","mostly","normally","notable","radar","rsquo","sales","software","starting","stuff","titles","tracker","trainer","trouble","visible","wanted","whose"]
	},{
		"title": "Subscriber Bonus: A CLI for Finder's Open With...",
		"url": "/2025/11/17/a-cli-for-finders-open-with/",
		"tags": ["finder","macos","scripting","terminal"],
		"date": "Nov 17<span>th</span>, 2025",
		"ts": "1763387700",
		"summary": "I whipped up a script this morning to simulate Finder&rsquo;s \"Open With&hellip;\" menu from the command line. It extends the macOS command with a command line menu selection of apps able to open the file you specify. This script uses the macOS commands mdfind and open, along with the third-party utilities duti and fzf or gum. I&rsquo;m going to paywall this one as bonus content for my supporters. Join at any level to get the script",
		"keywords": ["charmbracelet","command","github","interface","manager","package","spotlight","&#39;https","&#39;paywall","content","finder","paywall","premium","produces","register","subscribe","subscriber","actions","bonus","brettterpstra","button","charmbracelet","class","collected","command","commands","config","container","content","contentid","cookiename","display","explorer","extends","finder","function","fuzzy","github","glamorous","global","going","hellip","highlight","highlighter","https","instance","junegunn","language","ldquo","level","loading","loads","login","macos","mdfind","media","member","message","moretension","morning","noscript","onclick","original","overlay","party","paywall","paywallconfig","paywalllogin","picture","placeholder","plaintext","queue","rdquo","registration","rouge","rsquo","script","scripts","selection","serviceurl","shell","simulate","source","specify","srcset","style","subscribe","subscribers","support","supporters","third","title","token&#39;","uploads","utilities","whipped","width","window"]
	},{
		"title": "A Jekyll plugin for viewing large SVG diagrams",
		"url": "/2025/11/10/a-jekyll-plugin-for-viewing-large-svg-diagrams/",
		"tags": ["jekyll","jekyllsvgviewer","plugin"],
		"date": "Nov 10<span>th</span>, 2025",
		"ts": "1762798980",
		"summary": "I recently built a WordPress plugin specifically for my friend Allison Sheridan over at Podfeet Podcasts. She had a huge mind map she wanted to display on her blog &mdash; HTML embeds were messy and broke the site, PNG exports were unsearchable and impossible to navigate, and she didn&rsquo;t want to just offer an OPML download. So she output an SVG, and I built a viewer to embed it in a WordPress post with nice zooming and panning, text searchability, and a bunch of customization options. I&rsquo;ve submitted that plugin to the WordPress registry, but it will take a couple of weeks before it&rsquo;s available. In the meantime, if you want to check it out, you can learn more at the BT SVG Viewer GitHub repo, or just download the latest zip file and use Upload Plugin to install it. It has complete built-in help you can access from the Preset Editor page. But I&rsquo;ll post more about that when it&rsquo;s available for easy install. In the meantime, I thought I&rsquo;d port it to Jekyll. I don&rsquo;t have an immediate need for it, but being able to display mind maps such as those exported from MindNode Next seems like something I&rsquo;ll definitely want to do sooner or later. I packaged the Jekyll plugin as a gem, so you can install it just by adding it to the and your . Once that&rsquo;s done, when you build the site, you&rsquo;ll get a that gives you an interface for building the Liquid tag used to embed the actual viewer. I don&rsquo;t know how many people will need this one, but I think it came out really polished and will be a perfect solution for those who do need it. Check out the project page for more details",
		"keywords": ["diagram","extension","allison","check","copying","editor","github","jekyll","liquid","mindnode","plugin","podcasts","podfeet","preset","sheridan","upload","viewer","wordpress","access","adding","available","before","broke","build","building","built","bunch","check","couple","customization","default","define","definitely","details","display","download","embed","embeds","exported","exports","friend","generated","gives","immediate","impossible","install","interface","later","latest","learn","mdash","meantime","messy","navigate","offer","options","output","packaged","panning","pasting","people","plugin","polished","project","recently","registry","rsquo","searchability","seems","serves","solution","sooner","specifically","submitted","think","thought","unsearchable","viewer","wanted","weeks","whole","zooming"]
	},{
		"title": "Web Excursions for November 6th, 2025",
		"url": "/2025/11/06/web-excursions-for-november-6th-2025/",
		"tags": ["bookmarks"],
		"date": "Nov 6<span>th</span>, 2025",
		"ts": "1762450860",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. manaflow-ai/cmux cmux lets you run Claude Code, Codex CLI, Amp, Gemini CLI, Cursor CLI, Opencode, and other coding agent CLIs in parallel across multiple tasks. git-flow-next: Your Favorite Git Workflow. Reimagined. A ground-up rewrite of git-flow in Go. More flexible branching and merge strategies, better conflict resolution, and better branch dependency tracking. (The original git-flow project has even started redirecting users to git-flow-next.) The folks at Tower do amazing work. Zellij I&rsquo;m probably not going to put the energy into porting all of my tmux knowledge and settings into a new tool, but Zellij looks like an awesome terminal multiplexer and has been extremely intuitive in the time I&rsquo;ve put into playing with it. If you have the energy to switch, or especially if you&rsquo;ve never gotten into multiplexing, definitely check it out. There&rsquo;s even a web client mode with \"multiplayer\" capabilities in your browser. Effects Showroom - TerminalTextEffects Docs These are dumbfoundingly cool terminal text effects. Some useful for scripting, some just pretty to look at. Hat tip to cavalierex in the forum. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["claude","gemini","terminal","check","claude","codex","cursor","effects","favorite","gemini","mindmeister","opencode","reimagined","showroom","terminaltexteffects","tower","workflow","zellij","across","agent","amazing","awesome","boosting","brainstorming","branch","branching","brought","browser","capabilities","cavalierex","check","client","coding","collaborating","collaborative","conflict","definitely","dependency","dumbfoundingly","effects","energy","especially","excursions","flexible","folks","forum","going","gotten","ground","intuitive","knowledge","looks","manaflow","mapping","merge","multiplayer","multiple","multiplexer","multiplexing","original","parallel","partnership","playing","porting","productivity","project","redirecting","resolution","rewrite","rsquo","scripting","settings","software","started","strategies","switch","tasks","terminal","tracking","useful","users"]
	},{
		"title": "Announcing Bear & Glass, Apple workflow consulting",
		"url": "/2025/10/31/announcing-bear-and-glass/",
		"tags": ["automation","bearandglass","consulting"],
		"date": "Oct 31<span>st</span>, 2025",
		"ts": "1761922800",
		"summary": "I&rsquo;ve mentioned before that what I really wanted out of my career was to be a consultant, especially in automation and efficiency on Mac and iOS, for teams and small-to-medium size businesses looking to grow. Well, I&rsquo;m excited to have teamed up with Christopher Gamblée-Wallendjack to create Bear & Glass. We want to take what we normally do for individuals one-on-one and bring it to teams. I&rsquo;m excited to be launching this! Bear & Glass will make the work I do and the things I create accessible to people that might never have found me on their own &mdash; creative teams who need someone who speaks both human and machine. When one person decides what \"clever\" tool the whole company will use, it rarely works. If the needs of the people actually using the tools aren&rsquo;t heard, they won&rsquo;t use them &mdash; and everyone&rsquo;s right back where they started. That&rsquo;s why Bear & Glass will talk to everyone. We build systems and automations that make sense to the people who rely on them, and which connect perfectly to create the whole. The automation possibilities are vast. We can do everything from speeding up your email workflow to streamlining your publishing, onboarding, and day-to-day operations. We provide stable, future-proof automations that scale with your business. We specialize in Mac and iOS automation, but we also do Unix automations and server-side operations. Working with Christopher is the perfect pairing: I get to focus on the automation side, and Christopher, who specializes in customer service, documentation, and project management, gets to focus on the people. So if you&rsquo;re someone who believes their team or business could be saving time, working more efficiently, or improving everything from onboarding to operations with our bespoke services, visit bearandglass.co and contact us today! You&rsquo;ll get a personal response from Christopher, who can answer all of you questions",
		"keywords": ["consulting","macos","christopher","gambl","glass","wallendjack","working","accessible","answer","automation","automations","bearandglass","before","believes","bespoke","bring","build","business","businesses","career","clever","company","connect","consultant","contact","create","creative","customer","decides","efficiency","efficiently","email","especially","everyone","everything","excited","focus","found","heard","https","human","improving","individuals","launching","ldquo","looking","machine","management","mdash","medium","mentioned","needs","normally","onboarding","operations","pairing","people","perfectly","person","personal","possibilities","project","proof","publishing","questions","rarely","rdquo","response","right","rsquo","saving","scale","sense","server","service","services","small","speaks","specialize","specializes","speeding","stable","started","streamlining","systems","teamed","teams","today","tools","using","visit","wanted","where","whole","workflow","working","works"]
	},{
		"title": "One more na update",
		"url": "/2025/10/29/one-more-na-update/",
		"tags": ["productivity","scripting","tagging","taskpaper"],
		"date": "Oct 29<span>th</span>, 2025",
		"ts": "1761742800",
		"summary": "If you run without arguments you&rsquo;ll now get an interactive menu that helps you pick the file(s) and actions to operate on, and I&rsquo;ve added a flexible plugin architecture and time tracking features. (no args) now launches an interactive, consistent selection flow for files and actions. The update submenu supports multi-select, edit, move, and direct action modes more reliably. Fixed many edge cases: nil-safe string helpers, clearer YARD docs, and better tests for helper code. Time tracking Plugin architecture Under-the-hood improvements to file selection, action movement, and tagging logic. Add start/finish times right from the CLI: on , /, and (alias ) on , /, and to backfill a start time from the finish Natural language and shorthand supported everywhere: , , , , Durations aren’t stored; they’re computed from and when displayed. Display enhancements in /: shows per‑action durations and a grand total (implies ) switches durations to friendly text filters to actions with both and (implies ) outputs only the totals (no action list; implies ) emits a JSON object with timed actions, per‑tag totals, and overall totals (implies ) Per‑tag totals are shown as a Markdown table with aligned columns and a footer row for the grand total Duration color is theme‑configurable via a key (default ) You can now extend NA with small scripts placed in . Each plugin is a script with a shebang; NA feeds it actions on STDIN and reads transformed actions from STDOUT. Run: Shortcut: (defaults to run, but doesn’t accept run‑flags) From update: (also appears in the interactive menu) From display: (STDOUT‑only transform; no file writes) IO formats: , , , ( supported) Plugins may modify , , , and ; NA applies moves if parents change Optional ACTIONs supported in plugin output: (default), , , , , , , (alias ): Create a plugin in . If no extension is provided, NA prompts for a language (or pass ). Shebang and extension are inferred. : Open a plugin in your system editor. If no name is given, you’ll be prompted to pick from available plugins (enabled and disabled). (alias ): Execute a plugin against selected actions. With no arguments, NA prompts for the plugin and actions. Supports , , , plus usual filters like , , , , . (alias ): Move a plugin from into . (alias ): Move a plugin from into . (alias ): List plugins. Use (or ) to output plain names only. On first run NA creates the plugins&hellip;",
		"keywords": ["action","action","actions","archive","action","addfoo","added","array","changed","changelog","command","check","choose","completed","create","debug","default","display","document","duplicatebranch","durations","example","examples","execute","finish","fixed","fixed","improved","inbox","incorrect","integer","interactive","internal","investigate","maptohash","markdown","modify","multi","natural","notable","optional","personal","plugin","plugins","quick","readme","remove","restore","stdin","stdout","sample","search","shebang","shortcut","small","stabilized","string","style","support","supports","suppressed","symbol","tests","thanks","transform","unfinish","under","accept","across","action","actions","added","against","alias","aliases","annotations","appears","applied","applies","apply","architecture","arguments","automatically","available","avoid","avoiding","avoids","backfill","backfills","backtrace","before","behaves","behaviors","beneath","blank","blocks","bottom","brettterpstra","brief","bright","build","building","bundle","button","change","changed","changes","charmbracelet","checkout","choose","chosen","clarifications","class","classes","cleaned","clear","clearer","codebase","codes","color","colorization","colors","columns","command","commands","computed","configurable","consistent","consistently","contains","context","correctness","corrupts","create","creates","custom","database","dates","debug","default","defaults","deleted","depth","description","descriptions","detailed","development","different","direct","directives","directories","disable","disabled","display","displayed","divider","doesn","driven","duplicate","duplicates","durations","editing","editor","emits","enabled","enhancements","entry","error","escape","everywhere","example","examples","expect","expected","explicit","explode","extend","extension","external","failing","falls","fastest","feature","features","feedback","feeds","filename","files","filtered","filtering","filters","finds","finish","finished","first","fixed","fixes","flags","flexible","focused","folder"]
	},{
		"title": "Reiki refactored",
		"url": "/2025/10/27/reiki-refactored/",
		"tags": ["productivity","reiki","scripting","shell","terminal"],
		"date": "Oct 27<span>th</span>, 2025",
		"ts": "1761570000",
		"summary": "I&rsquo;ve been putting in some time on side projects every morning while building up the motivation to work on more overwhelming things. Recently the focus was on Reiki, my tool for running Rake tasks with fuzzy matching and humane argument parsing. I should probably port this to Make at some point, but my Makefiles are never as complex as my Rakefiles. NPM already does a pretty good job of the kind of matching Reiki does. Anyway, this refactor makes Reiki into a modern, multi-shell-compatible tool that works seamlessly across more environments. With automatic shell detection, zero-config tab completion, backwards compatibility to Bash 3.0, comprehensive configuration options, and robust error handling, you can work faster regardless of your shell preference",
		"keywords": ["command","interfaces","script","shell","&#39;https","&#39;paywall","anyway","check","content","makefiles","paywall","premium","rakefiles","recently","register","reiki","subscribe","subscriber","across","actions","argument","automatic","backwards","brettterpstra","building","button","class","collected","compatibility","compatible","complex","comprehensive","config","configuration","container","content","contentid","cookiename","details","detection","display","environments","error","faster","focus","function","fuzzy","global","handling","https","humane","instance","loads","login","makes","matching","member","message","modern","morning","motivation","multi","onclick","options","overlay","overwhelming","parsing","paywall","paywallconfig","paywalllogin","placeholder","point","preference","project","projects","putting","queue","refactor","regardless","registration","reiki","robust","rsquo","running","script","seamlessly","serviceurl","shell","style","subscribe","support","tasks","token&#39;","while","window","works"]
	},{
		"title": "Optimizing na and doing",
		"url": "/2025/10/23/optimizing-na-and-doing/",
		"tags": ["doing","productivity","scripting","taskpaper"],
		"date": "Oct 23<span>rd</span>, 2025",
		"ts": "1761227220",
		"summary": "I&rsquo;ve been using my na and doing command-line tools daily for years, but lately they&rsquo;d started feeling sluggish. When was taking over a second to show me my next actions from a tiny 5KB file, I knew it was time to dig in and fix things. In case you&rsquo;re unfamiliar, is a command line tool for adding and listing per-project todos, and is a CLI for tracking what you were doing, with export features, time tracking, tagging, and other usefuly features. Both tools had developed performance issues that made them occasionally frustrating to use. The command was consistently running at 1.3+ seconds with wildly variable performance—sometimes 200ms, sometimes 500ms for identical inputs. Meanwhile, was sometimes taking over 3 seconds to display a simple list of recent entries. This wasn&rsquo;t acceptable for tools meant for quick, frequent use. I built custom benchmarking systems for both gems ( and ) to see where the time was going. The results were eye-opening. For , the pager was the main bottleneck, consuming about 600ms of the 3+ second runtime. Caching everything I pre-compiled regex patterns, cached theme data, and implemented template caching to eliminate repeated processing. Smart pagination Both tools now skip the pager entirely for small outputs. For , that&rsquo;s anything under 2000 characters or 50 lines. For , it&rsquo;s anything under 150% of terminal height (letting you scroll up half a page for reasonable outputs). Lazy loading Made git integration opt-in with a flag in , and deferred heavy gem loading until actually needed. Batch processing Generate all strings first, then apply regex highlighting once instead of repeatedly. na: From 1300ms+ down to ~6ms (99.5% faster) doing: From 3+ seconds down to 0.73 seconds (78% faster) Both tools now feel genuinely responsive again. The command is nearly instantaneous, and displays results in under a second. Both tools are back to being the responsive, daily-use utilities they were meant to be. You can find more details in the doing wiki and there&rsquo;s full documentation for on the na project page, if you&rsquo;re curious",
		"keywords": ["pager","benchmark","batch","bonus","caching","cleaned","color","doing","fixes","heavy","investigation","meanwhile","nomethoderror","pager","problem","regex","results","smart","string","theme","while","acceptable","action","actions","adding","again","apply","attributes","benchmarking","bonus","bottleneck","brettterpstra","built","cached","caching","calls","causing","characters","class","color","command","compilation","compiled","consistently","consuming","culprits","curious","custom","daily","default","deferred","definitions","details","developed","display","displays","doing","dramatic","eliminate","entirely","entries","escape","everything","export","exports","extension","failures","faster","features","feeling","first","fixed","fixes","frequent","frustrating","genuinely","github","going","handling","happening","heavy","height","highlighter","highlighting","https","identical","implemented","improvements","inputs","instantaneous","integration","investigation","issues","language","letting","listing","loading","meant","method","methods","module","nagging","nearly","needed","occasionally","opening","output","outputs","overhead","pager","pagination","patterns","performance","plaintext","problem","processing","projct","project","projects","quick","reasonable","recent","regex","repeated","repeatedly","responsive","results","rouge","rsquo","running","runtime","scroll","second","seconds","sequence","several","simple","sluggish","small","sometimes","started","startup","strings","strong","system","systems","tagging","taking","template","terminal","theme","todos","tools","tracking","ttscoff","under","unfamiliar","unwanted","usefuly","using","utilities","variable","where","wildly","years"]
	},{
		"title": "YouTube to Markdown embed",
		"url": "/2025/10/18/youtube-to-markdown-embed/",
		"tags": ["markdown","video","youtube"],
		"date": "Oct 18<span>th</span>, 2025",
		"ts": "1760805420",
		"summary": "This is just a little 30-minute project I made for my own use, but figured I&rsquo;d share. It simply takes a YouTube URL and converts it to GitHub-friendly Markdown for use in READMEs, wikis, and PR comments. GitHub doesn&rsquo;t allow for s, so you can&rsquo;t actually embed a YouTube video in a README. You can, however, easily embed a thumbnail and link it to the video. This little API does just that. Sure, it&rsquo;s built with GitHub in mind, but it&rsquo;s useful in any situation where you can&rsquo;t use an actual embed but want to include a YouTube video. You can play around with the API at https://brettterpstra.com/yt-md, which has full documentation and live testing. Include a (full YouTube URL) or (just a video ID) parameter, and it will generate the Markdown for you. You can also include or to get JSON or HTML output. Add to avoid including a caption in the HTML. Here are a few quick examples you can run from the command line using curl. Replace the video ID in the examples with your own",
		"keywords": ["github","readme","youtube","&#39;https","&#39;paywall","basic","bonus","content","dhtml","dhttps","djson","dmaxres","fbrettterpstra","fwatch","github","markdown","paywall","premium","readme","readmes","register","replace","shortcut","subscribe","subscriber","using","youtube","actions","allow","avoid","brettterpstra","built","button","caption","class","collected","command","comments","config","container","content","contentid","converts","cookiename","display","doesn","easily","embed","endpoint","examples","figured","first","friendly","function","global","highlight","highlighter","however","https","iterm","iframe","including","instance","iterm","json&#39;","language","little","loads","login","maxres","maxres&#39;","member","message","minute","onclick","output","overlay","parameter","paywall","paywallconfig","paywalllogin","placeholder","plaintext","print","project","queue","quick","registration","rouge","rsquo","script","serviceurl","share","simply","situation","specific","style","subscribe","support","takes","testing","thumb","thumbnail","token&#39;","useful","using","video","watch","where","wikis","window","youtube"]
	},{
		"title": "Ruby Progress Indicators for Modern CLI Tools",
		"url": "/2025/10/15/ruby-progress-indicators-for-modern-cli-tools/",
		"tags": ["rubyprogress","terminal"],
		"date": "Oct 15<span>th</span>, 2025",
		"ts": "1760544000",
		"summary": "I&rsquo;ve been playing around with progress bars in the terminal, and I think I&rsquo;ve created something genuinely useful. Yes, I know there are multiple options already available for this, this is mostly just an experiment for me. I wanted to build a Ruby library that could be used for command-line scripting, with CLI executables that made it easy to use when scripting in any language &mdash; not just Ruby, with a few options I didn&rsquo;t see elsewhere. The result is , a gem that provides four different animated progress indicators, each with its own visual style and use cases. If you&rsquo;re scripting in Ruby, I do highly recommend the TTY tools from Piotr Murach , such as tty-progress . Piotr&rsquo;s TTY tools have Ruby APIs. is designed more for use in other shell scripts than it is for detailed Ruby scripting. This tool owes a lot to Piotr&rsquo;s work. Ripple Creates a wave-like effect across text, with the characters rippling through different visual states. It supports rainbow colors, inverse highlighting, and case transformations. Perfect for text-heavy operations where you want something more dynamic than a simple spinner. Worm Displays a moving dot pattern that crawls across the screen using Unicode characters. It includes multiple styles (circles, blocks, geometric shapes) and can move in any direction. Great for file operations, network transfers, or any continuous background task. Twirl Provides classic spinning indicators with over 35 different spinner styles &mdash; from simple dots to complex geometric patterns. It&rsquo;s the most traditional of the four, but with way more visual variety than typical spinners. Fill The only determinate indicator in the bunch &mdash; an actual progress bar that shows completion percentage. It can be controlled via command execution or updated programmatically through daemon control messages. You can also use the individual commands directly: , , , and . Here&rsquo;s where things get interesting. All four indicators support daemon mode, which lets you run a progress indicator in the background while your scripts execute other commands. This is useful for complex workflows. The daemon mode uses and , so there are no shell job notifications cluttering your output. The progress indicator runs cleanly in the background, providing visual feedback without interfering with your script&rsquo;s execution. One of the challenges with daemon mode is preventing command output from disrupting&hellip;",
		"keywords": ["animation","command","daemon","scripting","&#39;hello","&#39;https","&#39;paywall","administration","basic","build","building","check","clean","commands","content","control","creates","daemon","deploying","deployment","displays","execute","feature","github","great","hello","however","indicators","installation","installing","integrate","keeping","killer","library","loading","murach","output","paywall","piotr","pipelines","premium","process","processing","provides","quick","readme","register","ripple","rubygems","stderr","stdout","scripts","stream","subscribe","subscriber","system","systems","twirl","unicode","working","world","above","across","actions","advanced","amount","animated","animation","appear","apply","available","background","backups","below","blocking","blockquote","blocks","bottom","brettterpstra","build","bunch","button","caption","capture","center","challenges","characters","check","checkmark","circles","class","classic","clean","cleanly","cluttering","collected","colors","command","commands","compilation","complex","config","contain","container","content","contentid","continues","continuous","control","controlled","controlling","cookiename","crawls","created","daemon","database","dedicated","default","deployment","deployments","designed","detach","detailed","determinate","different","direction","directly","display","disrupting","dumps","dynamic","easiest","elsewhere","error","examples","executables","execute","executed","execution","experiment","failed","feature","feedback","figure","files","frame","function","genuinely","geometric","github","global","guides","handles","handling","heavy","highlight","highlighter","highlighting","highly","https","iterm","imports","improvements","includes","indicator","indicators","individual","install","installation","instance","intelligently","interesting","interfering","inverse","iterm","keeping","killer","kubectl","language","latest","library","loads","login","manifests","manually","mdash","member","message","messages","migrations","monitoring","mostly","moving","multi","multiple","muted","mytask","network","notifications","onclick","operations","optional","options","output"]
	},{
		"title": "iTerm Jekyll plugin — Run commands from your blog",
		"url": "/2025/10/10/iterm-jekyll-plugin-run-commands-from-your-blog/",
		"tags": ["iterm","jekyll"],
		"date": "Oct 10<span>th</span>, 2025",
		"ts": "1760115720",
		"summary": "I&rsquo;ve published a tiny Jekyll plugin that makes terminal commands in posts runnable with a click (in iTerm, at least). The iTerm tag plugin renders a fenced code block showing a command, and a \"Run in iTerm\" link that uses iTerm 2&rsquo;s new(ish) command url scheme () to open the command in a confirmation box in iTerm, ready for immediate execution. The plugin outputs fenced code blocks with language definitions, so whatever syntax highlighter your Jekyll blog uses can still appropriately highlight the code. The \"Run in iTerm\" link is given a little extra markup to make it easy to style. If you&rsquo;re running iTerm, click the link below the code blocks to open the command in a confirmation dialog. Key/value form (custom text, directory, language)",
		"keywords": ["blogging","developer","plugin","&#39;https","&#39;paywall","command","content","examples","fsites","fproject","github","jekyll","jekyllplugins","paywall","premium","register","renders","short","sites","subscribe","subscriber","actions","appropriately","below","block","blocks","brettterpstra","button","class","click","collected","command","commands","config","confirmation","console","container","content","contentid","cookiename","custom","definitions","dialog","directory","display","examples","execution","extra","fenced","forget","function","github","global","highlight","highlighter","https","iterm","immediate","install","instance","iterm","language","ldquo","little","loads","login","makes","markup","master","member","message","onclick","outputs","overlay","paywall","paywallconfig","paywalllogin","placeholder","plaintext","plugin","posts","project","published","python","queue","rdquo","ready","registration","renders","rouge","rsquo","runnable","running","scheme","script","server","serviceurl","showing","small","style","subscribe","support","syntax","terminal","token&#39;","ttscoff","value","whatever","window"]
	},{
		"title": "Spend some, get some",
		"url": "/2025/10/08/spend-some-get-some/",
		"tags": ["javascript","jekyll"],
		"date": "Oct 8<span>th</span>, 2025",
		"ts": "1759932600",
		"summary": "I&rsquo;ve built a paywall system for this blog. It was quite an endeavor to make a home-grown solution that works with my static Jekyll site, but I think I got it. From now on, I&rsquo;ll be adding bonus content to posts that will only available to subscribers. You can subscribe at any level &mdash; the benefits are the same whether you pay $3, $6, or $12 per month. You can subscribe using PayPal, with or without a PayPal account. I&rsquo;m going to be phasing out Memberful as I&rsquo;m able to switch over the subscribers there. So become a subscriber today and don&rsquo;t miss out on anything. All of my current supporters should automatically have been ported to the new system, and should be able to log in just by providing the email address with which they used to subscribe. (If you&rsquo;re currently using Memberful, please consider cancelling there and re-subscribing via the links on the support page.) As a benefit that I hope will make subscribing worthwhile, I&rsquo;ve negotiated hundreds of dollars in savings from my favorite software developers, with 10-50% discounts about 40 apps and services (and growing), including discounts on books and educational screencasts. I&rsquo;m also going to implement a paid tier on the forum, but I&rsquo;m not planning to not converse with non-paying subscribers, so I&rsquo;ll have to figure out what the benefit there will be. I have no intention of paywalling my best content, or limit access to any of my projects. Paywalled content will be bonus content within publicly-available posts. It&rsquo;s really still just a way to support my work, so if you appreciate what I do and want to see more of it, please do consider subscribing. As a demonstration, I&rsquo;m going to detail how I built this system as bonus content. So if you want to see that, subscribe",
		"keywords": ["access","login","password","paypal","security","token","&#39;https","&#39;paywall","content","discounts","jekyll","member","memberful","paypal","paywall","paywalled","premium","register","subscribe","subscriber","access","account","actions","adding","address","appreciate","automatically","available","benefit","benefits","blockquote","bonus","bonuses","books","brettterpstra","built","button","cancelling","check","class","collected","config","consider","container","content","contentid","converse","cookiename","demonstration","detail","developers","discounts","display","dollars","educational","email","endeavor","favorite","figure","first","forum","function","global","going","growing","grown","https","hundreds","including","instance","intention","level","limit","links","loads","login","mdash","member","message","negotiated","onclick","overlay","paying","paywall","paywallconfig","paywalllogin","paywalled","paywalling","phasing","placeholder","planning","ported","posts","projects","providing","publicly","queue","registration","rsquo","savings","screencasts","script","serviceurl","services","software","solution","static","style","subscribe","subscriber","subscribers","subscribing","support","supporters","switch","system","think","today","token&#39;","using","window","within","works","worthwhile"]
	},{
		"title": "Web Excursions for October 6th, 2025",
		"url": "/2025/10/06/web-excursions-for-october-6th-2025/",
		"tags": ["bookmarks"],
		"date": "Oct 6<span>th</span>, 2025",
		"ts": "1759755600",
		"summary": "Web excursions brought to you in partnership with Fabric, the best way to organize your notes, tasks, and projects in one place. Sleeve 2 — Now playing on your Desktop Sleeve is my current top choice for displaying \"now playing\" information on my desktop, with a very customizable display, theme sharing, and last.fm scrobbling. Side note: I found QuietScrob to be pretty good for scrobbling Apple Music plays on the iPhone. I recently cancelled Spotify and am trying to make my way with Music now&hellip; MeSoul - Smart Journaling & Self-Discovery App There are some benefits to this being web-based, and I like that the AI integration doesn&rsquo;t try to write for you, it just answers questions and improves long-term memory. Transform your thoughts into insights with MeSoul&rsquo;s intelligent journaling platform. Track emotions, discover patterns, and grow through AI-powered reflection. Start your 14-day free trial. Quip – AI Clipboard Manager and Text Expander for macOS & iOS I&rsquo;ve tested this out and it&rsquo;s pretty great. As a side note, there&rsquo;s a brand new app called Stash that functions more as an AI-powered Yoink that looks worth checking out (as is Yoink). Quip is the first clipboard manager powered by AI, built for Mac, iPhone, and iPad. Automatically save everything you copy, organize it with Smart Collections, and paste anywhere using Super Shortcuts. Enjoy powerful search, full editing, and seamless iCloud sync—designed with privacy in mind. Vibe Backup - Code Backup Tool for Vibe Coding Developers I&rsquo;m not a \"vibe coder,\" but I have been using AI to add some features to my apps. And given how quickly AI can make a mess and totally break things, constantly committing to your VCS is a must. This little app seeks to automate and make that process simpler. Features Shortcuts integration, Timeline management, and quick Rollback capabilities for secure code backup. $4.99 for the Pro version with no limits. Let Fabric be your second brain, with an all-in-one AI workspace and smart organizer for all your projects, ideas, notes & links. Check it out today",
		"keywords": ["clipboard","macos","shortcuts","apple","automatically","backup","brett","check","clipboard","coding","collections","desktop","developers","discovery","enjoy","expander","fabric","features","journaling","manager","mesoul","music","quietscrob","rollback","shortcuts","sleeve","smart","spotify","stash","super","timeline","track","transform","yoink","answers","anywhere","apple","automate","backup","based","benefits","blockquote","brain","brand","break","brett","brettterpstra","brought","built","bzgapps","called","cancelled","capabilities","checking","choice","class","clipboard","coder","committing","constantly","customizable","designed","desktop","discover","display","displaying","doesn","editing","emotions","eternalstorms","everything","excursions","fabric","features","first","found","functions","great","height","hellip","holding","https","icloud","iphone","ideas","image","improves","information","insights","integration","intelligent","journaling","ldquo","limits","links","little","loading","looks","macos","management","manager","media","memory","mesoul","noscript","notes","organize","organizer","original","partnership","paste","patterns","picture","platform","playing","plays","powered","powerful","privacy","process","projects","questions","quick","quickly","quietscrob","rdquo","recently","reflection","replay","rsquo","scrobbler","scrobbling","seamless","search","second","secure","seeks","sharing","shelf","simpler","sleeve","smart","software","source","srcset","stash","tasks","tested","theme","thoughts","through","title","today","totally","trial","trying","uploads","using","version","vibebackup","width","workspace","worth","write","yoink"]
	},{
		"title": "Markdown Lipsum API v4 and the random-words gem",
		"url": "/2025/10/04/markdown-lipsum-api-v4-and-the-random-words-gem/",
		"tags": ["lipsum","markdown"],
		"date": "Oct 4<span>th</span>, 2025",
		"ts": "1759577340",
		"summary": "I&rsquo;ve released v4 of md-lipsum, my API for generating Markdown Lorem Ipsum. This update introduces expanded source options, new query parameters for enhanced functionality, and is powered by the new &lsquo;random-words&rsquo; Ruby gem. If you use the API to create any Apple Shortcuts, System Services, command line scripts, or other automations, please share in the comments/forum! I&rsquo;d love to highlight any use cases out there. The biggest change in v4 is the expansion of available text sources. While previous versions were limited to basic Lorem Ipsum, v4 now offers 14 different source languages and themes: This parameter enables preview mode, which renders the HTML output in a styled format instead of returning raw HTML. Perfect for seeing how your generated content will look when styled. When combined with , this parameter returns a complete HTML document with proper , , and tags, making it ready for direct use. The Markdown Lipsum API v4 is now powered by the new Ruby gem, which provides a comprehensive solution for generating random text content. This gem is available for both command-line use and as a Ruby library. Installing the gem also provides a powerful command-line tool called . Here&rsquo;s what you can do with it: One of the most exciting features of the gem is the ability to create your own custom dictionaries. This allows you to generate content in specialized domains like medical terminology, legal jargon, or any other field-specific language. For detailed information about creating custom dictionaries, see the GitHub documentation. Markdown Lipsum API v4 represents a significant step forward in random text generation, offering expanded source options, new query parameters, and the flexibility of the gem. Whether you&rsquo;re using the API for quick placeholder content or the gem for programmatic text generation, you now have access to a much richer set of tools for creating random content. Enjoy, and please let me know in the comments if you have any questions or suggestions, or just want to let me know how you&rsquo;ve implemented it. I&rsquo;d love to share any Shortcuts or Services (or command line scripts) you create, so don&rsquo;t be shy",
		"keywords": ["dictionary","nonsense","alice","allows","apple","available","bacon","binary","buzzwords","calls","christopher","command","commands","configuration","corporate","creating","custom","depending","dictionaries","display","doctor","english","enjoy","example","examples","expanded","files","foulmouth","generation","george","getting","github","hipster","homebrew","installation","installing","ipsum","latin","library","lipsum","lorem","markdown","options","orwell","parameters","query","random","required","rubydocs","services","share","shortcuts","source","sources","spanish","started","system","using","vegetarian","walken","while","wonderland","wrapping","ability","access","action","alice","allowing","allows","appending","applications","automations","available","bacon","basic","biggest","block","blocks","brettterpstra","called","calls","change","clean","combination","comes","command","comments","complex","comprehensive","content","control","controls","corporate","create","creates","creating","custom","default","defaults","definition","description","detailed","dictionaries","dictionary","different","direct","directory","doctor","document","domains","element","elements","enables","encoded","english","enhanced","examples","exciting","expanded","expansion","extended","external","features","field","files","flexibility","format","forum","foulmouth","found","functionality","generated","generating","generation","headers","headlines","highlight","highlights","hipster","https","image","images","implemented","information","introduces","ipsum","jargon","language","languages","latin","legal","library","limited","links","lipsum","lists","lsquo","making","medical","names","necessary","needs","offering","offers","options","ordered","output","parameter","parameters","particularly","placeholder","populated","powered","powerful","preview","programmatic","proper","provides","punctuation","query","questions","quick","quotes","random","randw","ready","released","renders","represents","requiring","returning","returns","richer","rsquo","scenario","scripts","seeing","setup","several","share","significant","solution"]
	},{
		"title": "RNKD --- free ranked-choice polls",
		"url": "/2025/09/19/free-ranked-choice-polls/",
		"tags": ["design","webdev"],
		"date": "Sep 19<span>th</span>, 2025",
		"ts": "1758319740",
		"summary": "A few times over the last couple of years I&rsquo;ve wanted to do an open poll to get a feel for how users felt about things, particularly icons during the design process. I found there aren&rsquo;t a lot of affordable ways to do this. What I wanted was a way to upload multiple images and get ranked-choice voting on them. If you&rsquo;re not familiar, ranked voting is a system where voters rank their choices in order of preference, and then an algorithm is used to determine the winner. So your second choice vote doesn&rsquo;t get lost if your first choice doesn&rsquo;t win &mdash; it becomes part of the aggregate. It&rsquo;s the way US elections should be run1. So I built RNKD. I took a morning away from working on Marked 3 to build it, but that&rsquo;s all it took. It&rsquo;s not a complicated beast, just does what it says on the tin. Sign in with an email address, create a poll by uploading images and adding optional captions, then share the link to the poll. Voters don&rsquo;t need to log in, and anyone with the link can vote. Share it with your team, your friends, or your whole social network. Voting is anonymous. There&rsquo;s currently no mechanism to prevent the same person from voting multiple times, which I should probably build in sooner than later if this is going to be used seriously. But assuming everyone voting isn&rsquo;t intentionally trying to rig the game, it works great as is. You can sign in and create your own polls at https://rnkd.xyz. I&rsquo;m making it free (and accepting donations). If you use it for anything profitable, please consider clicking the \"Buy me a coffee\" link. And let me know what thoughts you have on it any time! And adding more than two parties. That and doing away with the Electoral College would be a good start. But I digress.&nbsp;↩",
		"keywords": ["choice","electronic","ranked","voting","college","electoral","marked","options","polls","ranked","share","voters","voting","accepting","adding","address","affordable","algorithm","anonymous","anyone","assuming","backlink","beast","becomes","brettterpstra","build","built","captions","choice","choices","class","clicking","coffee","complicated","consider","couple","create","design","digress","doesn","doing","donations","elections","email","endnotes","everyone","familiar","first","fnref","footnote","footnotes","found","friends","going","great","height","https","icons","image","images","intentionally","later","ldquo","loading","making","mdash","mechanism","media","morning","multiple","network","noscript","noteref","optional","original","particularly","parties","person","picture","polls","preference","prevent","process","profitable","ranked","rdquo","reversefootnote","rsquo","second","seriously","share","social","sooner","source","srcset","system","thoughts","times","title","trying","upload","uploading","uploads","users","voters","voting","wanted","where","whole","width","wikipedia","winner","working","works","years"]
	},{
		"title": "A quick look at Marked 3",
		"url": "/2025/09/06/a-quick-look-at-marked-3/",
		"tags": ["markdown","marked"],
		"date": "Sep 6<span>th</span>, 2025",
		"ts": "1757176200",
		"summary": "Since leaving Oracle I&rsquo;ve been hard at work on Marked 3, and holy cow it&rsquo;s a huge update. I expect to have the beta out in the next week or two. When it&rsquo;s ready it will be available as a subscription directly via Paddle or the Mac App Store, and all Setapp users will get it as part of their subscription. There&rsquo;s a new website up at markedapp.com, though none of download links will work. Soon, though. I decided to go with subscription pricing because I want to support continuous development. I haven&rsquo;t charged an upgrade price for almost a decade, so people who paid $10 for the app 10 years ago have gotten all of the improvements for free for years. That&rsquo;s not sustainable for me, and subscriptions mean I don&rsquo;t have to release a new app every year, but rather just constantly improve on it. Here are some of the highlights that I think make Marked 3 worth paying for. (Marked 2 will continue to function but won&rsquo;t get any more updates.) The new Custom Rules setup replaces the old Custom Preprocessor and Custom Processor settings. The old way only allowed one of each, and your only option was to manually enable it or disable it. Now you can have multiple processors that activate automatically based on criterium like file extension, metadata type, or even content detected in the document (regex available!). Drag and drop a file onto the rules editor to see what rules it triggers Select a built-in processor for each rule match Many built-in transforms and actions, including search and replace, fix header heirarchy, etc. Run multiple scripts/commands (custom pre/processors) in sequence Inject JavaScript, text, or HTML Set a style for a particular file type and more! I&rsquo;ve added CommonMark (with GFM extensions) as a default processor, which brings full compatibility with other apps that use CommonMark, such as Bear. I also added Kramdown, my personal favorite processor. It&rsquo;s 99% compatible with MultiMarkdown syntax, and its major draw for me is IALs, a special syntax that can apply CSS classes to any element. Marked 2&rsquo;s DOCX export was terrible. It basically just output rich text content into a DOCX container, with no structural information. I&rsquo;ve completely rewritten the DOCX export from the ground up. Not only can Marked 3 output perfect DOCX files with a variety of styling options, it can also open most DOCX files and export them&hellip;",
		"keywords": ["communication","microsoft","pandoc","screenwriting","scrivener","software","technical","textile","tools","allow","applescript","autoscroll","because","button","change","clean","column","command","commonmark","completely","contents","convert","criticmarkup","custom","detailed","dingus","display","double","embedded","experiment","export","fixed","fonts","footnotes","fully","goldilocks","google","handle","improved","ignore","import","improved","inject","intra","javascript","kramdown","logos","markdown","marked","marsedit","mathjax","mathml","multi","multimarkdown","native","oracle","paddle","pages","paginated","pandoc","paragraphs","performance","preprocessor","previously","processor","processors","profiles","proofreading","python","recognize","remove","reorderable","rewritten","rules","safari","script","scrivener","setapp","settings","shortcuts","since","status","stealer","store","style","styles","substitute","suppress","syntax","table","textbundle","textpack","thread","ulysses","welcome","accepts","accessors","across","actions","activate","added","adjustments","advanced","affects","allow","allowed","allowing","allows","almost","anchors","another","appear","applied","apply","article","asides","assets","automatically","automation","autoscroll","available","background","backlinks","based","because","behavior","between","binder","block","blocks","brings","builds","built","bypass","calculates","callbacks","called","change","changed","changelog","changing","charged","classes","clean","click","clickable","color","commands","comments","compatibility","compatible","completely","computed","config","consistent","constantly","container","content","contents","contexts","continue","continuous","control","conversion","convert","converter","converting","copying","couldn","cover","create","criterium","custom","customizable","debug","debugging","decade","decent","decided","default","definitely","deletions","detailed","detected","detecting","development","dialog","different","directional","directly","disable","disabled","document","download","dragged","drawer","dropdown","dropped","editor","element","elements","embedded","emphasis","empty","ensuring","environment","errors","especially","expect"]
	},{
		"title": "Web Excursions for August 18th, 2025",
		"url": "/2025/08/18/web-excursions-for-august-18th-2025/",
		"tags": ["bookmarks"],
		"date": "Aug 18<span>th</span>, 2025",
		"ts": "1755522000",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. A Mise guide for Swift developers In this blog post we share how to use Mise to install, activate, and share tools to enhance Swift development. I switched to Mise (en place) a while ago and have loved it as a replacement for asdf. But I haven&rsquo;t made good use of its task runners and other features, so this blog post was a good reminder of some of its advanced capabilities. TextIndex — Matt Gemmell A lightweight syntax for creating indexes in Markdown. This is pretty cool, and represents some good syntax choices for extending Markdown. MindMap AI: Create AI-Powered Mind Maps Instantly This looks pretty great. I haven&rsquo;t tried it yet, but with a pro plan under $10/mo and a basic plan under $5, if it works as well as I&rsquo;ve read, I could become a subscriber. Create instant AI-powered mind maps with MindMap AI. Featuring Copilot Chat, co-creation, multi-format input, and easy sharing. Revolutionize your brainstorming process today! Read a good review here. Notepad.exe - Your Developer&rsquo;s Playground This looks really cool for experimenting with Swift and Python. More languages to come. Similar to CodeRunner but with additional features (like AI)",
		"keywords": ["brett","check","coderunner","copilot","create","developer","featuring","gemmell","instantly","markdown","mindmap","notepad","playground","powered","python","revolutionize","setapp","similar","swift","textindex","access","activate","advanced","basic","blockquote","brainstorming","brettterpstra","brought","capabilities","choices","class","creating","creation","developers","development","enhance","excursions","experimenting","extending","features","format","great","guide","haven","height","holding","https","hundreds","image","indexes","input","install","instant","languages","lightweight","loading","looks","loved","mattgemmell","media","mindmap","mindmapai","mindmappingsoftwareblog","monthly","multi","noscript","notepadexe","original","partnership","picture","powered","process","reminder","replacement","represents","rsquo","runners","setapp","share","sharing","source","srcset","subscriber","subscription","switched","syntax","textindex","title","today","tools","tried","tuist","under","uploads","while","width","works"]
	},{
		"title": "lsgrep - rapid recursive file search",
		"url": "/2025/08/16/lsgrep-rapid-recursive-file-search/",
		"tags": ["terminal"],
		"date": "Aug 16<span>th</span>, 2025",
		"ts": "1755355080",
		"summary": "is just a simple tool I use to quickly find files matching a search pattern in the current directory. I just figured I&rsquo;d share it because I end up using it a lot. My primary shell is Fish, so I&rsquo;ll share that one first. This version uses silver searcher (ag) to search for matches. The search uses wildcards ( for multiple characters and for a single character). Spaces get turned into and extensions (e.g. ) get escaped so the period matches. Here&rsquo;s a version in Bash (or Zsh) that uses instead, requiring no extra tools: Because doesn&rsquo;t allow for operators in the regex, it&rsquo;s a little bit broader of a search, but in 99% of cases the results are the same as the version. Hope that&rsquo;s useful",
		"keywords": ["expression","regular","script","shell","because","spaces","allow","because","broader","change","character","characters","deeper","depth","directory","doesn","either","escaped","extensions","extra","figured","files","first","function","higher","levels","little","matches","matching","multiple","operators","pattern","primary","quickly","regex","requiring","results","rsquo","search","searcher","share","shell","silver","simple","single","subdirectory","tools","turned","useful","using","version","wildcards"]
	},{
		"title": "Web Excursions for July 30th, 2025",
		"url": "/2025/07/30/web-excursions-for-july-30th-2025/",
		"tags": ["bookmarks"],
		"date": "Jul 30<span>th</span>, 2025",
		"ts": "1753883220",
		"summary": "Whether you&rsquo;re a new user or a seasoned pro, ScreenCastsONLINE offers in-depth screencasts on a wide range of topics, from tutorials to app discovery. Check it out. One Dollar Resume Review Get instant, AI-powered feedback on your resume for just $1. Includes personalized project suggestions, hackathon recommendations, and more. Findable An auditor to help you rank higher in AI searches. I don&rsquo;t love that this is a marketing angle we have to address now, but more and more users are finding my products through LLM searches. Visibility there is going to be key moving forward. Singify Pretty effective vocal removal for your next karaoke night. Limited free credits, but only $9/mo if you want more than 5 songs a month. QuickSheet - Light Spreadsheet QuickSheet by GnomeApps is a micro-spreadsheet app for your Mac’s menu bar. Instantly create, edit, and manage spreadsheets, perfect for quick office, budget,… Totally free! Want more great tips and apps? Check out ScreenCastsOnline",
		"keywords": ["brett","check","dollar","findable","gnomeapps","includes","instantly","light","limited","quicksheet","resume","screencastsonline","screencastsonline","singify","spreadsheet","totally","visibility","address","angle","apple","auditor","blockquote","brettterpstra","bterpstra","budget","class","create","credits","depth","discovery","dollar","effective","feedback","findableapp","finding","fineshare","going","great","hackathon","height","higher","holding","https","image","instant","karaoke","light","loading","marketing","media","members","micro","moving","night","noscript","offers","office","original","personalized","picture","powered","products","project","quick","quicksheet","range","recommendations","removal","remover","resume","rsquo","screencasts","screencastsonline","searches","seasoned","singify","songs","source","spreadsheet","spreadsheets","srcset","suggestions","techkareer","through","title","topics","tutorials","uploads","users","vocal","width"]
	},{
		"title": "Web Excursions for July 24th, 2025",
		"url": "/2025/07/24/web-excursions-for-july-24th-2025/",
		"tags": ["bookmarks"],
		"date": "Jul 24<span>th</span>, 2025",
		"ts": "1753376400",
		"summary": "Web excursions brought to you in partnership with CleanShot X, the absolute, hands-down best app for Mac screenshots. Get one of my all-time favorite apps here. Be My AI for Creating Photo Captions and Alt Text Allison Sheridan shares an awesome tool that, among it&rsquo;s amazing capabilities, can create perfect ALT text for images you share on social media. It&rsquo;s surprisingly accurate when describing images, and that kind of description is very important for disabled users. You should check it out. Apple’s macOS Apps Are the Weak Link Luc Beaudoin on the need for user-accessible ubiquitous linking in Apple&rsquo;s own apps. rippleprogress_bar.py Forum user Cavalierex ported my Riplle progress indicator to Python as a context manager. Looks great! knadh/listmonk High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. Single binary app. If I hadn&rsquo;t already bought multiple licenses for Sendy I would 100% be hosting this. I do all of my screenshots and screen recordings with CleanShot X. I love it to pieces. You should get it",
		"keywords": ["allison","allorimd","apple","beaudoin","brett","captions","cavalierex","cleanshot","creating","dkrzyd","forum","looks","photo","python","riplle","sendy","sheridan","single","absolute","accessible","accurate","amazing","among","apples","awesome","binary","bought","brettterpstra","brought","capabilities","check","class","cleanshot","context","create","dashboard","describing","description","disabled","excursions","favorite","forum","github","great","hands","height","holding","hosted","hosting","https","image","images","important","indicator","knadh","koolkit","licenses","linking","listmonk","loading","luccogzest","macos","macos","mailing","manager","media","modern","multiple","newsletter","noscript","original","partnership","performance","picture","pieces","podfeet","ported","readme","recordings","ripple","rsquo","screen","screenshots","share","shares","social","source","srcset","substack","surprisingly","title","ubiquitous","uploads","users","width"]
	},{
		"title": "47 years in this (scarred) skin",
		"url": "/2025/07/23/47-years-in-this-scarred-skin/",
		"tags": ["personal"],
		"date": "Jul 23<span>rd</span>, 2025",
		"ts": "1753273260",
		"summary": "My 47th birthday was a few days ago. 11 years ago, I wrote a post on my birthday, detailing my addiction and recovery, and while I won&rsquo;t go into the same points again, I thought I&rsquo;d write something in the same vein. Shortly after my last (third) stint in rehab in my early 20s, I had moved back in with my parents while I found my footing. In the depths of bipolar depression (undiagnosed at the time), I went into the basement, coiled a coat hanger into a spiral, heated it to white hot with a blow torch, and pressed it into my forearm. I almost passed out from the pain, but it was, in lieu of proper treatment, what I needed at the time. I&rsquo;ve always been extremely sensitive to sensation, both pleasurable and painful. It&rsquo;s part of why drugs always sat well with me &mdash; they were fun, but also an escape from physical and emotional pain. And I&rsquo;ve had lots of both my whole life. I didn&rsquo;t shy away from pain &mdash; I got tattoos, got in fights, slammed around in mosh pits, and all of that, but I always had drugs to keep me from feeling the brunt of it. But here I was, stone cold sober, seeking out the pain I&rsquo;d always sought to numb. It was clarifying, cathartic, and I felt peace like I hadn&rsquo;t in a long time. When I was a kid, we used to have those Just Say No films shown to us. They made smoking look cool enough that I started when I was 12. But what really got me was one on heroin and cocaine. The \"disastrous\" results they portrayed looked appealing to me at 8 or 9 years old. I decided early on that when I could get drugs, I would. It would narrow my world down to worrying about just one thing, and that was appealing. Nancy Reagan made sure I knew it would be painful, but I wanted it. It was, in essence, about focus. I had so many internal voices and contradictions that I just sought simplicity. And addiction offered that. Intense pain offers that as well. It&rsquo;s clarifying. Especially pain you can control when you can&rsquo;t control anything else. But I&rsquo;ve been clean for over 20 years, I&rsquo;ve been through years of therapy, and I have diagnoses and treatments for my various disorders. I don&rsquo;t seek out pain anymore. I don&rsquo;t need it the way I used to. Now I avoid it when I can, and have healthier ways of dealing with what I can&rsquo;t. I still have that brand on my arm, though. I look at it as a symbol of a painful time in my life, but the scar also&hellip;",
		"keywords": ["suffering","therapy","especially","intense","nancy","reagan","shortly","addiction","again","almost","alone","animal","anymore","appealing","avoid","basement","bipolar","birthday","brand","brunt","cathartic","changes","clarifying","clean","cocaine","coiled","contradictions","control","dealing","decided","depression","depths","detailing","diagnoses","disastrous","disorders","doesn","drugs","emotional","enough","escape","essence","favorite","feeling","fights","films","finding","focus","footing","forearm","foreleg","forget","found","hanger","healing","healthier","heated","heroin","hurting","internal","leaves","looked","matching","mdash","meant","moved","narrow","nature","needed","offered","offers","painful","parents","partner","passed","peace","physical","pleasurable","points","portrayed","pressed","proper","raccoon","recovery","rehab","remembering","reminder","reminds","representing","represents","results","right","rsquo","seeking","sensation","sensitive","shown","simplicity","slammed","smoking","sober","sought","spiral","started","stint","stone","symbol","tattoos","temporary","therapy","third","thought","through","torch","treatment","treatments","uncertainty","undiagnosed","various","voices","wanted","while","white","whole","world","worrying","write","wrote","years"]
	},{
		"title": "The Liiift giveaway winners!",
		"url": "/2025/07/18/the-liiift-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jul 18<span>th</span>, 2025",
		"ts": "1752861600",
		"summary": "The Liiift giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Liiift is still worth checking out. Make your weightlifting workouts more effective with Liiift! Try it out today and see the difference it can make in your fitness journey. That&rsquo;s the end of this giveaway series for now! If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["exercise","fitness","iphone","weightlifting","workout","congratulations","flavin","ksiazek","liiift","lionetti","mastodon","rebecca","tucker","yinan","announce","checking","details","difference","effective","email","ended","fitness","giveaway","journey","notifications","received","rsquo","series","sorry","suggest","today","weightlifting","winners","workouts","worth"]
	},{
		"title": "Liiift giveaway!",
		"url": "/2025/07/14/liiift-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Jul 14<span>th</span>, 2025",
		"ts": "1752498000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($19.99 value each) for Liiift. I don&rsquo;t lift much these days, but this app looks good enough to get me back into it. Liiift is a beautiful iOS app designed to help you get the most out of your weightlifting workouts. This giveaway is for lifetime licenses! Liiift is an iOS workout tracker and planner for weightlifting routines. It helps you stay focused in the gym with rest timer, and pushes you further with a power bar that compares your current progress to your typical lifts. Liiift packs power in a simple, offline-first, iOS-native design that feels right at home. Sign up below to enter. Winners will be randomly drawn on Friday, July 18, at 12pm Central. The drawing is for 5 licenses ($19.99 value each) for Liiift, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["exercise","fitness","iphone","weightlifting","workout","central","check","entries","friday","liiift","mastodon","sorry","winners","among","appreciated","beautiful","below","brettterpstra","codes","compares","cooperation","design","designed","developer","drawing","ended","enough","enter","excited","featured","feels","first","focused","generating","giveaway","giveaways","helps","license","licenses","lifetime","lifts","looks","mailing","names","native","offer","offline","packs","planner","pushes","randomly","reading","right","robot","routines","rsquo","series","signups","simple","skipped","timer","tracker","typical","value","vendors","visit","weightlifting","winner","workout","workouts"]
	},{
		"title": "Ripple: an indeterminate progress indicator",
		"url": "/2025/06/30/ripple-an-indeterminate-progress-indicator/",
		"tags": ["scripting"],
		"date": "Jun 30<span>th</span>, 2025",
		"ts": "1751279040",
		"summary": "I made a thing I think is pretty cool. It&rsquo;s an indeterminate progress indicator for use in your scripts, inspired by the way Cursor indicates it&rsquo;s working. In Cursor, when it&rsquo;s generating or thinking, it shows some text that looks like a spotlight is panning across it. I figured it would be easy enough to replicate, so I did. To use it in a script, just save the code in the gist to a file called in your $PATH (or right next to your script). Then call . Ripple will run the command, and while it&rsquo;s waiting it will \"ripple\" the text provided. Just a little fun thing, let me know if you find it useful! Here&rsquo;s the gist again",
		"keywords": ["cursor","script","cursor","ripple","across","again","argument","block","called","command","enough","figured","generating","indeterminate","indicates","indicator","inspired","library","little","looks","options","panning","replicate","right","ripple","rsquo","running","script","scripts","shows","spotlight","string","think","thinking","useful","waiting","while","working","works"]
	},{
		"title": "The Mac Users's Guide to Saner Email in 2025 [Sponsor]",
		"url": "/2025/06/19/the-mac-userss-guide-to-saner-email-in-2025-sponsor/",
		"tags": ["sponsor"],
		"date": "Jun 19<span>th</span>, 2025",
		"ts": "1750338000",
		"summary": "Thanks to SaneBox for sponsoring BrettTerpstra.com this week! Rather than the typical sponsored post, I&rsquo;ve opened up the blog to a guest post from SaneBox&rsquo;s Thomas Yuan. Not a typical thing for me, but I&rsquo;m a huge fan of SaneBox and Thomas&rsquo; tools are a perfect fit for my readers (and my own preferences). Please enjoy! Picture this: There&rsquo;s a constant stream of messages filling your inbox, from notifications to urgent memos to mailing lists you joined 10 years ago. But instead of getting distracted, feeling overwhelmed, or spending hours sifting through them, every email is filed right where you need it. This is the beauty of implementing email management tools. With the right email stack, you can put the most labor-intensive tasks on autopilot and waste much less time in your inbox. Here&rsquo;s how I built my own low-maintenance workflow &mdash; and the tools that help me do it. Without filters and workflows, your inbox is a messy stream of information and requests, all with different levels of urgency. If you try to organize your inbox manually, you&rsquo;ll waste hours every week on a never-ending battle&hellip; as soon as you deal with one email, three more pop up in its place! That&rsquo;s why an email stack that leverages AI is so powerful. It can take the hard work out of managing your email, but you still control the rules. Powerful filtering: I need to see exactly what&rsquo;s urgent without being distracted by newsletters, calendar invites, notifications, and other messages that can wait. Features to help me prioritize: I like to queue up each day&rsquo;s high-priority tasks and take distractions out of sight. This prevents me from getting dragged into the guilty mindset of \"I&rsquo;ll just tackle one more message&hellip;\" Learning support: I subscribe to a ton of newsletters, from product releases to tech blogs, but they&rsquo;re useless if they simply drift down my Inbox. 1. MailMate + SaneBox = efficient, customizable inbox management MailMate is my favorite email client on Mac and if you live by keyboard shortcuts it might be perfect for you, too. I use it to set up a tagging system to help organize my emails. SaneBox, which works across different email clients, is the perfect complement to MailMate. It adds a trainable intelligence layer that automatically organizes my email into categories. Here&rsquo;s how I get the most out of SaneBox: Trainable AI: To train SaneBox, I drag an email&hellip;",
		"keywords": ["email","gmail","icloud","sanebox","blackhole","blast","blaze","bonus","brettterpstra","check","clean","daily","digest","doesn","eisenhower","email","emailing","evening","features","inbox","learning","mailmate","matrix","midday","morning","picture","powerful","productivity","rather","reminders","routine","sanebox","sanelater","sanereading","simplicity","snooze","stack","streamlining","textexpander","thanks","thomas","tools","trainable","turning","ability","across","activate","adding","additions","again","allow","another","archiving","attachment","automatically","autopilot","battle","beauty","because","behaves","benefits","blast","blogs","built","busters","calendar","catch","categories","check","cleaner","cleaning","clear","click","client","clients","comes","complement","confidence","considers","consistently","constant","control","cracks","create","custom","customizable","daily","decisive","decisively","defined","deleting","different","dirty","display","distracted","distraction","distractions","doesn","dominate","dragged","drift","duplication","earlier","efficient","effort","email","emails","ending","enjoy","essential","evenings","everywhere","executive","experience","family","faster","favorite","feature","features","feeling","filed","filling","filtering","filters","folder","folders","frame","getting","gives","great","guest","guilty","handle","hellip","hours","implementing","important","inbox","information","ingredients","intelligence","intensive","introduction","invites","joined","keyboard","keystrokes","labor","layer","levels","leverages","likes","links","lists","longer","lunch","mailing","maintenance","management","managing","manually","maximize","mdash","memos","message","messages","messy","mindset","morning","needed","newsletters","nothing","notifications","opened","organize","organizes","overwhelmed","periodically","personal","polite","powerful","preferences","prevents","prioritize","priority","product","queue","quick","reader","readers","ready","rebuild","recognize","releases","reminders","replies","reply","requests","right","risky","routine","rsquo","rules","sender"]
	},{
		"title": "Web Excursions for June 13th, 2025",
		"url": "/2025/06/13/web-excursions-for-june-13rd-2025/",
		"tags": ["bookmarks"],
		"date": "Jun 13<span>th</span>, 2025",
		"ts": "1749814320",
		"summary": "Whether you&rsquo;re a new user or a seasoned pro, ScreenCastsONLINE offers in-depth screencasts on a wide range of topics, from tutorials to app discovery. Check it out. This installment of Web Excursions owes a lot to Christina Warren&rsquo;s GitHub stars. If you track GitHub stuff at all, you should definitely be following her. CMA Forms - Privacy-First Form Builder Build stylish, multi-step forms with exportable responses and no tracking. 100% free. steipete/macos-automator-mcp An MCP (Model Context Protocal) server to run AppleScript and JXA (JavaScript for Automation) on macOS. It&rsquo;s a pretty intense project for this kind of thing, but if you want remote scripting capabilities on your Mac and have a little bit of Node.js experience, this should fit the bill nicely. livingbio/typed-ffmpeg FFmpeg is a beast of a tool with more filters than anyone could keep track of. This project provides Python FFmpeg wrappers with typing and docs, and there&rsquo;s a very cool online playground that can parse FFmpeg commands into a node-based visual editor, and vice versa. kepano/defuddle: Extract the main content from web pages. A TypeScript app to extract the main content from web pages. Not what I need for something like Marky the Markdownfier, but seems accurate and might be great for your next web scraping project. bolt.new I actually haven&rsquo;t tried this out yet, but my friends are all talking about it. For the vibe coders out there&hellip; WS4000 Simulator Windows only, but pretty cool. Bring back that 1990s Weather Channel look for your weather forecast. There&rsquo;s a web-based version of this idea here, with a public GitHub repo. Want more great tips and apps? Check out ScreenCastsOnline",
		"keywords": ["applescript","ffmpeg","github","applescript","automation","bring","build","builder","channel","check","christina","context","excursions","extract","ffmpeg","first","forms","github","javascript","markdownfier","marky","model","privacy","protocal","python","screencastsonline","screencastsonline","simulator","typescript","warren","weather","windows","accurate","anyone","automator","based","beast","capabilities","coders","commands","content","definitely","defuddle","depth","discovery","editor","experience","exportable","extract","ffmpeg","filters","forecast","forms","friends","great","haven","hellip","installment","intense","kepano","little","livingbio","macos","macos","multi","nicely","offers","online","pages","parse","playground","project","provides","public","range","remote","responses","rsquo","scraping","screencasts","scripting","seasoned","seems","server","stars","steipete","stuff","stylish","talking","topics","track","tracking","tried","tutorials","typed","typing","versa","version","visual","weather","wrappers"]
	},{
		"title": "The Summit giveaway winners!",
		"url": "/2025/06/06/the-summit-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jun 6<span>th</span>, 2025",
		"ts": "1749232800",
		"summary": "The Summit giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Summit is still worth checking out. Most of Summit is free to use forever, including core features like agenda building, time tracking, and action items. For more advanced tools &mdash; like creating the next meeting in a series, enhanced meeting chimes, and more &mdash; you can upgrade to Summit PRO. Use the code to get $100 off Summit PRO through June 30 &mdash; just $49.99 (regularly $149.99). Try it out and see how much more effective your meetings can be. If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["macos","meetings","productivity","antonio","colleen","congratulations","denis","eliyyahu","ferrare","fraatz","frantzis","giveaway","marco","mastodon","nerdtreats","panos","ricard","robot","sebastien","shaffer","simpson","summit","thugnet","watch","yaaqoub","action","advanced","agenda","announce","background","brettterpstra","building","checking","chimes","class","confetti","contact","creating","details","didnt","easydns","effective","email","ended","enhanced","features","forever","giveaway","giveaways","height","highlighter","https","image","including","items","language","loading","mdash","media","meeting","meetings","ministryofbits","nojack","noscript","notifications","original","picture","plaintext","received","regularly","rouge","rsquo","series","sorry","source","srcset","subscribe","suggest","summit","through","title","tools","tracking","ttscoff","upgrade","uploads","width","winners","worth"]
	},{
		"title": "Web Excursions for June 5th, 2025",
		"url": "/2025/06/05/web-excursions-for-june-5th-2025/",
		"tags": ["bookmarks"],
		"date": "Jun 5<span>th</span>, 2025",
		"ts": "1749144300",
		"summary": "Web excursions brought to you in partnership with CleanShot X, the absolute, hands-down best app for Mac screenshots. Get one of my all-time favorite apps here. Surf the Web Privately with Mullvad&rsquo;s Global Network + Tailscale PSA: I mentioned the Mullvad VPN in a recent Web Excursions post, and said that I&rsquo;d discovered the hard way that it didn&rsquo;t work with Tailscale. I heard from a ton of people that there was actually an official integration for that. For $5/mo you can add Mullvad as an exit point to Tailscale and use both at the same time. The Complete Collection Of MTV HEADBANGERS BALL Nostalgic. A faster way to copy SQLite databases between computers This is basically the way I used to copy SQL databases back when I used them more often. Dump a stable copy, compress and rsync, uncompress and import. NameQuick - Rename files effortlessly on macOS Transform your file management with intelligent, automated file renaming powered by AI. Perfect for designers, developers, and content creators. This is a pretty nifty little app that intelligently names things like screenshots and PDFs based on their contents. It can even accept templates telling it what information to look for in the contents and then filling in blanks with the results. And it can watch entire folders and rename files as they&rsquo;re added. I&rsquo;ve talked to the developer about add Shortcuts integration so it can be inlined into things like Hazel workflows, and he says he&rsquo;s working on it! I do all of my screenshots and screen recordings with CleanShot X. I love it to pieces. You should get it",
		"keywords": ["adobe","computer","manager","photoshop","rsync","sqlite","synchronization","tailscale","tracker","cleanshot","collection","excursions","global","headbangers","hazel","mullvad","namequick","network","nostalgic","privately","rename","sqlite","shortcuts","tailscale","transform","absolute","accept","added","automated","based","between","blanks","brought","compress","computers","content","contents","creators","databases","designers","developer","developers","discovered","effortlessly","entire","excursions","faster","favorite","files","filling","folders","hands","heard","import","information","inlined","integration","intelligent","intelligently","little","macos","management","mentioned","names","nifty","official","often","partnership","people","pieces","point","powered","recent","recordings","rename","renaming","results","rsquo","rsync","screen","screenshots","stable","talked","telling","templates","uncompress","watch","workflows","working"]
	},{
		"title": "Summit giveaway!",
		"url": "/2025/06/02/summit-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Jun 2<span>nd</span>, 2025",
		"ts": "1748869200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 10 licenses ($149.99 value each) for Summit. Summit is an elegant tool for making the most of meetings, from building agendas to keeping meetings on track with timers and other tools. If you&rsquo;re in charge of meeting planning, whether for work or your personal clubs and groups, you should check Summit out. (Also available for Windows.) Summit is a macOS app that helps professionals run smarter, more focused meetings. With tools for setting clear agendas, automatic time tracking, and built-in support for creating polished meeting minutes, Summit brings order to the chaos and turns meetings into a productive part of your workflow. If your meetings often run long, lose focus, or generate more confusion than clarity, Summit helps you tighten things up and get real results. Sign up below to enter. Winners will be randomly drawn on Friday, June 06, at 12pm Central. The drawing is for 10 licenses ($149.99 value each) for Summit, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. If you have an app you&rsquo;d love to see featured as a BrettTerpstra.com giveaway, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["macos","meetings","productivity","brettterpstra","central","check","entries","friday","mastodon","sorry","summit","windows","winners","agendas","among","appreciated","automatic","available","below","brettterpstra","brings","building","built","chaos","charge","check","clarity","clear","clubs","codes","confusion","cooperation","creating","developer","drawing","elegant","ended","enter","excited","featured","first","focus","focused","generating","giveaway","groups","helps","keeping","license","licenses","macos","mailing","making","meeting","meetings","minutes","names","offer","often","personal","planning","polished","productive","professionals","randomly","reading","results","robot","rsquo","series","setting","signups","skipped","smarter","support","tighten","timers","tools","track","tracking","turns","value","vendors","visit","winner","workflow"]
	},{
		"title": "The Trickster giveaway winners!",
		"url": "/2025/05/09/the-trickster-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "May 9<span>th</span>, 2025",
		"ts": "1746813600",
		"summary": "The Trickster giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Trickster is still worth checking out. Stop searching and start finding your files with Trickster. Until the end of May you can use the coupon BRETT10 to take $10 off the price. Click here to automatically activate the discount! By the way, Trickster is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. That&rsquo;s the end of this giveaway series for now! If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["files","macos","utility","brett","cecchini","click","congratulations","denton","jacobs","mastodon","paolo","pascal","setapp","smeets","trickster","activate","amazing","announce","automatically","available","checking","coupon","details","discount","email","ended","files","finding","giveaway","hundreds","notifications","price","received","rsquo","searching","series","sorry","subscription","suggest","winners","worth"]
	},{
		"title": "Web Excursions for May 6th, 2025",
		"url": "/2025/05/06/web-excursions-for-may-6th-2025/",
		"tags": ["bookmarks"],
		"date": "May 6<span>th</span>, 2025",
		"ts": "1746536400",
		"summary": "Web excursions brought to you in partnership with Tower, the absolute best Git GUI for macOS. Mullvad VPN - Free the internet A full-privacy VPN for about $5/month. Works great, no logging, it doesn&rsquo;t even associate with your email address. Note: Does not work with TailScale running, as I found out. Hat tip to Victor Agreda! BashBuddy BashBuddy is an AI-powered terminal assistant that helps you write commands with natural language. The Written Image Dude&rsquo;s over there doing ascii art on a vintage typewriter. Servo Servo aims to empower developers with a lightweight, high-performance alternative for embedding web technologies in applications. Servo is an open source web rendering engine project, hopefully with a future. Written in Rust, with WebGL and WebGPU support, and adaptable to desktop, mobile, and embedded applications. Could be an interesting development in a world where pretty much all embedded web browsers are WebKit. If you&rsquo;re using Git, you need Tower. Check it out today",
		"keywords": ["internet","mullvad","network","privacy","private","servo","virtual","webgl","webgpu","webkit","world","agreda","bashbuddy","check","image","mullvad","servo","tailscale","tower","victor","webgl","webgpu","webkit","works","written","absolute","adaptable","address","applications","ascii","assistant","associate","brought","browsers","commands","desktop","developers","development","doesn","doing","email","embedded","embedding","engine","excursions","found","great","helps","hopefully","interesting","internet","language","lightweight","logging","macos","mobile","natural","partnership","performance","powered","privacy","project","rendering","rsquo","running","source","support","technologies","terminal","today","typewriter","using","vintage","where","world","write"]
	},{
		"title": "Trickster giveaway!",
		"url": "/2025/05/05/trickster-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "May 5<span>th</span>, 2025",
		"ts": "1746450000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($29.99 value each) for Trickster. I was wrong, the series continues for at least one more app. You know how handy \"Open recent file\" is in your favorite apps? What if you could have that, but for every file you&rsquo;ve recently interacted with? That&rsquo;s what Trickster does, putting all your recent files in your menu bar, whether you recently read it in Preview, downloaded it from a website, or just had it open in any application. Instant access, and keyboard and mouse friendly. Don&rsquo;t worry about where you just saved a certain file, it&rsquo;s in your menu bar. Closed the wrong window? The document you were reading is in Trickster, one click away. Sign up below to enter. Winners will be randomly drawn on Friday, May 09, at 12pm Central. The drawing is for 3 licenses ($29.99 value each) for Trickster, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["files","macos","utility","central","check","closed","entries","friday","instant","mastodon","preview","sorry","trickster","winners","access","among","appreciated","below","brettterpstra","certain","click","codes","continues","cooperation","developer","document","downloaded","drawing","ended","enter","excited","favorite","featured","files","first","friendly","generating","giveaway","giveaways","handy","interacted","keyboard","license","licenses","mailing","mouse","names","offer","putting","randomly","reading","recent","recently","robot","rsquo","saved","series","signups","skipped","value","vendors","visit","website","where","window","winner","worry","wrong"]
	},{
		"title": "The Yoink giveaway winners!",
		"url": "/2025/05/02/the-yoink-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "May 2<span>nd</span>, 2025",
		"ts": "1746208800",
		"summary": "The Yoink giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Yoink is still worth checking out. Simplify and improve drag and drop on your Mac and speed up your daily workflow. If you want to get your hands on Yoin, check out the Eternal Storms software bundle and save 20%! By the way, Yoink is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Trickster. Check back every Monday through May, 2025 for more giveaways. If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["files","macos","utility","alessandro","campeis","chamness","check","congratulations","degruchy","eternal","harrison","henry","mastodon","monday","nathan","setapp","simplify","storms","trickster","yoink","amazing","announce","available","bundle","check","checking","daily","details","email","ended","giveaway","giveaways","hands","hundreds","improve","notifications","received","rsquo","series","software","sorry","speed","subscription","suggest","through","winners","workflow","worth"]
	},{
		"title": "Mac File-Finding Gems",
		"url": "/2025/05/02/mac-file-finding-gems/",
		"tags": ["macos","utility"],
		"date": "May 2<span>nd</span>, 2025",
		"ts": "1746190800",
		"summary": "You&rsquo;re probably familiar with Spotlight, but there are other ways to find files on your Mac. And some of them don&rsquo;t get enough love. I&rsquo;ve tried all of these, and I like them all for different reasons. I&rsquo;m generally happy with HoudahSpot when Spotlight fails me, but I wanted to point these out because they fit specific use-cases &mdash; maybe ones you run into often enough to try them out. This article refers multiple times to the Hyper key. If you haven&rsquo;t followed me over the years, the Hyper key is a combination of ⌃+⌥+⇧+⌘, which I have assigned to my Capslock key via Karabiner Elements. HoudahSpot is my favorite Spotlight companion. It allows extremely configurable searches with saved templates and a great popup search. The results are easy to work with, with all of the capabilities you&rsquo;d have in Finder and elsewhere. I don&rsquo;t think I&rsquo;ve ever not been able to find a file I was looking for with HoudahSpot. These days I usually skip Spotlight and just open HoudahSpot&rsquo;s search, which I have configured on ⇧+⌘+space. HoudahSpot has great tag autocomplete, so I use it a lot for tagging files. I have Hazel tag all new files in my Desktop and Downloads folder Purple, then I have a HoudahSpot search template that locates all Purple files within those directories (shallow search using a filter), and tag them within HoudahSpot so my TagFiler script can sort them into folders. Find Any File (FAF) is another great complement to Spotlight. It searches in much the same way as Spotlight, with all kinds of criteria, but it can search network and attached drives that Spotlight can&rsquo;t. It can also search for text strings inside of zip files and even in binaries. And it can include Spotlight results in its own results, making it a pretty complete replacement for the built-in Spotlight search. FAF can create searches with multiple criteria, such as filename, extension, date, kind, and more. Its searches take more time than Spotlight, especially if you&rsquo;re searching network drives, and you have to manually set up the criteria (as opposed to using search syntax), but it will definitely find that file you were looking for. I like that you have the option in the results window to display files in their directory heirarchy, grouped by location, making it easy to discern between similar matches. I have FAF&rsquo;s popup search configured to Hyper+S. GoToFile pops up a search field and displays&hellip;",
		"keywords": ["default","desktop","engine","files","folder","gotofile","hookmark","search","ammonite","backuploupe","capslock","clair","command","control","devonthink","default","defaultfolderx","desktop","downloads","elements","finder","firefox","folder","gotofile","hazel","hookmark","houdahspot","hyper","instantly","ironic","karabiner","launchcontrol","links","machine","markdown","marked","obsidian","omnifocus","oreilly","publisher","purple","quick","search","searching","shift","simply","software","space","spotlight","synology","tagfiler","trickster","useful","whenever","wrapping","abilities","access","accessed","accessing","advanced","alert","allowed","allows","amazing","ammonite","another","apparentsoft","archiving","article","assign","assigned","attached","autocomplete","backs","backups","based","because","before","between","binaries","blockquote","brettterpstra","browser","built","bunch","capabilities","character","class","click","clicking","cloud","colons","combination","combiner","comment","companion","compatible","complement","configurable","configured","continues","couple","create","criteria","customizable","databases","decade","default","definitely","detachable","developer","dialogs","different","directories","directory","discern","discussion","display","displays","documents","doesn","doing","downloaded","drill","drives","dropdowns","easily","editing","editor","elements","elsewhere","enough","especially","excellent","excludes","expansion","expression","extension","fails","familiar","favorite","feature","features","field","filename","files","filing","filter","filters","findanyfile","finding","first","focused","focuses","folder","folders","followed","forum","front","functionality","fuzzy","generally","gotofile","great","grouped","groups","handy","happy","haven","height","heirarchy","hierarchies","hierarchy","hooking","hookmark","hookproductivity","houdah","houdahspot","houdahspot","https","hyper","image","includes","index","indexes","inside","instructions","intensely","interact","interest","internally","ironicsoftware","itself","karabiner","keeps","keyboard","keycombo","keystrokes","kinds","latest","launch","launchd","ldquo","legitimate","level","license","linked","lives"]
	},{
		"title": "Web Excursions for May 1st, 2025",
		"url": "/2025/05/01/web-excursions-for-may-1st-2025/",
		"tags": ["bookmarks"],
		"date": "May 1<span>st</span>, 2025",
		"ts": "1746123060",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Cotypist – AI Autocomplete for Mac Cotypist autocompletes using AI in any text field on your Mac, and its completions are really good. I assigned the same keyboard shortcuts I use in Fish for accepting completions, so the muscle memory is there. I&rsquo;m both already used to it and frequently impressed by it. The Fish Doorbell — The Fish Doorbell This is adorable. Did you spot a fish? Press the Fish Doorbell! This alerts our lock operator to let the fish through. The Fish Doorbell is in Utrecht, NL. A Modern CSS Reset A modern take on the CSS Reset from Josh W. Comeau: I have a set of baseline CSS styles that come with me from project to project. In the past, I&rsquo;d use a typical CSS reset, but times have changed, and I believe I have a better set of global styles! Tintd Customize and colorize your MacOS folder icons in one click. Choose from 1500+ icons, create custom colors, and make your Desktop beautiful. A handy little app I&rsquo;ve enjoyed using. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["doorbell","keyboard","macos","autocomplete","backblaze","brett","check","choose","comeau","cotypist","customize","desktop","doorbell","macos","modern","press","reset","tintd","utrecht","accepting","adorable","affordably","alerts","assigned","autocompletes","backblaze","backs","baseline","beautiful","believe","blockquote","brettterpstra","brought","changed","class","click","cloud","colorize","colors","completions","computer","cotypist","create","custom","enjoyed","entire","everything","excursions","field","folder","global","handy","height","holding","https","icons","image","impressed","joshwcomeau","keyboard","little","loading","media","memory","modern","muscle","noscript","operator","original","partnership","picture","project","reliably","reset","rsquo","secure","securely","shortcuts","source","srcset","styles","through","times","tintd","title","today","typical","uploads","using","visdeurbel","width"]
	},{
		"title": "Celebrate your Mac with the Eternal Storms software bundle",
		"url": "/2025/05/01/celebrate-your-mac-with-the-eternal-storms-software-bundle/",
		"tags": ["sponsor"],
		"date": "May 1<span>st</span>, 2025",
		"ts": "1746104400",
		"summary": "Thanks to Eternal Storms for sponsoring BrettTerpstra.com this week! I&rsquo;ve long been a fan of Yoink and ScreenFloat, so I highly recommend taking advantage of this offer! Celebrate your Mac with the Eternal Storms Software Productivity Bundle &mdash; a collection of four awesome Mac apps, at one great discounted price! Yoink: A \"file shelf\" that makes drag-and-drop a whole lot easier: just drag a file or app-content like images from a website to the edge of your screen, and Yoink gives you a temporary shelf to place them in, so you&rsquo;re free to navigate to their final destination on your disk. ScreenFloat: Your Screen Capture All-Rounder. From floating screenshots that help you keep things in mind, over iCloud-synced storage, organization, and vast editing and annotation capabilities, to OCR and QR-code recognition and more, if you take screenshots or record your screen, it might become your new best friend. Transloader: Start downloads on your Mac, remotely from your iPhone, iPad, and other Macs. No more emailing yourself links, or weird AirDrop workarounds. DeskMat: Cover up the mess on your Desktop, for cleaner streams, video conferencing, screen sharing, and distraction-free work! Enjoy your Mac even more, with apps that help you get stuff done! Check out the Eternal Storms Software Productivity Bundle right now on the website or directly on the Mac App Store and get Yoink, ScreenFloat, Transloader and DeskMat at 20% off! (Price varies by region.)",
		"keywords": ["apple","calendar","airdrop","brettterpstra","bundle","capture","celebrate","check","cover","deskmat","desktop","enjoy","eternal","price","productivity","rounder","screen","screenfloat","software","store","storms","thanks","transloader","yoink","acclaimed","advantage","annotation","awesome","capabilities","cleaner","collection","conferencing","content","critically","destination","directly","discounted","distraction","downloads","easier","editing","emailing","floating","friend","gives","great","highly","icloud","iphone","images","includes","links","makes","mdash","navigate","offer","organization","price","recognition","recommend","record","region","remotely","right","rsquo","screen","screenshots","sharing","shelf","sponsoring","storage","streams","stuff","synced","taking","temporary","varies","video","website","weird","whole","workarounds"]
	},{
		"title": "Leader Key and Bunch",
		"url": "/2025/04/30/leader-key-and-bunch/",
		"tags": ["bunch","launcher","leaderkey"],
		"date": "Apr 30<span>th</span>, 2025",
		"ts": "1746018000",
		"summary": "I&rsquo;ve been playing around with a free app called Leader Key from @mikker, and realized it could be used very effectively with Bunch. It takes a little manual setup, but it&rsquo;s not hard. Leader Key is an interesting launcher app that lets you assign single letter keystrokes to launch apps, urls, run commands, or open folders. Yes, all of this can be done fairly easily with Alfred or LaunchBar, but I really like the single-key approach. Once you develop muscle memory for an app, it&rsquo;s faster than LaunchBar for me. Not a big difference, but it&rsquo;s fun to play with. And you can nest key commands to make launcher groups that are 2+ keystrokes, usually assigned mnemonically, so f,d could open \"Folder\", \"Desktop\", for example. Bunch has a URL handler that can, among other thing, instantly launch/toggle Bunches. And Leader Key can take a url handler URL. It&rsquo;s that simple. To open a Bunch with a url, just use . You can also use or to handle different actions. Just add keys for your favorite Bunches and launch them with keystrokes. You can make this super simple by making them single-key launchers (at the top level of Leader Key), but I&rsquo;ve hidden them behind the B key to keep things clean. Just go into Settings in Leader Key and click \"Save to file.\" Then in Settings->Advanced, click \"Reveal\" under the file path to get to the config file. If you&rsquo;re looking to add better keyboard launching to Bunch, Leader Key is a free solution and easy to work with. By the way, you can combine Leader Key with Karabiner Elements to do things like launch it on a double ⌘ tap",
		"keywords": ["launchbar","advanced","alfred","bunch","bunch","bunches","command","desktop","dimspiration","elements","folder","karabiner","launchbar","leader","leaderkey","reveal","settings","actions","adding","among","approach","assign","assigned","behind","block","brettterpstra","bunch","bunchapp","called","class","clean","click","close","commands","config","develop","difference","different","dimspiration","double","easily","effectively","elements","example","fairly","faster","favorite","folders","github","group","groups","handle","handler","height","hidden","highlight","highlighter","https","image","instantly","integration","interesting","karabiner","keyboard","keycombo","keystrokes","label","language","launch","launcher","launchers","launching","ldquo","leader","letter","level","little","loading","looking","making","manual","mastodon","media","memory","mikker","mikker&#39;s","mnemonically","muscle","noscript","original","pasting","picture","plaintext","playing","potentially","process","rdquo","realized","rouge","rsquo","separated","setup","shadow","simple","single","social","solution","source","speed","srcset","strong","super","symbol","takes","title","toggle","under","uploads","using","usually","value","width"]
	},{
		"title": "Yoink giveaway!",
		"url": "/2025/04/28/yoink-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Apr 28<span>th</span>, 2025",
		"ts": "1745845200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 4 licenses ($8.99 value each) for Yoink. This might be the last app in the series, I think &mdash; it&rsquo;s been a good run (for over a year and a half!). Eternal Storms software is offering 4 licenses for their excellent utility, Yoink. Yoink puts a shelf on your desktop to which you can drag items, and then drag them out later. Why? It allows you to collect files from different places to move, copy, or otherwise act on all at once, and it can make it much simpler to drag files between apps, windows, and spaces. It&rsquo;s really handy, and you&rsquo;ll start realizing that right away. Virtually anything you can drag on your Mac, Yoink can hold for you until you need it. From files in Finder to app-content (like text from word processors or images from websites), Yoink has got you covered. Sign up below to enter. Winners will be randomly drawn on Friday, May 02, at 12pm Central. The drawing is for 4 licenses ($8.99 value each) for Yoink, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["files","utility","central","check","entries","eternal","finder","friday","mastodon","sorry","storms","winners","yoink","allows","among","appreciated","below","between","brettterpstra","codes","collect","content","cooperation","covered","desktop","developer","different","drawing","ended","enter","excellent","excited","featured","files","first","generating","giveaway","giveaways","handy","images","items","later","license","licenses","mailing","mdash","names","offer","offering","offers","places","processors","randomly","reading","realizing","right","robot","rsquo","series","shelf","signups","simpler","skipped","software","spaces","think","utility","value","vendors","visit","websites","windows","winner"]
	},{
		"title": "Brett Terpstra is open to work",
		"url": "/2025/04/26/brett-terpstra-is-open-to-work/",
		"tags": ["jobhunting"],
		"date": "Apr 26<span>th</span>, 2025",
		"ts": "1745695320",
		"summary": "After 4 years with Oracle, I find myself free for new work. I met a lot of good people there, but am excited about the possibility of a new path. I&rsquo;m scared in the short term, but optimistic for the long term. Direct support, either monthly, or a one-time donation Blog Sponsorship/Advertising Let me know if you have any job leads (see below for more about what I&rsquo;m looking for) Hire me or recommend me as an efficiency/automation consultant First off, I&rsquo;d really appreciate your direct support in this scary time. If you care about what I do &mdash; use my utilities and apps, listen to my podcasts, or have just enjoyed my writing over the last 15 years &mdash; I&rsquo;d love it if you could contribute what you can afford. Sign up for monthly support , or make a one-time donation to help defray my costs. I promise to keep making cool stuff. Any support is great. I&rsquo;ll have some extra time for the next however long, so between sending out resumes I&rsquo;ll be working on some personal projects. I&rsquo;ll probably focus most on the ones that actually pay, so if you have any feature requests for Marked , just want to see nvUltra out the door, or think I should make something like Bunch a paid app, please let me know! Left to my own devices, I tend to make stuff I want but which is ostensibly silly. I enjoy making stupid things, some of which turn out to be useful to others. But if you have a need for a tool you think would also be commercially viable, I&rsquo;d love to hear about it. I stopped regularly selling sponsorship spots on this blog because I had a good-paying job and I didn&rsquo;t need/have time for sales. Despite a decline in traffic in the age of social media, I still have a healthy number of visitors to my single-developer site, I have decent social media reach, and my Google ranking is high for almost all of the topics I talk about. During this period where I have more time for sales, I&rsquo;m planning to start actively offering sponsorships again. If you have a product or service you think my tech-and-Apple-related audience would appreciate, please reach out. I have reduced rates for indie developers! See here for more information . If you know of a job opening at your company you&rsquo;d be willing to recommend me for, please contact me. I have romantic visions of being an independent developer/writer again, but I know full well it doesn&rsquo;t really pay the bills, and I don&rsquo;t need to drain&hellip;",
		"keywords": ["advocate","consulting","developer","development","relations","sponsorship","technical","writer","advertising","apple","bunch","confluence","consulting","direct","email","first","google","hunting","javascript","junior","linkedin","making","markdown","marked","mastodon","memberful","oracle","paypal","sponsorship","support","thank","vcard","accomplished","actively","advocacy","again","almost","amounts","anyone","appreciate","appreciated","assuming","audience","automation","backlink","because","below","between","bills","break","brettterpstra","brush","bunchapp","business","charged","class","coding","commercially","community","companies","company","consulation","consultant","consultants","consulting","contact","content","continue","contribute","convert","creation","creativity","curiosity","customized","decades","decent","decline","defray","developer","developers","development","devices","different","direct","doesn","donate","donation","drain","dream","dreary","duties","efficiency","either","eliminate","email","employer","employment","endnotes","enjoy","enjoyed","enough","eradicate","especially","excited","experience","expert","expertise","extra","feature","field","figure","fnref","focus","footnote","footnotes","forum","found","funds","gainful","general","gladly","great","greatly","hachyderm","healthy","helping","hired","hours","however","https","ideal","improve","improving","income","independent","indie","information","interested","interview","jobhunting","languages","leads","likely","linkedin","listen","little","living","looking","mailto","making","marked","mdash","media","monetary","monthly","multiple","myself","needs","nomadic","noteref","nvultra","nvultra","offer","offering","opening","opportunities","optimistic","ostensibly","others","paying","people","personal","planning","podcasts","polishing","position","possibility","preference","processes","product","projects","promise","publishing","pullquote","questions","ranking","rates","reach","reading","recommend","reduced","redundant","refresh","regularly","related","relations","requests","resume","resumes","retirement","reversefootnote","right","romantic","rsquo","sales","savings","scared","scary"]
	},{
		"title": "The CleanShot X giveaway winners!",
		"url": "/2025/04/26/the-cleanshot-x-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Apr 26<span>th</span>, 2025",
		"ts": "1745663820",
		"summary": "The CleanShot X giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but CleanShot X is still worth checking out. This is hands down the best screenshot app there is for Mac. Do yourself a favor and pick up a copy. By the way, CleanShot X is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. I&rsquo;ve added one more app to the giveaway list: Yoink. Check back every Monday through April, 2025 for more giveaways. If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["cleanshot","macos","screenshot","brian","check","cleanshot","congratulations","hofner","mastodon","mccabe","monday","ralph","setapp","yoink","added","amazing","announce","available","checking","details","email","ended","favor","giveaway","giveaways","hands","hundreds","notifications","received","rsquo","screenshot","series","sorry","subscription","suggest","through","winners","worth"]
	},{
		"title": "Supercharged Bookmarking: Hookmark + Linkding Integration",
		"url": "/2025/04/22/supercharged-bookmarking-hookmark-plus-linkding-integration/",
		"tags": ["guestpost","hookmark","linkding"],
		"date": "Apr 22<span>nd</span>, 2025",
		"ts": "1745354280",
		"summary": "Hookmark just added Linkding integration, and I&rsquo;m really excited about it. It&rsquo;s a perfect complement to the local bookmarking that Hookmark makes possible. I love Hookmark, and it&rsquo;s getting easier to explain as it develops. With Hookmark, you can connect any objects on your Mac to each other, from todo items to documents to notes to web pages. One of the cool features it&rsquo;s had for a while is sync with Pinboard, where any time you create or copy a link, it generates a Pinboard bookmark automatically. Very handy. But I switched from Pinboard to a self-hosted Linkding instance a little while ago and lost this integration. I took a shot in the dark and asked Luc to add Linkding integration to Hookmark, and guess what? Here it is. I&rsquo;m going to turn the rest of this post over to Luc Beaudoin to explain more. When it comes to organizing digital knowledge, fast and fluid access is everything. That’s why I’m thrilled to share how Hookmark, the contextual linking app from CogSci Apps, which I co-founded, now integrates seamlessly with Linkding &mdash; a modern, open-source alternative to legacy bookmarking services like Pinboard. I’ve written previously on Hookmark’s Linkding support, but this post dives deeper for readers of BrettTerpstra.com &mdash; people who appreciate tools that stay out of the way while leveling up your digital workflow. Pinboard has long been a favorite among power users, but it’s been stagnant for years. Its API works, but innovation has ground to a halt. In contrast, Linkding is an active, community-driven project with features that rival and even surpass Pinboard: Modern UI with responsive design Open source and self-hostable—ideal for those who value control and privacy Tagging, search, notes, and favicons Active development with new features and fixes arriving regularly While Linkding&rsquo;s default interface is minimal and functional, it supports customization through CSS. Users can tailor the UI to their preferences, and community contributions &mdash; such as Brett&rsquo;s card-based layout, &mdash;showcase the flexibility of Linkding&rsquo;s design In short, Linkding feels like what Pinboard could have become, had it kept pace with the needs of today’s knowledge workers. Hookmark lets you create persistent links between almost anything on your Mac—files, emails, web pages, tasks, you name it. Think of it as a universal “Copy Link” and “Hook to Copied Link” engine that helps&hellip;",
		"keywords": ["bookmark","bookmarking","browsers","favicon","pinboard","social","active","apple","automatically","beaudoin","brett","brettterpstra","caprover","closing","cogsci","cogsciapps","configure","copied","docker","enjoy","example","finder","hooking","hookmark","install","integrations","linkding","meets","modern","obsidian","omnifocus","pinboard","practical","services","settings","tagging","think","thoughts","users","whenever","while","ability","access","across","active","added","almost","among","anyone","apple","appreciate","archived","arriving","asked","automatically","autonomy","based","between","bidirectionally","bookmark","bookmarked","bookmarking","bookmarks","brettterpstra","brings","browser","build","clarity","class","click","closed","closing","cloud","comes","community","complement","computing","config","connect","context","contextual","contrast","contributions","control","create","customization","database","deeper","default","dependence","design","developer","developers","development","develops","digital","directions","directly","dives","documents","driven","easier","effortless","emails","engine","everything","example","excited","explain","favicons","favorite","features","feels","files","fixes","flexibility","fluid","folder","founded","friction","functional","generates","getting","github","going","grabs","ground","guess","guest","handy","height","helps","hookmark","hookproductivity","hooks","hostable","hosted","https","ideal","image","import","including","information","infrastructure","innovation","installation","instance","integrates","integration","interface","items","jumping","keystroke","knowledge","layout","ldquo","legacy","leveling","linkding","linkdking","linking","links","little","loading","local","maintain","makes","markdown","mdash","mechanism","media","meets","minimal","modern","motion","mysleepbutton","navigation","ndash","needs","network","noscript","notes","objects","online","organizing","original","pages","party","people","persistent","photo","picture","pinboard","possible","practical","preferences","previously","privacy","project","rdquo","readable","readers","reducing","references","regularly","researchers"]
	},{
		"title": "CleanShot X giveaway!",
		"url": "/2025/04/21/cleanshot-x-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Apr 21<span>st</span>, 2025",
		"ts": "1745240400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses for CleanShot X. That&rsquo;s right, another shot at a CleanShot X license! I love CleanShot X like I&rsquo;ve never loved a screenshot app before. Everything about it is elegant without sacrificing any power. It can do everything, from basic screenshots to annotation to video to adding backgrounds. It even offers cloud sharing. Sign up below to enter. Winners will be randomly drawn on Friday, April 25, at 12pm Central. The drawing is for 3 licenses for CleanShot X, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["cleanshot","macos","screenshot","central","check","cleanshot","entries","everything","friday","mastodon","sorry","winners","adding","among","annotation","another","appreciated","backgrounds","basic","before","below","brettterpstra","capturing","cloud","codes","cooperation","developer","drawing","elegant","ended","enter","everything","excited","featured","features","feels","first","generating","giveaway","giveaways","license","licenses","loved","mailing","making","names","offer","offers","provides","randomly","reading","right","robot","rsquo","sacrificing","screen","screenshot","screenshots","series","sharing","signups","skipped","ultimate","vendors","video","visit","winner"]
	},{
		"title": "The Default Folder X giveaway winners!",
		"url": "/2025/04/18/the-default-folder-x-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Apr 18<span>th</span>, 2025",
		"ts": "1744999200",
		"summary": "The Default Folder X giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Default Folder X is still worth checking out. Trust me, you need this. You might not realize how limited your standard open and save dialogs are until you&rsquo;ve experienced Default Folder X. You can still save 20% by using the coupon at checkout. By the way, Default Folder X is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is CleanShot X. Check back every Monday through April, 2025 for more giveaways. If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["dialog","productivity","abdelhalim","check","cleanshot","congratulations","default","folder","mastodon","mohammed","monday","setapp","stevens","amazing","announce","available","checking","checkout","coupon","details","dialogs","email","ended","experienced","giveaway","giveaways","hundreds","limited","notifications","realize","received","rsquo","series","sorry","standard","subscription","suggest","through","using","winners","worth"]
	},{
		"title": "Off(-White): I made a stupid thing this morning",
		"url": "/2025/04/15/off-white-i-made-a-stupid-thing-this-morning/",
		"tags": ["color","javascript","offwhite","webdesign"],
		"date": "Apr 15<span>th</span>, 2025",
		"ts": "1744734960",
		"summary": "I&rsquo;ve been waking up around 4 every morning, which I&rsquo;m grateful for because 4&ndash;8am is the only time I really have for coding on my own projects. The lack of sleep is getting to me, but I&rsquo;ve been productive. I&rsquo;m currently working on a new Lorem Ipsum generator in Ruby that will function as a library, a CLI, and the back end for md-lipsum. It&rsquo;s not ready for prime time yet, but it&rsquo;s coming along. But this morning I got distracted by trying to create better off-white backgrounds for web pages. I know it&rsquo;s a simple task with any color picker, but I have trouble getting it fine-tuned enough with sliders, and guessing different hex codes frustrates me. So I made a little thing for fine-tuning off-white and off-black background colors. It&rsquo;s just a hue, saturation, lightness slider, but instead of the lightness going from 0&ndash;100, it only goes from 90&ndash;100, offering granular control even for clumsy users, and then updates the entire background with the selected hue/tint so you can see how it will look on a page. The \"Off Black\" version of it changes the lightness slider to 0&ndash;40, offering a little more range for those dark grays. All put together, it&rsquo;s just called \"Off.\" It&rsquo;s for me, but I made it available here just in case somebody else might have a use for it. I amused myself with a little CSS and vanilla JS to make the slider backgrounds work, so at least take a look at it and enjoy my latest stupid creation",
		"keywords": ["color","picker","slider","vision","black","ipsum","lorem","amused","available","background","backgrounds","because","black","called","changes","clumsy","codes","coding","color","colors","coming","control","create","creation","different","distracted","enjoy","enough","entire","frustrates","function","generator","getting","going","granular","grateful","grays","guessing","latest","library","lightness","lipsum","little","morning","myself","ndash","offering","pages","picker","prime","productive","projects","range","ready","rsquo","saturation","selected","simple","sleep","slider","sliders","somebody","stupid","together","trouble","trying","tuned","tuning","updates","users","vanilla","version","waking","white","working"]
	},{
		"title": "Default Folder X giveaway!",
		"url": "/2025/04/14/default-folder-x-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Apr 14<span>th</span>, 2025",
		"ts": "1744635600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 licenses ($39.95 value each) for Default Folder X. That&rsquo;s right, another chance at Default Folder X! Default Folder X is an amazing extension for your open and save dialogs on macOS. It makes navigating folders easier, tagging better, and implements flexible favorites and allows specific default folders for every app. You can set up favorite folders, accessible with keyboard shortcuts, have every app track it&rsquo;s most recent save-to folder, and much more. Make your Open and Save dialogs work as quickly as you do. Track recently used files and folders in every app, reopen recently closed Finder windows, Copy and Move files in file dialogs. Sign up below to enter. Winners will be randomly drawn on Friday, April 18, at 12pm Central. The drawing is for 2 licenses ($39.95 value each) for Default Folder X, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["dialog","productivity","central","check","default","entries","finder","folder","friday","mastodon","sorry","track","winners","accessible","allows","amazing","among","another","appreciated","below","beyond","brettterpstra","chance","closed","codes","cooperation","default","developer","dialogs","drawing","easier","ended","enter","excited","extension","favorite","favorites","featured","files","first","flexible","folder","folders","generating","giveaway","giveaways","implements","keyboard","license","licenses","macos","mailing","makes","maybe","names","navigating","offer","quickly","randomly","reading","recent","recently","reopen","right","robot","rsquo","series","shortcuts","signups","skipped","specific","tagging","through","track","tuned","value","vendors","visit","windows","winner"]
	},{
		"title": "The TaskPaper giveaway winners!",
		"url": "/2025/04/12/the-taskpaper-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Apr 12<span>th</span>, 2025",
		"ts": "1744499460",
		"summary": "The TaskPaper giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but TaskPaper is still worth checking out. TaskPaper is the most flexible todo list format you can have, being based on plain text. You can still save 20% on your purchase with the coupon . Use the Buy Now button on the TaskPaper site to grab your copy! By the way, TaskPaper is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Default Folder X . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["productivity","taskpaper","beaudoin","check","cleanshot","congratulations","default","folder","hulme","karim","mastodon","michael","monday","setapp","taskpaper","amazing","announce","available","based","button","checking","coupon","details","email","ended","flexible","format","giveaway","giveaways","hundreds","notifications","received","rsquo","series","sorry","subscription","suggest","through","upcoming","winners","worth"]
	},{
		"title": "TaskPaper giveaway!",
		"url": "/2025/04/07/taskpaper-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Apr 7<span>th</span>, 2025",
		"ts": "1744030800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($24.99 value each) for TaskPaper. TaskPaper is a task management solution based entirely on plain text. It offers a familiar interface to work with files in the TaskPaper format, with tagging, projects, due dates, and all the things you need for task management. Did I mention the files are still plain text, and are portable anywhere? Text editor with outlining power. TaskPaper feels like a plain text editor, but it is backed by a powerful outliner. Sign up below to enter. Winners will be randomly drawn on Friday, April 11, at 12pm Central. The drawing is for 3 licenses ($24.99 value each) for TaskPaper, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["productivity","taskpaper","central","check","entries","friday","mastodon","sorry","taskpaper","winners","among","anywhere","appreciated","backed","based","below","beyond","brettterpstra","codes","cooperation","dates","developer","drawing","editor","ended","enter","entirely","excited","familiar","featured","feels","files","first","format","generating","giveaway","giveaways","interface","license","licenses","mailing","management","maybe","mention","names","offer","offers","outliner","outlining","portable","powerful","projects","randomly","reading","robot","rsquo","series","signups","skipped","solution","tagging","through","tuned","value","vendors","visit","winner"]
	},{
		"title": "The Keyboard Maestro giveaway winner!",
		"url": "/2025/04/06/the-keyboard-maestro-giveaway-winner/",
		"tags": ["giveaway"],
		"date": "Apr 6<span>th</span>, 2025",
		"ts": "1743956280",
		"summary": "The Keyboard Maestro giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Keyboard Maestro is still worth checking out. You can still save 20% off of Keyboard Maestro with the coupon ! The automation possibilities are endless. Next up is TaskPaper . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["automation","keyboard","maestro","abhimat","check","cleanshot","congratulations","default","folder","gautam","keyboard","maestro","mastodon","monday","taskpaper","announce","automation","checking","coupon","details","email","ended","endless","giveaway","giveaways","notifications","possibilities","received","rsquo","series","sorry","suggest","through","upcoming","winner","worth"]
	},{
		"title": "Markdown Lipsum API v3",
		"url": "/2025/04/05/markdown-lipsum-api-v3/",
		"tags": ["lipsum","markdown"],
		"date": "Apr 5<span>th</span>, 2025",
		"ts": "1743881880",
		"summary": "I&rsquo;ve published an entirely reworked version of my Markdown Lorem Ipsum API. It&rsquo;s a fix, but also a major improvement. The md-lipsum API gives you Lorem Ipsum in Markdown format, ready for use in testing and tools. The original version of it used an external API to generate the Lipsum, but that API has disappeared (as APIs are wont to do). I decided to just build my own. The API I built generates valid HTML markup, and then md-lipsum converts it into nicely-formatted Markdown. Given I was building it myself, I added additional markup and more capabilities. The v2 API still works — but redirects to v3 — if you had implemented that anywhere. The v3 API is at . It takes most of the same path parameters, but adds a new one for (to add , separate from emphasis) and removes the option. Much like most of my other APIs, the landing page for md-lipsum now has an interactive query builder &mdash; just check the boxes you want and you&rsquo;ll get a URL you can copy. Every time that URL loads, it will be different random content, but with the same elements included. The builder even has a cool but stupid feature where editing the url in the field causes the checkboxes to update based on your changes. Check out the landing page, set some options, and hit Try to see how it works. Since I was also building an HTML backend for this, I went ahead and exposed that functionality as well. Rather than using path elements, these options use query parameters, so adding to any md-lipsum URL will output raw HTML, adding will output the HTML as a complete document (with and ), and adding will display the result as a web page. The latter is handy when you want to quickly test basic DOM operations in your browser&rsquo;s web inspector, but not much else. But I already had it built, so why not make it available? This API functions on a relatively small amount of source Lorem Ipsum text. I&rsquo;d like to increase that a little bit, but I may also make it work with other sources of text. I have an outdated script that makes Lorem Ipsum out of books like Alice in Wonderland and 1984, based on something read about Raingrams many years ago. I think it was Dr. Drang who wrote about that. And there was a great Bacon lipsum generator, among other novelty APIs. I&rsquo;d like to carry on this tradition with some more interesting sources of text. The issue is that the current version uses large sentence fragments, rather than intelligently restructuring the text to&hellip;",
		"keywords": ["ipsum","language","lorem","markup","nonsense","alice","bacon","check","drang","ipsum","lipsum","lorem","markdown","raingrams","rather","roadmap","since","wonderland","added","adding","ahead","among","amount","anywhere","available","backend","based","basic","books","boxes","brettterpstra","browser","build","builder","building","built","capabilities","carry","causes","change","changes","check","checkboxes","class","content","converts","create","decided","different","disappeared","display","document","editing","elements","emphasis","entirely","exposed","external","feature","field","format","formatted","fragments","functionality","functions","generates","generator","gives","great","handy","highlighter","highlights","https","implemented","improvement","included","increase","inspector","intelligently","interactive","interesting","landing","language","latter","leancrew","lipsum","little","loads","major","makes","markup","mdash","myself","nicely","novelty","operations","options","original","outdated","output","parameters","plaintext","preview","prude","published","query","quickly","random","rather","ready","redirects","relatively","removes","restructuring","reworked","roadmap","rouge","rsquo","script","sentence","sentences","separate","small","source","sources","strong","stupid","takes","testing","think","title","tools","tradition","using","valid","version","where","works","wrote","years"]
	},{
		"title": "SearchLink with URL Previews!",
		"url": "/2025/04/02/searchlink-with-url-previews/",
		"tags": ["browser","markdown","searchlink"],
		"date": "Apr 2<span>nd</span>, 2025",
		"ts": "1743601920",
		"summary": "I&rsquo;ve published a few updates to SearchLink since we last talked, some bigger than others. Here&rsquo;s a rundown of what&rsquo;s new. First, I added more built-in URL shortening. In addition to Bit.ly shortening, you can now use is.gd or TinyUrl. Bit.ly and TinyURL require an API key, so see the configuration for details on that. The is.gd shortener doesn&rsquo;t require any configuration and might be the obvious choice if you don&rsquo;t need analytics or other features. The new searches include and , to which you can pass a long url, or you can pass search terms and just have the result shortened. It sure would be nice if you could verify the URL before it was shortened and unrecognizable, though, right? Keep reading. bang keyword shortener !bl / !bitly Bit.ly !isgd is.gd !tiny TinyURL In addition to the url shortener bang searches, you can also shorten any result by appending an underscore and a letter (, , or ), for example, would search Amazon and then shorten the resulting URL with is.gd. It&rsquo;s probably more useful to intentionally shorten results, but as you&rsquo;ll see below, you can confirm a search result and shorten it all in one step now. By the way, if you use Bit.ly shortening with an Amazon search, it will create an URL for you instead of a Bit.ly URL. This is apparently just a thing Bit.ly does. I&rsquo;ve tried to figure out how to create those for a long time, and then boom, it just happened for me. bang modifier shortener !a_b Amazon → Bit.ly (amzn.to/3FLCC78) !g_i Google → is.gd (bit.ly/3uEzRKE) !popw_t Popup Wikipedia → TinyURL (tinyurl.ph/jkRkV) Setapp searching originally started as a plugin, but I decided to build it into the default search set. Using with an app name will give you the Setapp URL for that app. You can configure an affiliate string that will be appended to any Setapp URL automatically. If the app name passed doesn&rsquo;t match a valid Setapp URL, a few permutations of the search term are attempted, e.g. removing version numbers (\"Marked 2\" => \"Marked\", \"CleanShot X\" => \"CleanShot\") and adjusting spacing. With a lot of custom searches, you might want to apply query parameters such as Google Analytics tracking information or . This would be most useful on custom searches that link to your own sites, for gathering tracking and other information. Now you can add arguments to a custom search (or any search&hellip;",
		"keywords": ["bitly","browser","duckduckgo","engine","google","search","setapp","tinyurl","twitter","&#39;https","amazon","analytics","automator","brett","cancel","changelog","cleanshot","configuration","confirming","custom","donate","download","duckduckgo","error","especially","first","goodbye","google","image","markdown","marked","parameters","plugins","popup","preview","previewing","published","query","results","search","searchlink","searches","searching","service","setapp","shortening","stretchlink","tuvbv&#39;","terpstra","tinyurl","tinyurl","updated","using","wikipedia","wikipedia","ability","added","adding","adjusting","affiliate","again","alter","analytics","animated","anyway","apparently","appended","appending","apply","archive","arguments","attempted","attributions","automatically","avoid","background","before","below","bigger","bitly","blockquote","bottom","brettterpstra","broken","browser","build","built","button","buttons","caption","center","certain","changelog","check","choice","class","command","configuration","configure","confirm","confirmation","confirming","consider","contain","content","contributions","couple","cover","create","creations","custom","decided","default","defeating","description","details","dialog","dialogs","different","difficult","distribution","dlbox","doesn","donate","download","downloaded","editor","either","enabled","engine","engines","enter","error","example","expanding","fathom","features","figure","first","fixing","force","format","formatted","found","frame","functioning","gathering","github","going","goodbye","gradient","greatest","grown","happened","happens","hardly","height","hellip","highlight","highlighter","hitting","https","image","included","includes","including","information","inserting","inside","install","installed","intentionally","jkrkv","keystrokes","keyword","keywords","language","latest","ldquo","leaving","letter","library","linear","links","loaded","loading","mastodon","match","mdash","media","medium","modifier","modify","multiple","muted","navigated","newest","noscript","notes","numbers","obvious","offering","onclick","original","originally","others","otherworld","output","override"]
	},{
		"title": "Keyboard Maestro giveaway!",
		"url": "/2025/03/31/keyboard-maestro-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Mar 31<span>st</span>, 2025",
		"ts": "1743426000",
		"summary": "I&rsquo;m excited to offer the next giveaway, a license ($36 value) for Keyboard Maestro. That&rsquo;s right, another chance at Keyboard Maestro! Keyboard Maestro is an insanely powerful app for automation on your Mac that no power user should be without. It can automate literally everything. Power users will love it, but everyday users can greatly benefit from the shortcuts and triggers that Keyboard Maestro offers with a simple drag-and-drop configuration. Whether you are a power user or just getting started, your time is precious. So don’t waste it. You can quickly benefit from Keyboard Maestro. Let Keyboard Maestro help make your Mac life more pleasant and efficient. With so many possible actions that you can combine together, including flow control, conditions and looping actions, you can automate almost any task, from the trivial to very complex multi-application reporting systems. Sign up below to enter. A winner will be randomly drawn on Friday, April 04, at 12pm Central. The drawing is for a license ($36 value) for Keyboard Maestro. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["automation","keyboard","maestro","brettterpstra","central","check","entries","friday","giveaway","giveaways","keyboard","maestro","mastodon","robot","sorry","upcoming","actions","almost","among","another","appreciated","automate","automation","below","benefit","beyond","blockquote","brettterpstra","chance","class","codes","complex","conditions","configuration","contact","control","cooperation","developer","drawing","efficient","ended","enter","everyday","everything","excited","featured","first","generating","getting","giveaway","giveaways","greatly","hachyderm","height","https","image","including","insanely","keyboard","keyboardmaestro","license","literally","loading","looping","maestro","mailing","maybe","media","multi","names","noscript","offer","offers","original","picture","pleasant","possible","powerful","precious","quickly","randomly","reading","reporting","right","robot","rsquo","screenshot","series","shortcuts","signups","simple","skipped","sorry","source","srcset","started","strong","subscribe","systems","through","title","together","triggers","trivial","ttscoff","tuned","upcoming","uploads","users","value","vendors","visit","waste","width","winner"]
	},{
		"title": "KeyBindings - home row arrow cluster revisited",
		"url": "/2025/03/30/keybindings-home-row-redux/",
		"tags": ["karabiner","keyboard"],
		"date": "Mar 30<span>th</span>, 2025",
		"ts": "1743335400",
		"summary": "I recently published a Karabiner trick that turned ; plus J/I/K/L into arrow keys. I&rsquo;ve determined that my implementation could use some work. Here&rsquo;s the redux. More from \"KeyBinding\" Karabiner Home row app switcher 2026/02/03 KeyBindings - home row arrow cluster revisited 2025/03/30 KeyBindings: home row arrow cluster 2025/03/24 KeyBindings: convenient tab switching 2025/03/23 Multi-keystroke keybindings 2023/12/22 More keybindings: Text editing shortcuts 2023/12/21 macOS keybinding tricks: the repeat count binding 2023/12/19 macOS keybinding tricks: The kill ring 2023/12/18 Keybindings cheat sheet for Dash 2022/02/18 Yet more new keybindings for macOS 2018/08/13 macOS KeyBindings for SearchLink 2017/11/08 Keybindings that everyone should have 2014/08/20 Restore Save as... everywhere 2013/01/16 A useful Caps Lock key 2012/12/08 New text navigation KeyBindings 2012/04/22 A little KeyBinding sanity 2011/12/21 Quick Tip: repeat Cocoa text actions, Emacs/Vim style 2011/12/04 KeyBindings: new, improved \"surround\" commands 2011/11/15 The keys that bind: KeyBinding Madness part 2 2011/11/10 KeyBinding madness 2011/08/13 The original tip used Karabiner to turn ; into a Fn key when pressed with other keys, and allowed a double tap to add additional functionality. Then the arrow keys were assigned with BetterTouchTool. This implementation ended up being a bit flaky when it came to switching directions, key repeats, and the normal functionality of the semicolon key. I completely re-implemented this using just Karabiner, which is much smoother and solves all of the above issues. The only difference in actual usage is that instead of a double tap to get Fn+arrow functionality, it uses the quote key (to the right of semicolon). The result functions perfectly with other modifier keys like ⌘ ⇧ and ⌥ for selections. To use this setup, you need four new rules in Karabiner. For each of the following snippets, go to Complex Modifications, select Add your own rule, and paste each snippet into its own rule. First, we make the ; function as Left-Fn+⌘ when pressed with other keys, posting ; as usual when pressed and released alone. Next, we make the ' key function as Right-Fn+⌘ when held with other keys, posting ' when pressed alone. Now we assign our J/I/K/L keys to ←/↑/↓/→ when pressed along with the ; key (which is now Left-Fn+⌘). To make this into H/J/K/L navigation, change the lines to h, j, k, and l, in that order. And lastly, we assign J/I/K/L keys to&hellip;",
		"keywords": ["arrow","computer","function","keyboard","modifier","shortcut","arrow","bettertouchtool","change","cocoa","command","complex","emacs","enjoy","first","function","karabiner","keybinding","keybindings","keybindings","madness","modifications","multi","quick","quote","restore","right","searchlink","semicolon","shift","single","above","actions","allowed","alone","arrow","assign","assigned","based","basic","between","binding","blockquote","brettterpstra","change","cheat","class","cluster","cocoa","combiner","command","commands","completely","convenient","count","datetime","description","determined","difference","directions","double","editing","elements","emacsvim","ended","everyone","everywhere","figcaption","figure","flaky","function","functionality","functions","gathered","github","githubusercontent","height","highlight","highlighter","https","ignore","image","implementation","implemented","improved","instapaper","issues","karabiner","keybinding","keybindings","keycombo","keystroke","language","lastly","little","loading","macos","macos","madness","manipulators","media","modifier","modifiers","multi","navigate","navigation","normal","noscript","optional","original","paste","perfectly","picture","plaintext","posting","posts","pressed","published","quick","quote","recently","redux","released","repeat","repeats","restore","revisited","right","rouge","rsquo","rules","sanity","searchlink","section","selections","semicolon","separated","separator","series","setup","sheet","shortcuts","smoother","smoothly","snippet","snippets","solves","source","srcset","strong","style","surround","switcher","switching","symbol","title","trick","tricks","ttscoff","turned","uploads","usage","useful","using","width"]
	},{
		"title": "The Bear giveaway winners!",
		"url": "/2025/03/28/the-bear-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Mar 28<span>th</span>, 2025",
		"ts": "1743184800",
		"summary": "The Bear giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Bear is still worth checking out. If you&rsquo;re journaling, taking notes, or organizing information and love Markdown, you should check it out. Next up is Keyboard Maestro . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["journaling","taking","burnham","check","cleanshot","congratulations","default","denis","erick","focke","folder","hennessy","hucker","keyboard","lowell","maestro","markdown","mastodon","monday","stephen","taskpaper","yamanaka","announce","check","checking","details","email","ended","giveaway","giveaways","information","journaling","notes","notifications","organizing","received","rsquo","series","sorry","suggest","taking","through","upcoming","winners","worth"]
	},{
		"title": "TaskPaper to (GitHub Flavored) Markdown",
		"url": "/2025/03/27/taskpaper-to-github-flavored-markdown/",
		"tags": ["markdown","scripting","taskpaper"],
		"date": "Mar 27<span>th</span>, 2025",
		"ts": "1743085200",
		"summary": "I wrote a pretty basic script a long time ago that converts TaskPaper files to Markdown for nice previewing/publishing. I recently updated it with a bunch of modernizations. I originally wrote this script (goes to check) &mdash; jebus, fifteen years ago. I guess I&rsquo;ve been doing this stuff for a while now. Anyway, the original gist had statements and processor flags that weren&rsquo;t valid anymore, so I decided to fix that. The markers mean that when rendered on GitHub (or in Marked with the right settings), the tasks will show up with checkboxes (checked if the line contains ). The ability to accept input on STDIN means you can include the script in a pipeline without having to read/write files. Not something I need to do often, but seemed like an obvious improvement. The script is a bit kludgy &mdash; I added to it but didn&rsquo;t bother rewriting it, so it reflects my Ruby skills 15 years ago. Maybe if I get bored on some downtime, I&rsquo;ll take another stab at it, but it works, so I&rsquo;m not inclined to put time into that right now. If you feel like rewriting it more elegantly, I&rsquo;ll gladly publish your changes 😊. The other updates are just niceties. Let me know if you have suggestions/questions, either in the Gist comments or on the forum",
		"keywords": ["checkbox","github","pipeline","accept","anyway","exception","github","markdown","marked","maybe","stdin","taskpaper","updated","usage","while","ability","accept","added","another","anymore","basename","basic","begin","block","bored","bother","brettterpstra","bunch","capitalize","changes","check","checkboxes","checked","class","comments","contains","convert","converts","decided","doing","downtime","either","elegantly","elsif","fifteen","figcaption","figure","filename","files","flags","forum","github","githubusercontent","gladly","guess","having","highlight","highlighter","https","improvement","inclined","indentation","input","jebus","kludgy","language","length","marker","markers","mdash","modernizations","niceties","obvious","often","original","originally","output","piped","pipeline","plaintext","positive","previewing","prevlevel","processor","project","publish","publishing","questions","quote","recently","reflects","rendered","rescue","rewriting","right","rouge","rsquo","script","seemed","settings","skills","statements","stdin","strip","strong","stuff","style","suggestions","taskpaper","tasks","times","title","ttscoff","tweaks","updated","updates","valid","weren","while","works","write","wrote","years"]
	},{
		"title": "KeyBindings: home row arrow cluster",
		"url": "/2025/03/24/keybindings-home-row-arrow-cluster/",
		"tags": ["bettertouchtool","karabiner","keyboard"],
		"date": "Mar 24<span>th</span>, 2025",
		"ts": "1742828400",
		"summary": "I&rsquo;ve been working away from my office a lot, so I&rsquo;ve been using my MacBook Pro keyboard as often as my Ultimate Hacking Keyboard. I missed the arrow key navigation, so I hacked a little modification in using Karabiner that fills the gap. I&rsquo;ve determined that this implementation is faulty. See the update for a better setup. My own reasoning: I have TOS, and as a result I&rsquo;m lacking feeling in some of my fingers. This makes using the little arrow keys on the MacBook Pro difficult, as I can&rsquo;t differentiate which key I&rsquo;m pressing and constantly mistype. Staying on the home row is much easier for me. More from \"KeyBinding\" Karabiner Home row app switcher 2026/02/03 KeyBindings - home row arrow cluster revisited 2025/03/30 KeyBindings: home row arrow cluster 2025/03/24 KeyBindings: convenient tab switching 2025/03/23 Multi-keystroke keybindings 2023/12/22 More keybindings: Text editing shortcuts 2023/12/21 macOS keybinding tricks: the repeat count binding 2023/12/19 macOS keybinding tricks: The kill ring 2023/12/18 Keybindings cheat sheet for Dash 2022/02/18 Yet more new keybindings for macOS 2018/08/13 macOS KeyBindings for SearchLink 2017/11/08 Keybindings that everyone should have 2014/08/20 Restore Save as... everywhere 2013/01/16 A useful Caps Lock key 2012/12/08 New text navigation KeyBindings 2012/04/22 A little KeyBinding sanity 2011/12/21 Quick Tip: repeat Cocoa text actions, Emacs/Vim style 2011/12/04 KeyBindings: new, improved \"surround\" commands 2011/11/15 The keys that bind: KeyBinding Madness part 2 2011/11/10 KeyBinding madness 2011/08/13 This modification works in tandem with a set of BetterTouchTool triggers, as it&rsquo;s just a lot easier to assign a bunch of shortcuts in BetterTouchTool, where you can just press the combinations to register them. All I do with Karabiner is change the semicolon to the Function key when it&rsquo;s held down with other keys. Then, in BetterTouchTool, I assign Fn+J/K/I/L to be arrow keys, with accommodations for ⌥, ⇧, and ⌘ modifiers. You can, of course, opt for Fn+H/J/K/L if you prefer Vim navigation. Then, in BetterTouchTool, set up the Fn-JKIL to perform arrow functions, adding bindings like ⌥+← and ⌥+⇧+→. I&rsquo;ve exported BetterTouchTool settings for and mappings, if you just want to load them as a BetterTouchTool preset. Just unzip that and use Preset > Import Preset in BetterTouchTool. Like my other key combination bindings, this Karabiner setup means you&hellip;",
		"keywords": ["arrow","computer","control","function","keyboard","modifier","shortcut","arrow","bettertouchtool","caveats","cocoa","command","complex","control","emacs","function","hacking","import","karabiner","keybinding","keybindings","keybindings","keyboard","macbook","madness","modifications","mouse","multi","outlet","preset","quick","restore","right","searchlink","semicolon","shift","staying","syndrome","thorasic","ultimate","accommodations","actions","adding","alone","arrow","assign","available","based","basic","behavior","bettertouchtool","binding","bindings","brettterpstra","bttpreset","bunch","buttons","caveats","change","cheat","class","cluster","cocoa","combination","combinations","combiner","commands","constantly","convenient","count","datetime","description","determined","differentiate","difficult","downloads","easier","editing","emacsvim","everyone","everywhere","experiment","exported","faulty","feeling","fills","fingers","forum","friends","function","functionality","functions","giving","hacked","height","highlight","highlighter","https","ignore","image","implementation","improved","instapaper","karabiner","keybinding","keybindings","keyboard","keycombo","keystroke","lacking","language","little","loading","longer","macos","macos","madness","makes","manipulators","mapping","mappings","media","missed","missing","mistype","modifier","modifiers","mouse","movements","moving","multi","navigation","needed","noscript","office","often","optional","original","picture","plaintext","posts","prefer","preset","press","pressing","questions","quick","reasoning","redux","register","repeat","repeatedly","restore","revisited","rouge","rsquo","sanity","searchlink","section","semicolon","sending","separated","separator","series","settings","setup","share","sheet","shortcuts","slower","source","srcset","strong","style","surround","switcher","switching","symbol","tandem","tapping","title","trackpad","tricks","trigger","triggers","unzip","uploads","useful","using","where","width","working","works"]
	},{
		"title": "Bear giveaway!",
		"url": "/2025/03/24/bear-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Mar 24<span>th</span>, 2025",
		"ts": "1742821200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 1-year subscriptions to Bear Pro ($29.99 value each) for Bear. That&rsquo;s right, another chance at Bear! Bear is a great app for note taking, journaling, and organizing information with Markdown support. It&rsquo;s gorgeous to work with, elegant in its functionality, and even works great with Marked for all your export needs. Powerful tools to take notes, plan your week, write a book, or even build a wiki. Fast, native apps that keep pace with your imagination, online and off. Send notes to others, export to many formats, and share ideas with the world &mdash; if you want. Sign up below to enter. Winners will be randomly drawn on Friday, March 28, at 12pm Central. The drawing is for 5 1-year subscriptions to Bear Pro ($29.99 value each) for Bear, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["journaling","taking","central","check","entries","friday","markdown","marked","mastodon","powerful","sorry","winners","among","another","appreciated","below","beyond","brettterpstra","build","chance","codes","cooperation","developer","drawing","elegant","ended","enter","excited","export","featured","first","formats","functionality","generating","giveaway","giveaways","gorgeous","great","ideas","imagination","information","journaling","license","mailing","maybe","mdash","names","native","needs","notes","offer","online","organizing","others","randomly","reading","right","robot","rsquo","series","share","signups","skipped","subscriptions","support","taking","through","tools","tuned","value","vendors","visit","winner","works","world","write"]
	},{
		"title": "KeyBindings: convenient tab switching",
		"url": "/2025/03/23/keybindings-convenient-tab-switching/",
		"tags": ["karabiner","keybindings","keyboard"],
		"date": "Mar 23<span>rd</span>, 2025",
		"ts": "1742746440",
		"summary": "I&rsquo;ve been playing with some Karabiner Elements setups and thought I&rsquo;d start sharing some that I find useful. I&rsquo;m publishing these as part of the KeyBinding series, as I think they make sense there. More from \"KeyBinding\" Karabiner Home row app switcher 2026/02/03 KeyBindings - home row arrow cluster revisited 2025/03/30 KeyBindings: home row arrow cluster 2025/03/24 KeyBindings: convenient tab switching 2025/03/23 Multi-keystroke keybindings 2023/12/22 More keybindings: Text editing shortcuts 2023/12/21 macOS keybinding tricks: the repeat count binding 2023/12/19 macOS keybinding tricks: The kill ring 2023/12/18 Keybindings cheat sheet for Dash 2022/02/18 Yet more new keybindings for macOS 2018/08/13 macOS KeyBindings for SearchLink 2017/11/08 Keybindings that everyone should have 2014/08/20 Restore Save as... everywhere 2013/01/16 A useful Caps Lock key 2012/12/08 New text navigation KeyBindings 2012/04/22 A little KeyBinding sanity 2011/12/21 Quick Tip: repeat Cocoa text actions, Emacs/Vim style 2011/12/04 KeyBindings: new, improved \"surround\" commands 2011/11/15 The keys that bind: KeyBinding Madness part 2 2011/11/10 KeyBinding madness 2011/08/13 This first one is a way to make tab switching (⌘+[/]) slightly more convenient. I say slightly, as the modifier key combination for this is really pretty second nature to me, I just wanted to see what it would be like as a simple, single-row key combination. The configuration makes the backslash key function as right command when held with other keys, meaning the little cluster of can be used without moving your thumb, holding \\ with your pinky and using [/] to navigate left and right. If you double tap \\ and hold it, it becomes ⇧+⌘, so you can ⇧+⌘+{ instead. In most web browsers, ⌘+[ navigates back in history, and ⇧+⌘+{ switches to the previous tab. So this configuration makes tab switching in any app convenient. Because we have to watch for double taps, there&rsquo;s now a 250ms delay when just typing a backslash alone. You could shorten this delay if you wanted to experiment with exactly how fast you&rsquo;d have to double tap to make that work. The slight delay on a lesser used character seems reasonable to me. Maybe after using it for a while I change my mind about that. We&rsquo;ll see. You also lose key repeat, so you can&rsquo;t hold backslash down to type . That&rsquo;s not something I&rsquo;ll ever need to do, I don&rsquo;t think. The other issue I&rsquo;m running into&hellip;",
		"keywords": ["browser","switching","agent","autofill","backslash","because","caveats","cocoa","command","complex","devonthink","elements","emacs","karabiner","keybinding","keybindings","keybindings","madness","maybe","modifications","multi","password","quick","restore","searchlink","shift","action","actions","agent","alone","anyone","arrow","backlink","backslash","basic","becomes","below","binding","brackets","brettterpstra","browsers","canceled","caveats","change","changing","character","cheat","class","clicking","cluster","cocoa","combination","combiner","command","commands","conditions","config","configuration","configured","convenient","count","datetime","delayed","description","double","editing","elements","emacsvim","endnotes","everyone","everywhere","experiment","figure","first","fnref","footnote","footnotes","forum","friends","function","going","happen","haven","height","highlight","highlighter","history","holding","https","ignore","image","improved","ingredient","instapaper","intentional","interrupted","invoked","karabiner","keybinding","keybindings","keycombo","keystroke","knows","language","launches","ldquo","learning","lesser","little","loading","lsquo","macos","macos","madness","makes","manipulators","meaning","media","milliseconds","missing","modifications","modifier","modifiers","moving","multi","nature","navigate","navigates","navigation","noscript","noteref","optional","original","parameters","pasting","picture","pinky","plaintext","playing","popup","posts","pressed","publish","publishing","quick","rather","rdquo","reasonable","recipe","redux","repeat","restore","reversefootnote","revisited","right","rouge","rsquo","rules","running","sanity","searchlink","second","secret","section","seems","sends","sense","separated","separator","series","setups","share","sharing","sheet","shift","shortcut","shortcuts","shorten","simple","simply","single","slight","slightly","solved","source","srcset","started","style","surround","switcher","switches","switching","symbol","think","thought","thread","thumb","title","trick","tricks","tried","triggers"]
	},{
		"title": "The Bike giveaway winners!",
		"url": "/2025/03/21/the-bike-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Mar 21<span>st</span>, 2025",
		"ts": "1742580000",
		"summary": "The Bike giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Bike is still worth checking out. You can still save 30% with the coupon code at checkout. Get this simple yet powerful outliner today! By the way, Bike is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Bear . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["outliner","brett","check","cleanshot","congratulations","default","defaultfolderx","ferrare","folder","giveaway","hofner","keyboard","landgraf","maestro","mastodon","monday","robot","setapp","taskpaper","amazing","announce","available","background","brettterpstra","checking","checkout","class","cleanshot","confetti","contact","coupon","details","didnt","easydns","email","ended","giveaway","giveaways","height","highlighter","hogbaysoftware","https","hundreds","image","keyboardmaestro","language","loading","media","nojack","noscript","notifications","original","outliner","picture","plaintext","powerful","received","rouge","rsquo","series","setapp","simple","sorry","source","srcset","stclairsoft","subscribe","subscription","suggest","taskpaper","through","title","today","ttscoff","upcoming","uploads","width","winners","worth"]
	},{
		"title": "Bike giveaway!",
		"url": "/2025/03/17/bike-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Mar 17<span>th</span>, 2025",
		"ts": "1742216400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($29.99 value each) for Bike. That&rsquo;s right, another chance at Bike! Bike is a deceptively simple outliner. It uses plain text files (HTML, but also supports OPML and text) to store structured data that maintain simplicity while offering a ton of functionality. Add row types like headings, ordered lists, task lists, and more. Create deep-links into your outline (works great with Hookmark). Bike&rsquo;s nimble. Use it as the main app for a big project or as a supporting app for notes and ideas. Standard file formats, shortcuts support, and scripting allow Bike to integrate with your existing workflows. Sign up below to enter. Winners will be randomly drawn on Friday, March 21, at 12pm Central. The drawing is for 3 licenses ($29.99 value each) for Bike, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["outliner","central","check","create","entries","friday","hookmark","mastodon","sorry","standard","winners","allow","among","another","appreciated","below","beyond","brettterpstra","chance","codes","cooperation","deceptively","developer","drawing","ended","enter","excited","featured","files","first","formats","functionality","generating","giveaway","giveaways","great","headings","ideas","integrate","license","licenses","links","lists","mailing","maintain","maybe","names","nimble","notes","offer","offering","ordered","outline","outliner","project","randomly","reading","right","robot","rsquo","scripting","series","shortcuts","signups","simple","simplicity","skipped","store","structured","support","supporting","supports","through","tuned","types","value","vendors","visit","while","winner","workflows","works"]
	},{
		"title": "The SpamSieve giveaway winners!",
		"url": "/2025/03/14/the-spamsieve-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Mar 14<span>th</span>, 2025",
		"ts": "1741975200",
		"summary": "The SpamSieve giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but SpamSieve is still worth checking out. If you&rsquo;re tired of spam, it&rsquo;s a purchase you won&rsquo;t regret. You can still save 20% on your purchase with the code at the C-Command store. Next up is Bike . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["email","spamsieve","check","cleanshot","command","congratulations","david","default","folder","keyboard","maestro","mastodon","monday","nieporent","preez","spamsieve","taskpaper","wessel","announce","checking","details","email","ended","giveaway","giveaways","notifications","received","regret","rsquo","series","sorry","store","suggest","through","tired","upcoming","winners","worth"]
	},{
		"title": "Some useful Git commands",
		"url": "/2025/03/12/some-useful-git-commands/",
		"tags": ["scripting"],
		"date": "Mar 12<span>th</span>, 2025",
		"ts": "1741781640",
		"summary": "I&rsquo;ve published a repo of my own Git commands and aliases . Most of these commands started as aliases and then got more complex. All of the commands are described in the README. They&rsquo;re nothing terribly complex, but I find them all useful almost every time I use Git. I&rsquo;ve also included my collection of aliases. You can include the whole file and get all of my aliases, or just cherry pick the ones you want to use into your own . Hint: if you include a file at the top of your , any aliases you define after it will override the ones in the file. Anyway, just thought I&rsquo;d share. Writing Git commands is really easy, so if there are any tasks you repeat often that are more complex than an alias, I recommend making a stylish Git command. All you have to do is write a script and name it . Make it executable and put it in your PATH, and then you can run with it, extending Git&rsquo;s command set with your own creations (and keeping your scripts namespaced to Git). If you&rsquo;re interested, check out the repo",
		"keywords": ["alias","command","github","anyway","readme","writing","alias","aliases","almost","check","cherry","collection","command","commands","complex","creations","define","described","executable","extending","included","interested","keeping","making","namespaced","nothing","often","override","published","recommend","repeat","rsquo","script","scripts","share","started","stylish","tasks","terribly","thought","useful","whole","write"]
	},{
		"title": "Marked 2.6.46 -- Mermaid, Highlighting, and More",
		"url": "/2025/03/10/marked-2-dot-6-46/",
		"tags": ["marked"],
		"date": "Mar 10<span>th</span>, 2025",
		"ts": "1741618800",
		"summary": "I finally got a significant Marked update out. rendering, and a BYO JavaScript setup I think (some) users will like. First, I don&rsquo;t know why it&rsquo;s become so popular, but I&rsquo;ve received a lot of requests for rendering. So I&rsquo;ve added it as an option. I also added rendering, and as an additional option. I had to make function separately as it conflicts with MultiMarkdown&rsquo;s subscript syntax. But you can find all of these options under Settings->Processor. There&rsquo;s even an option to convert and to CriticMarkup, which allows for a nicer display in Marked. Next, I&rsquo;ve had requests for Mermaid diagramming for a long time. I&rsquo;ve had fewer requests for including arbitrary JavaScript in the preview, but I figured if I was going to start adding JS libraries, I might as well make it as flexible as possible. If you look under Settings->Style, you&rsquo;ll find an Additional Scripts button. This will open a panel where you can control what JS is loaded in every preview (docs). Mermaid has its own checkbox, and if I add additional library support, checkboxes will be added here. Below that is a 3-pane field where you can add JavaScript from local files, CDN urls, or embed raw text. Note that when adding libraries, you&rsquo;re responsible for making them update. The API allows you to hook a render function into the update call, so every time the preview updates (which is not a full refresh), you can trigger whatever rendering needs to happen. See the docs for details on that. There are a few other fixes. I published a second update this morning (v2.6.46) that improves multi-line rendering, and finally allows you to customize the reading speed for Reading Time calculations. That&rsquo;s available right now for direct (Paddle) customers and in review for Setapp and MAS customers. If you&rsquo;ve never checked Marked out, head over to marked2app.com to learn more",
		"keywords": ["javascript","below","criticmarkup","first","javascript","marked","mermaid","multimarkdown","paddle","processor","reading","scripts","setapp","settings","style","added","adding","allows","arbitrary","available","button","calculations","checkbox","checkboxes","checked","conflicts","control","convert","customers","customize","details","diagramming","direct","display","embed","fewer","field","figured","files","finally","fixes","flexible","function","going","happen","improves","including","learn","libraries","library","loaded","local","making","marked","morning","multi","needs","nicer","options","panel","popular","possible","preview","published","reading","received","refresh","rendering","requests","responsible","right","rsquo","second","separately","setup","significant","speed","subscript","support","syntax","think","trigger","under","updates","users","whatever","where"]
	},{
		"title": "SpamSieve giveaway!",
		"url": "/2025/03/10/spamsieve-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Mar 10<span>th</span>, 2025",
		"ts": "1741611600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 licenses ($39.99 value each) for SpamSieve. Michael Tsai has generously agreed to offer 2 more licenses for SpamSeive, so you get another chance at this great app. SpamSieve provides powerful spam filtering for any email setup. It learns and adapts to your mail, so it&rsquo;s able to block nearly all spam. Use it instead of or in addition to your current junk mail filtering. SpamSieve gives you back your inbox, using powerful Bayesian spam filtering to provide amazing accuracy that&rsquo;s constantly improving. Works with IMAP, Exchange, and POP mail accounts. Sign up below to enter. Winners will be randomly drawn on Friday, March 14, at 12pm Central. The drawing is for 2 licenses ($39.99 value each) for SpamSieve, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["email","spamsieve","bayesian","central","check","entries","exchange","friday","mastodon","michael","sorry","spamseive","spamsieve","winners","works","accounts","accuracy","adapts","agreed","amazing","among","another","appreciated","below","beyond","block","brettterpstra","chance","codes","constantly","cooperation","developer","drawing","email","ended","enter","excited","featured","filtering","first","generating","generously","giveaway","giveaways","gives","great","improving","inbox","learns","license","licenses","mailing","maybe","names","nearly","offer","powerful","provides","randomly","reading","robot","rsquo","series","setup","signups","skipped","through","tuned","using","value","vendors","visit","winner"]
	},{
		"title": "The App Tamer giveaway winners!",
		"url": "/2025/03/07/the-app-tamer-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Mar 7<span>th</span>, 2025",
		"ts": "1741374000",
		"summary": "The App Tamer giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but App Tamer is still worth checking out. If you want your apps to run faster, it&rsquo;s a no-brainer. You can still save 20% using the coupon at checkout. By the way, App Tamer is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is SpamSieve . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["optimization","tamer","check","congratulations","default","folder","giovanni","keyboard","maestro","mastodon","monday","setapp","spamsieve","tamer","taskpaper","amazing","announce","available","brainer","checking","checkout","coupon","details","email","ended","faster","giveaway","giveaways","hundreds","notifications","received","rsquo","series","sorry","subscription","suggest","through","upcoming","using","winners","worth","zucca"]
	},{
		"title": "Web Excursions for March 6th, 2025",
		"url": "/2025/03/06/web-excursions-for-march-6th-2025/",
		"tags": ["bookmarks"],
		"date": "Mar 6<span>th</span>, 2025",
		"ts": "1741282500",
		"summary": "Whether you&rsquo;re a new user or a seasoned pro, ScreenCastsONLINE offers in-depth screencasts on a wide range of topics, from tutorials to app discovery. Check it out. razzius/fish-functions: Useful fish functions A big collection of small utility functions for Fish. Taska – Mac App for GitHub & GitLab Issues The excellent developers behind Kaleidoscope have acquired another excellent app: Taska, a beautiful Mac app for viewing and editing GitHub/GitLab issues. The Sorcerer’s Apprentice – Worms and Viruses This eloquently elucidates my frustration with the state of automation on the Mac. AppleScript offered us so many possibilities, whereas Shortcuts severely curtails them. And to make it worse, Shortcuts is still treated like an afterthought. I miss Sal. (Note that this was published in 2020, but the core complaint remains absolutely the same.) Pierre \"Joyful Code Review.\" I haven&rsquo;t tried this. At all. But if you want to see a truly insane (read psychotic) splash page for a SaaS, just give this 30 seconds of your life. Maybe the product is great, too&hellip; let me know if you try it out. Want more great tips and apps? Check out ScreenCastsOnline",
		"keywords": ["applescript","github","shortcuts","taska","applescript","apprentice","brett","check","github","gitlab","issues","joyful","kaleidoscope","maybe","pierre","screencastsonline","screencastsonline","shortcuts","sorcerer","taska","useful","viruses","worms","acquired","afterthought","another","apprentice","automation","beautiful","behind","brettterpstra","bterpstra","class","collection","complaint","curtails","depth","developers","discovery","editing","eloquently","elucidates","excellent","frustration","functions","github","great","haven","height","hellip","holding","https","image","insane","issues","ldquo","loading","media","members","noscript","offered","offers","original","picture","pierre","possibilities","product","psychotic","published","range","razzius","rdquo","readme","remains","rsquo","screencasts","screencastsonline","seasoned","seconds","severely","small","sorcerers","source","splash","srcset","taska","title","topics","treated","tried","truly","tutorials","uploads","utility","viewing","width","wormsandviruses","worse"]
	},{
		"title": "App Tamer giveaway!",
		"url": "/2025/03/03/app-tamer-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Mar 3<span>rd</span>, 2025",
		"ts": "1741010400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 licenses ($14.95 value each) for App Tamer. That&rsquo;s right, another chance at App Tamer! Got unruly applications? App Tamer helps you take control of your CPU by controlling how much access your apps have to it. Throttle apps that take up too much CPU, speeding up the apps you&rsquo;re using most. App Tamer will automatically slow down or pause your applications whenever you&rsquo;re not using them, greatly reducing their CPU use. App Tamer even comes pre-configured to automatically reduce the CPU and battery usage of Safari, Firefox, Google Chrome, Spotlight, Time Machine, Photoshop, Illustrator, Word and many other applications. Sign up below to enter. Winners will be randomly drawn on Friday, March 07, at 12pm Central. The drawing is for 2 licenses ($14.95 value each) for App Tamer, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["optimization","tamer","central","check","chrome","entries","firefox","friday","google","illustrator","machine","mastodon","photoshop","safari","sorry","spotlight","tamer","throttle","winners","access","among","another","applications","appreciated","automatically","battery","below","beyond","brettterpstra","chance","codes","comes","configured","control","controlling","cooperation","developer","drawing","ended","enter","excited","featured","first","generating","giveaway","giveaways","greatly","helps","license","licenses","mailing","maybe","names","offer","pause","randomly","reading","reducing","right","robot","rsquo","series","signups","skipped","speeding","through","tuned","unruly","usage","using","value","vendors","visit","whenever","winner"]
	},{
		"title": "The Mouse Pro giveaway winners!",
		"url": "/2025/02/28/the-mouse-pro-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Feb 28<span>th</span>, 2025",
		"ts": "1740769200",
		"summary": "The Mouse Pro giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Mouse Pro is still worth checking out. Make your presentations pop with a cursor that really stands out. Next up is App Tamer . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on via email or on Mastodon, and join the email list for notifications",
		"keywords": ["cursor","mouse","recording","screen","screencast","antonio","apptamer","artika","bales","barton","cameron","check","congratulations","cristobal","damon","daniel","dennis","derrick","donovan","eittreim","fischer","giveaway","henry","jamin","jasper","jungh","justin","karim","keyboard","kovanen","lenaldo","liberty","maestro","mastodon","michael","monday","mouse","nthoroane","parry","peter","robot","rocha","samson","samuel","scanlon","spamsieve","steve","suliman","tamer","taskpaper","tomich","torres","tough","valenti","velez","vincent","watts","weber","wessel","wheals","wirth","yinan","announce","apple","background","brettterpstra","checking","class","command","confetti","contact","cursor","details","didnt","easydns","email","ended","giveaway","giveaways","height","hogbaysoftware","https","image","index","keyboardmaestro","loading","media","mouse","nojack","noscript","notifications","original","picture","presentations","received","rsquo","rtchen","series","sorry","source","spamsieve","srcset","stands","stclairsoft","subscribe","suggest","taskpaper","through","title","ttscoff","upcoming","uploads","width","winners","worth"]
	},{
		"title": "Web Excursions for February 28th, 2025",
		"url": "/2025/02/28/web-excursions-for-february-28th-2025/",
		"tags": ["bookmarks"],
		"date": "Feb 28<span>th</span>, 2025",
		"ts": "1740735960",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Our Changing Relationship With Apple Michael Tsai offers a great synopsis and brief analysis of the recent conversation among prominent voices in the Apple sphere about Apple&rsquo;s loss of moral high ground. Libation Liberate your Library Download and convert (crack) your Audible books. Also see OpenAudible. Plugable 10 Port USB C Charging Station 10 Ports, 100W, priority charging. Pretty impressive. NSStandardKeyBindingResponding Methods that responder subclasses implement to support key binding commands, such as inserting tabs and newlines, or moving the insertion point. I&rsquo;ve had trouble finding this resource in the past, but if you play with DefaultKeyBindings.dict at all, this is the reference you need for all methods currently available to your key binding assignments. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["appkit","apple","hardware","macos","apple","audible","backblaze","changing","charging","check","defaultkeybindings","download","libation","liberate","library","methods","michael","nsstandardkeybindingresponding","openaudible","plugable","ports","relationship","station","affordably","among","assignments","available","backs","binding","books","brief","brought","charging","cloud","commands","computer","conversation","convert","crack","entire","everything","excursions","finding","great","ground","impressive","inserting","insertion","methods","moral","moving","newlines","offers","partnership","point","priority","prominent","recent","reliably","resource","responder","rsquo","securely","sphere","subclasses","support","synopsis","today","trouble","voices"]
	},{
		"title": "Web Excursions for February 25th, 2025",
		"url": "/2025/02/25/web-excursions-for-february-25th-2025/",
		"tags": ["bookmarks"],
		"date": "Feb 25<span>th</span>, 2025",
		"ts": "1740491700",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Archive Hook bookmarks with DEVONthink A great script from Zsolt Benke that scans your Hookmark bookmarks and saves archives of them in DEVONthink, replicating functionality like Pinboard&rsquo;s bookmark archiving. Lingon I often promote LaunchControl for working with launchd automations on macOS, but Lingon (which I used many years ago) is still kicking and only costs $6. If you&rsquo;re a more casual automator, it&rsquo;s a great solution for setting up background tasks that run at intervals or when a file is changed. PKM Summit (Europe) If you&rsquo;re in Europe and interested in things like building knowledge bases in Obsidian or Notion, Miro or Freeform, or second brain solutions like PARA and GTD, here&rsquo;s a conference you&rsquo;d be interested in. Only 200 spots available. MangoForm MangoForm is a simple, powerful, and beautiful form builder without the bloat of traditional form builders. $15 one-time fee for a lifetime unlock, which is significantly cheaper than other subscription-based survey/forms services",
		"keywords": ["pinboard","archive","benke","check","devonthink","europe","freeform","hookmark","launchcontrol","lingon","mangoform","notion","obsidian","pinboard","setapp","summit","zsolt","access","archives","archiving","automations","automator","available","background","based","bases","beautiful","bloat","bookmark","bookmarks","brain","brought","builder","builders","building","casual","changed","cheaper","conference","excursions","forms","functionality","great","hundreds","interested","intervals","kicking","knowledge","launchd","lifetime","macos","monthly","often","partnership","powerful","promote","replicating","rsquo","saves","scans","script","second","services","setting","significantly","simple","solution","solutions","spots","subscription","survey","tasks","today","traditional","unlock","working","years"]
	},{
		"title": "Mouse Pro giveaway!",
		"url": "/2025/02/24/mouse-pro-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Feb 24<span>th</span>, 2025",
		"ts": "1740405600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 30 licenses ($3.99 value each) for Mouse Pro. If you need to demo your screen and really want your mouse cursor to stand out, Mouse Pro is an excellent tool for enhancing your presentations with precision and clarity. It can apply a variety of effects to your mouse cursor, including highlighting, zooming, and a spotlight effect to make your movements and actions on the screen really pop. It&rsquo;s ideal for classroom demos, online teaching, and screencasting. Hi, I&rsquo;m Schopenlaam, a developer from China with a passion for software craftsmanship and a love for philosophy. Mouse Pro came about by chance. Last year, after requests from Xiaohongshu fans, I created a tutorial on making LEGO animations in Blender. Realizing something was missing and no software met all my needs, I decided to build Mouse Pro. Sign up below to enter. Winners will be randomly drawn on Friday, February 28, at 12pm Central. The drawing is for 30 licenses ($3.99 value each) for Mouse Pro, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["cursor","mouse","recording","screen","screencast","blender","brettterpstra","central","check","china","entries","friday","giveaway","giveaways","mastodon","mouse","realizing","robot","schopenlaam","sorry","upcoming","winners","xiaohongshu","actions","among","animations","apple","apply","appreciated","below","beyond","blockquote","brettterpstra","build","chance","clarity","class","classroom","codes","contact","cooperation","craftsmanship","created","cursor","decided","demos","developer","drawing","easydns","effects","ended","enhancing","enter","excellent","excited","featured","first","generating","giveaway","giveaways","height","highlighting","https","ideal","image","including","license","licenses","loading","mailing","making","maybe","media","missing","mouse","mousepro","movements","names","needs","nojack","noscript","offer","online","original","passion","philosophy","picture","precision","presentations","randomly","reading","requests","robot","rsquo","screen","screencasting","screenshot","series","signups","skipped","software","sorry","source","spotlight","srcset","stand","strong","subscribe","teaching","through","title","ttscoff","tuned","tutorial","upcoming","uploads","value","variety","vendors","visit","width","winner","zooming"]
	},{
		"title": "Soundtrack fun",
		"url": "/2025/02/24/soundtrack-fun/",
		"tags": ["music","soundtrack","video","webdesign","youtube"],
		"date": "Feb 24<span>th</span>, 2025",
		"ts": "1740396240",
		"summary": "My weekend project was to integrate Songlink info with my Soundtrack project. I think it went smashingly. My Soundtrack page does not get a lot of traffic. That&rsquo;s fine, it&rsquo;s really just a playground for me. I think some of the features of it are really cool, personally, but more than anything, it&rsquo;s a place to play with music service APIs and front end web design. When I found Songlink, I was thrilled to have a way to share music without worrying about what services the intended audience preferred. It made links for everything for everybody. When I was informed they also had an API, I immediately decided I should find a way to integrate it into Soundtrack. The first thing I did was replace the Faved Tracks page with Song.link embeds. Previously that page had used Apple Music embeds to offer track previews and purchase links. With song.link embeds, I get a YouTube video of the full track, as well as streaming and purchase links for every available service. Perfect. The page loads slowly, as it&rsquo;s booting up 30+ iframes all at once, but it works. For the Recent Plays page, I wanted to do something a little more elegant. I added a small reveal icon to each card on that page, so that when you click a track title in the card (or anywhere other than the meter on the side or the preview/play button at the top), it opens up a side panel with the video and streaming links. I initially just used the medium size embed from Song.link, but I didn&rsquo;t love embedding iframes that embedded iframes (YouTube) and wanted to take it a step further. So I made my own popup that contains the YouTube video embed, plus streaming links for what I consider the most common services. This meant I had complete control over styling, and didn&rsquo;t have to deal with rate limits on Songlink by rapidly loading multiple iframes. The YouTube videos are lazy loaded, only initiated when the panel is open and removed from the DOM when it&rsquo;s closed. The cursor changes while loading, and ovrerall it&rsquo;s a pretty pleasing interface (to me). Next, I wanted to push my luck and integrate genius.com lyrics. If you click the genius (yellow) icon in one of these popouts, it will overlay the YouTube video with the song lyrics. Genius has an API, but it doesn&rsquo;t actually give you the lyrics. You have to use an embed for that. So what I&rsquo;m doing is using the API to get the page link for the lyrics, then scraping that page for the actual&hellip;",
		"keywords": ["genius","launchd","spotify","streaming","youtube","apple","check","depending","faved","genius","lyrics","music","plays","previously","recent","songlink","soundtrack","speaking","spotify","tracks","works","youtube","added","anywhere","artist","artists","audience","available","background","booting","bound","break","button","calls","cause","change","changes","click","closed","combination","common","consider","contains","content","control","curious","cursor","decided","design","doesn","doing","elegant","embed","embedded","embedding","embeds","everybody","everything","external","favorited","features","first","found","fragile","front","gather","gathers","genius","happy","itunes","iframes","information","informed","initiated","inputs","integrate","intended","interface","issues","launchd","limits","links","lists","little","loaded","loading","loads","lyric","lyrics","meant","medium","meter","minutes","multiple","music","mustache","offer","opens","operates","outage","overlay","ovrerall","panel","parses","perchance","personally","playground","plays","pleasing","popouts","popup","preferred","preview","previews","production","project","providers","rapidly","recent","removed","rendered","replace","resilient","reveal","rsquo","running","scraping","service","services","serving","share","slowly","small","smashingly","standpoint","stores","streaming","styling","templates","think","thrilled","title","track","tracks","traffic","using","various","video","videos","wanted","weekend","while","works","worrying","yellow"]
	},{
		"title": "The Things for Mac and iOS giveaway winners!",
		"url": "/2025/02/21/the-things-for-mac-and-ios-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Feb 21<span>st</span>, 2025",
		"ts": "1740164400",
		"summary": "The Things for Mac and iOS giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Things for Mac and iOS is still worth checking out. Things will help you get organized, and get your stuff done. Next up is Mouse Pro . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["productivity","adrian","check","congratulations","furlan","gilchrist","henion","keyboard","maestro","mastodon","monday","mouse","robert","spamsieve","tamer","twitter","vautin","announce","checking","details","email","ended","giveaway","giveaways","notifications","organized","received","rsquo","series","sorry","stuff","suggest","through","upcoming","winners","worth"]
	},{
		"title": "Web Excursions for February 19th, 2025",
		"url": "/2025/02/19/web-excursions-for-february-19th-2025/",
		"tags": ["bookmarks","browser","macos","service"],
		"date": "Feb 19<span>th</span>, 2025",
		"ts": "1739982420",
		"summary": "Whether you&rsquo;re a new user or a seasoned pro, ScreenCastsONLINE offers in-depth screencasts on a wide range of topics, from tutorials to app discovery. Check it out. Flotato While nothing has ever lived up to an old Mac app called Fluid for me, there are a few good options for creating Single Site Browsers (Mac apps dedicated to a single web service) these days. Flotato is the fastest and lightest weight one I&rsquo;ve seen, while still offering niceties like automatic mobile view and dock badges. It can create a new app from a service like Hulu or Facebook almost instantly, and the browsers it runs are lightweight. Plus it has the automatic benefit of siloing your use of a service from your other browser activities. Cirrus & Bailiff Cirrus takes control of iCloud, investigates and diagnoses its problems. Bailiff gives you menu bar control over what iCloud documents stay downloaded. This developer is crazy prolific. Check out all of their stuff (and their very nice web design)! DockDoor A cool (free) Mac utility that shows window previews from the Dock. You can switch to specific windows, plus minimize and close them. Very customizable look. Hat tip to Laptopllama, who recently wrote up a bunch of cool utilities (including Bunch ☺️). Save Safari website as PDF From Maarten den Braber: A Swift script to save Safari websites as PDF (with cookie syncing). Want more great tips and apps? Check out ScreenCastsOnline",
		"keywords": ["icloud","safari","synchronization","bailiff","braber","brett","browsers","bunch","check","cirrus","dockdoor","facebook","flotato","fluid","laptopllama","maarten","safari","screencastsonline","screencastsonline","single","swift","while","activities","almost","automatic","badges","bailiff","benefit","brettterpstra","browser","browsers","bterpstra","bunch","called","cirrus","class","close","control","cookie","crazy","create","creating","customizable","dedicated","depth","design","developer","diagnoses","discovery","dockdoor","documents","downloaded","downloads","eclecticlight","fastest","flotato","github","gives","great","height","holding","https","icloud","image","including","instantly","investigates","laptopllama","lightest","lightweight","lived","loading","mdbraber","media","members","minimize","mobile","niceties","noscript","nothing","offering","offers","options","original","picture","previews","problems","prolific","range","recently","rsquo","screencasts","screencastsonline","script","seasoned","service","shows","siloing","single","source","specific","srcset","stuff","switch","syncing","takes","title","topics","tutorials","uploads","utilities","utility","website","websites","weight","while","width","window","windows","wrote"]
	},{
		"title": "Things for Mac and iOS giveaway!",
		"url": "/2025/02/17/things-for-mac-and-ios-giveaway/",
		"tags": ["giveaway","iphone","macos"],
		"date": "Feb 17<span>th</span>, 2025",
		"ts": "1739800800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($80 combined value each) for Things for Mac and iOS. That&rsquo;s right, another chance at Things! Things is a task management solution that I love for its elegance. Display your todos alongside calendar events, see exactly what you have to do today, see upcoming tasks, and break large projects down into manageable pieces. This giveaways gets you 3 licenses, one each for Mac, iPhone, and iPad. Things makes it easy. Within the hour, you&rsquo;ll have everything off your mind and neatly organized &mdash; from routine tasks to your biggest life goals &mdash; and you can start focusing on what matters today. Sign up below to enter. Winners will be randomly drawn on Friday, February 21, at 12pm Central. The drawing is for 5 licenses for Mac, iPhone, and iPad ($80 combined value each) for Things for Mac and iOS, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["productivity","central","check","display","entries","friday","mastodon","sorry","winners","within","alongside","among","another","appreciated","below","beyond","biggest","break","brettterpstra","calendar","chance","codes","cooperation","developer","drawing","elegance","ended","enter","events","everything","excited","featured","first","focusing","generating","giveaway","giveaways","goals","iphone","license","licenses","mailing","makes","manageable","management","matters","maybe","mdash","names","neatly","offer","organized","pieces","projects","randomly","reading","right","robot","routine","rsquo","series","signups","skipped","solution","tasks","through","today","todos","tuned","upcoming","value","vendors","visit","winner"]
	},{
		"title": "Web Excursions for February 15th, 2025",
		"url": "/2025/02/15/web-excursions-for-february-15th-2025/",
		"tags": ["bookmarks","music","service","tools"],
		"date": "Feb 15<span>th</span>, 2025",
		"ts": "1739638320",
		"summary": "Web excursions brought to you in partnership with Tower, the absolute best Git GUI for macOS. Enter Tapestry A cool new app from Iconfactory that blends multiple media sources into one list, complete with muting and management tools. You can even add your own sources with basic descriptor files. Devbox: Portable, Isolated Dev Environments Devbox creates isolated, reproducible development environments that can run anywhere without Docker or virtual machines. According to Kai Wells it&rsquo;s Nix on easy mode. Modern CSV - Multi-Platform CSV File Editor and Viewer CSV file editor application for Windows, Mac, and Linux with powerful editing tools and large file viewing. Edit CSV files for free today. h/t Ralf Hülsmann Songlink/Odesli Automated, on-demand smart links for songs, albums, podcasts and more. For artists, for fans, for free. Enter a search term or a streaming service URL and get a page (e.g.) with links to that song/album on every possible streaming service. Perfect for sharing music with friends when you don&rsquo;t know what service(s) they subscribe to. Free! Soundiiz - Transfer playlists and favorites between streaming services Convert playlists and favorites between different music platforms. Import your playlists and favorites from Apple Music to Spotify, TIDAL, YouTube Music, Deezer and many more! Free plan does a lot of what I need. Handy tool for people who use multiple streaming services. If you&rsquo;re using Git, you need Tower. Check it out today",
		"keywords": ["apple","docker","iconfactory","music","spotify","streaming","apple","automated","brett","check","convert","deezer","devbox","docker","editor","enter","environments","handy","iconfactory","import","isolated","linux","mbeavy","modern","multi","music","odesli","platform","portable","songlink","soundiiz","spotify","tidal","tapestry","theiconfactory","tower","vpfkz","viewer","wells","windows","youtube","absolute","album","albums","anywhere","artists","basic","between","blends","blockquote","brett","brettterpstra","brought","class","creates","demand","descriptor","devbox","development","different","editing","editor","enter","environments","excursions","favorites","files","friends","github","height","holding","https","iconfactory","image","isolated","jetify","links","loading","lsmann","macos","machines","management","media","moderncsv","multiple","music","muting","noscript","odesli","original","partnership","people","picture","platforms","playlists","podcasts","possible","powerful","quells","reproducible","rsquo","search","service","services","sharing","smart","social","songs","soundiiz","source","sources","srcset","statuses","streaming","subscribe","tapestry","title","today","tools","tower","uploads","using","viewing","virtual","width"]
	},{
		"title": "The Curio giveaway winners!",
		"url": "/2025/02/14/the-curio-giveaway-winners/",
		"tags": ["giveaway","productivity"],
		"date": "Feb 14<span>th</span>, 2025",
		"ts": "1739559600",
		"summary": "The Curio giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Curio is still worth checking out. You can still save 20% off new licenses using the coupon . If you brainstorm, manage projects, or just love to research, Curio is a must-have. Next up is Things for Mac and iOS . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["brainstorming","curio","organization","productivity","aidan","check","congratulations","curio","keyboard","maestro","mastodon","monday","soteros","spamsieve","tamer","thomas","twitter","williamson","announce","brainstorm","checking","coupon","details","email","ended","giveaway","giveaways","licenses","notifications","projects","received","research","rsquo","series","sorry","suggest","through","upcoming","using","winners","worth"]
	},{
		"title": "Curio giveaway!",
		"url": "/2025/02/10/curio-giveaway/",
		"tags": ["giveaway","macos","productivity"],
		"date": "Feb 10<span>th</span>, 2025",
		"ts": "1739196000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 Pro license ($99 value each) for Curio. That&rsquo;s right, another chance at Curio, just in time for the Curio 31 release! Curio is the perfect app for managing your brainstorms, your research, your projects, and your digital life. A Curio \"space\" is a blank canvas onto which you can add notes, web pages, pdfs, images, mind maps, outlines, and more. All searchable and linkable, and even shareable. The latest version is freshly out and ready to take it to the next level. It includes multiple AI integrations to assist with research, and adds even more Markdown goodness, including Markdown task lists and TSV to table conversion! Take notes. Organize files. Collect research. Brainstorm in mind maps. Track tasks with to-do lists or Kanban stacks. Drop in an equation. Sketch out an idea. Get more productive! Curio’s intuitive, freeform notebook environment provides all the integrated tools you need to be more productive and focus on getting things done. Sign up below to enter. Winners will be randomly drawn on Friday, February 14, at 12pm Central. The drawing is for 2 Pro license ($99 value each) for Curio, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["brainstorming","curio","organization","productivity","brainstorm","brettterpstra","central","check","collect","curio","entries","friday","giveaway","giveaways","kanban","markdown","mastodon","organize","robot","sketch","sorry","track","upcoming","winners","among","another","appreciated","assist","below","beyond","blank","blockquote","brainstorms","brettterpstra","canvas","chance","class","codes","contact","conversion","cooperation","curio","developer","digital","drawing","easydns","ended","enter","environment","equation","excited","featured","files","first","focus","freeform","freshly","generating","getting","giveaway","giveaways","goodness","height","https","image","images","includes","including","integrated","integrations","intuitive","latest","ldquo","level","license","linkable","lists","loading","mailing","managing","maybe","media","multiple","names","nojack","noscript","notebook","notes","offer","original","outlines","pages","picture","productive","projects","provides","randomly","rdquo","reading","ready","release","research","right","robot","rsquo","screenshot","searchable","series","shareable","signups","skipped","sorry","source","space","srcset","stacks","strong","subscribe","table","tasks","through","title","tools","ttscoff","tuned","upcoming","uploads","value","vendors","version","visit","width","winner","zengobi"]
	},{
		"title": "Readwise to DEVONthink update",
		"url": "/2025/02/09/readwise-devonthink-update/",
		"tags": ["devonthink","markdown","scripting"],
		"date": "Feb 9<span>th</span>, 2025",
		"ts": "1739112240",
		"summary": "This morning I pushed a pretty large update to the Readwise to DEVONthink script I published yesterday. It adds some important features, so if you&rsquo;ve already downloaded the script, you might want to update. The previous version worked fine, but there were a couple of things it needed to do better. First, it was failing to find existing notes if the note title contained punctuation. This is fixed, so adding highlights and notes to existing documents won&rsquo;t create duplicates. It&rsquo;s still creating duplicate annotations and I haven&rsquo;t figured out why yet, but that may be fixed in a future release. Second, I didn&rsquo;t like that it was highlighting entire paragraphs when the Readwise highlight was only a portion. I originally set it up that way because it was tricky to match the text when it contained Markdown markup like emphasis and links, as the Readwise highlight wouldn&rsquo;t have that in it, so matching it was difficult and it ran the risk of overwriting or breaking existing syntax. I think I have this solved, and it should always be able to highlight specific text in a paragraph without breaking anything. (If you reset the date file and run the script again, it will update all of your highlights with the more specific versions automatically.) Highlights are also now sorted by their position in the document when adding them to annotations. Previously it was sorted by date added, so the document order of highlights in the annotations was out of whack. Lastly, I added some output options. You can use to silence all output. You can also use or to output a little more information about each bookmark saved. If you use and an AppleScript command fails, it will actually show you the code it tried to run, which is tremendously helpful for debugging. I think I&rsquo;ve got it at a point where I can stop fiddling now. Check out the updated script and let me know if you have any issues",
		"keywords": ["applescript","readwise","applescript","check","devonthink","first","highlights","lastly","markdown","previously","readwise","second","added","adding","again","annotations","automatically","because","bookmark","breaking","command","contained","couple","create","creating","debugging","difficult","document","documents","downloaded","duplicate","duplicates","emphasis","entire","failing","fails","features","fiddling","figured","fixed","haven","helpful","highlight","highlighting","highlights","important","information","issues","links","little","markup","match","matching","morning","needed","notes","options","originally","output","overwriting","paragraph","paragraphs","point","portion","position","published","punctuation","pushed","release","reset","rsquo","saved","script","silence","solved","sorted","specific","syntax","think","title","tremendously","tricky","tried","updated","version","versions","whack","where","worked","wouldn","yesterday"]
	},{
		"title": "Readwise highlights to DEVONthink",
		"url": "/2025/02/08/readwise-highlights-to-devonthink/",
		"tags": ["devonthink","launchd","markdown","reading","scripting","tools"],
		"date": "Feb 8<span>th</span>, 2025",
		"ts": "1739029680",
		"summary": "Readwise is an awesome power-user tool for reading web articles, newsletters, and even e-books. DEVONthink is an amazing tool for building connected knowledge bases. Today I&rsquo;m releasing a script that saves Readwise highlights to DEVONthink as annotated Markdown files, bringing the two together. It&rsquo;s pretty handy. I started trying out Readwise shortly after I started really getting into DEVONthink. DEVONthink can function as a Read Later type of tool, but I found Readwise Reader and associated browser extensions to be a lot more pleasurable for the actual act of reading. I weighed the options for a while, and then decided to go ahead and start paying for Readwise. But I was doing all of this highlighting as I was reading, which is really great for comprehension and retention, but those articles and highlights weren&rsquo;t accessible from my larger knowledge base in DEVONthink. This script bridges the gap. It&rsquo;s designed to run at intervals, finding new highlights as you create them, and imports highlighted documents as Markdown files if the document is a web page. If it&rsquo;s something else, like a forwarded email or a PDF/E-book, it will just create a bookmark linking to the Reader URL. The Markdown file/bookmark is then annotated with a list of the highlights and all of their associated notes and tags, as well as the Readwise document summary and any document notes/tags. The annotations are stored as both Finder comments and as separate annotation files. If the document is saved as Markdown, the script also highlights paragraphs containing Readwise highlights. It does this using CriticMarkup (), which shows up as highlighted in both the Markdown editor and in the preview. It can only highlight by paragraph (not by sentence), which is fine for me because I typically just highlight by hitting in Reader to highlight the current paragraph. The attached annotations show just the highlighted text, so more intricate highlights aren&rsquo;t lost in this process. This highlighting makes it really easy to jump to pertinent portions of the text from the Document->Annotations inspector. The Readwise API can return new highlights added to a document that already had highlights in it. This script handles this by merging new highlights into the annotations and updating the existing highlights in the Markdown. It can&rsquo;t handle deletions of existing highlights via the API (yet), but will merge new and changed highlights. The other minor&hellip;",
		"keywords": ["highlight","highlights","readwise","annotations","command","criticmarkup","devonthink","document","enjoy","finder","github","homebrew","however","lastly","later","launchcontrol","markdown","plist","reader","readwise","setting","today","xcode","above","access","accessible","account","added","ahead","allows","amazing","annotated","annotation","annotations","anywhere","article","articles","associated","attached","awesome","background","bases","because","beginning","believe","benefit","bookmark","books","bridges","bringing","browser","building","built","caveat","changed","comments","complex","comprehension","configure","connected","contain","containing","create","custom","database","decided","default","deletions","designed","detailed","devontink","display","document","documents","doesn","doing","download","drive","easier","editing","editor","email","eventually","executable","extensions","favorite","files","finding","foresee","forwarded","found","function","getting","global","great","group","handle","handles","handy","hellip","helps","highlight","highlighted","highlighting","highlights","history","hitting","hopefully","https","image","images","imports","inbox","inspector","install","installed","intervals","intricate","knowledge","larger","launchd","linking","little","macos","makes","merge","merging","minor","needing","needs","newsletters","notes","options","others","paragraph","paragraphs","paste","paying","penny","pertinent","pleasurable","portable","portions","possible","preview","price","process","provides","rbenv","readers","reading","readwise","recent","recommend","releasing","rerun","retention","return","rsquo","running","saved","saves","script","second","sentence","separate","shortly","shows","since","sliver","small","started","stored","summary","system","together","token","tools","trying","typically","updating","using","version","viewer","weighed","weren","while","worth","write","written"]
	},{
		"title": "The EagleFiler giveaway winners!",
		"url": "/2025/02/07/the-eaglefiler-giveaway-winners/",
		"tags": ["email","giveaway"],
		"date": "Feb 7<span>th</span>, 2025",
		"ts": "1738954800",
		"summary": "The EagleFiler giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but EagleFiler is still worth checking out. Capture web pages, emails, Evernote items, or any file on your Mac and make them easily searchable and trackable. You can still save 20% on your purchase with the code at the C-Command store. Next up is Curio . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["eaglefiler","filing","productivity","atchariyachanvanit","capture","check","command","congratulations","curio","downs","eaglefiler","evernote","kantida","mastodon","monday","spamsieve","stephen","tamer","twitter","announce","checking","details","easily","email","emails","ended","giveaway","giveaways","items","notifications","pages","received","rsquo","searchable","series","sorry","store","suggest","through","trackable","upcoming","winners","worth"]
	},{
		"title": "EagleFiler giveaway!",
		"url": "/2025/02/03/eaglefiler-giveaway/",
		"tags": ["giveaway","macos","search"],
		"date": "Feb 3<span>rd</span>, 2025",
		"ts": "1738591200",
		"summary": "I&rsquo;m offering a second chance to score one of two licenses for EagleFiler ($59.99 value each), just in case you missed it, or you didn&rsquo;t win the first time around. EagleFiler is an amazing tool for cataloging and searching all of your information, from web pages to emails and every kind of file you need to keep track of. It gives you a Mail-like interface for viewing all of your data, supports tagging and notes, and offers AES encryption. Organize files, archive e-mails, save Web pages and notes, search everything. The live search is faster than Spotlight, and you can also set up smart folders and smart folder actions. Sign up below to enter. Winners will be randomly drawn on Friday, February 07, at 12pm Central. The drawing is for 2 licenses ($59.99 value each) for EagleFiler, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["eaglefiler","filing","productivity","central","check","eaglefiler","entries","friday","mastodon","organize","sorry","spotlight","winners","actions","amazing","among","appreciated","archive","below","beyond","brettterpstra","cataloging","chance","codes","cooperation","developer","drawing","emails","encryption","ended","enter","everything","faster","featured","files","first","folder","folders","generating","giveaway","giveaways","gives","information","interface","license","licenses","mailing","mails","maybe","missed","names","notes","offering","offers","pages","randomly","reading","robot","rsquo","score","search","searching","second","series","signups","skipped","smart","supports","tagging","through","track","tuned","value","vendors","viewing","visit","winner"]
	},{
		"title": "The Amadine giveaway winners!",
		"url": "/2025/01/31/the-amadine-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jan 31<span>st</span>, 2025",
		"ts": "1738350000",
		"summary": "The Amadine giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Amadine is still worth checking out. Developed with precision and attention to what users need, Amadine offers every tool and feature to bring the craziest ideas to life. You can get your first year for 40% off ($5.99 instead of $9.99) throughout February on the App Store. Check it out for Mac, iPhone, and iPad. Next up is EagleFiler. Check back every Monday through April, 2025 for more giveaways. If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["amadine","design","vector","amadine","chamness","check","congratulations","craig","curio","damien","developed","eaglefiler","jobbins","mastodon","monday","spamsieve","store","sungbin","tamer","twitter","voltz","white","announce","bring","checking","craziest","details","email","ended","feature","first","giveaway","giveaways","iphone","ideas","notifications","offers","precision","received","rsquo","series","sorry","suggest","through","throughout","upcoming","users","winners","worth"]
	},{
		"title": "Archive linkding bookmarks to DEVONthink",
		"url": "/2025/01/31/archive-linkding-bookmarks-to-devonthink/",
		"tags": ["devonthink","linkding","linking","markdown","nvultra","scripting","tagging"],
		"date": "Jan 31<span>st</span>, 2025",
		"ts": "1738324020",
		"summary": "I recently posted a script I was using to archive my linkding bookmarks to Markdown files in nvUltra. I&rsquo;ve since started digging into DEVONthink and have updated the script to archive my bookmarks there. I still use my bookmarks with nvUltra by indexing a notebook in DEVONthink and saving the bookmarks there. Most of my bookmarks are still archived as Markdown, so that allows me to view and edit content in either place. (The same could be done with Obsidian.) Web archives and PDFs also display in nvUltra, so I have both options available for viewing. But in DEVONthink I can link the archived bookmarks to other documents, tag and classify them, and annotate all types with highlights and notes. The script I&rsquo;m running allows me to tag bookmarks to be archived, just like the original script. The script runs at regular intervals using launchd on my always-on Mac Studio. It&rsquo;s a self-contained script that requires just Ruby and one gem (HTTParty) to run. It&rsquo;s best run as a user agent, but it should work if run as a global agent (as root) as well. Installation and configuration are documented in the README (and in the script comments). Aside from having my bookmarks readily available in DEVONthink, this also allows me to make use of DEVONthink&rsquo;s clipper, making conversion to webloc bookmarks, PDF files, or web archives easy, in addition to Markdown notes. I set the script up to use Marky 2.0 as the Markdownifier, but have been getting sketchy results for some reason, so I currently have it configured to use the version of Marky 1.0 that DEVONthink has built in. I hope to fix this soon. Switching is just a configuration option, so watch here for an update when I get it smoothed out. The script allows configuring a single tag that will cause a bookmark to be ingested, and there are other tags to specify what type of bookmark is saved: PDF, web archive, webloc (bookmark), or Markdown. The way I run it, any bookmark tagged with the main tag gets saved as Markdown unless I also specify one of the other types. If you don&rsquo;t set a default type, you can save as both Markdown and another type. See the Gist link below to download the script. The configuration options are all in the variable at the top, and are well-commented. Define your server information, the DEVONthink database and group to use, and the tags you want to use for the various types. I recommend LaunchControl from soma-zone for editing launchd jobs. It makes&hellip;",
		"keywords": ["github","launchd","aside","devonthink","define","httparty","installation","launchcontrol","markdown","markdownifier","marky","obsidian","readme","studio","switching","agent","allows","annotate","another","anyone","archive","archived","archives","available","below","bookmark","bookmarks","built","button","cause","classify","click","clipper","commented","comments","configuration","configured","configuring","contained","content","conversion","database","default","digging","display","documented","documents","download","editing","either","files","getting","global","group","happy","having","helps","highlights","indexing","information","ingested","intervals","issues","launchd","linkding","loading","makes","making","maybe","needed","notebook","notes","nvultra","options","original","people","posted","readily","recently","recommend","regular","requires","results","rsquo","running","saved","saving","script","server","setting","share","since","single","sketchy","smoothed","specific","specify","started","tagged","types","unloading","updated","using","variable","various","version","viewing","watch","webloc"]
	},{
		"title": "Amadine giveaway!",
		"url": "/2025/01/27/amadine-giveaway/",
		"tags": ["design","developer","giveaway","macos"],
		"date": "Jan 27<span>th</span>, 2025",
		"ts": "1737986400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 iOS licenses ($29.99 value each) for Amadine. Whether you&rsquo;re a creative professional or an amateur with big ideas, Amadine is a vector design tool that can help you get there, no matter how big the goal. This is a really powerful design app that I surprisingly hadn&rsquo;t heard of until it was requested on the forum. The developer was gracious enough to provide licenses for a few lucky readers 🥳. Developed with precision and attention to what users need, this graphic design app offers every tool and feature to bring the craziest ideas to life. Sign up below to enter. Winners will be randomly drawn on Friday, January 31, at 12pm Central. The drawing is for 5 iOS licenses ($29.99 value each) for Amadine, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["amadine","design","vector","amadine","brettterpstra","central","check","developed","entries","friday","giveaway","giveaways","mastodon","robot","sorry","upcoming","winners","amadine","amateur","among","appreciated","below","beyond","blockquote","brettterpstra","bring","class","codes","contact","cooperation","craziest","creative","design","developer","drawing","easydns","ended","enough","enter","excited","feature","featured","first","forum","generating","giveaway","giveaways","gracious","graphic","heard","height","https","ideas","image","license","licenses","loading","lucky","mailing","maybe","media","names","nojack","noscript","offer","offers","original","picture","powerful","precision","professional","randomly","readers","reading","robot","rsquo","screenshot","series","signups","skipped","sorry","source","srcset","strong","subscribe","surprisingly","through","title","ttscoff","tuned","upcoming","uploads","users","value","vector","vendors","visit","width","winner"]
	},{
		"title": "The Inbox AI giveaway winners!",
		"url": "/2025/01/24/the-inboxai-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jan 24<span>th</span>, 2025",
		"ts": "1737745200",
		"summary": "The Inbox AI giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Inbox AI is still worth checking out . There are tons of automation and AI integration possibilities! Next up is Amadine . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["macos","amadine","check","congratulations","consoli","curio","doorn","eaglefiler","francesco","inbox","mastodon","maurits","monday","spamsieve","tamer","twitter","zehner","announce","automation","checking","details","email","ended","giveaway","giveaways","integration","notifications","possibilities","received","rsquo","series","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "Inbox AI giveaway!",
		"url": "/2025/01/20/inbox-ai-giveaway/",
		"tags": ["email","giveaway","macos"],
		"date": "Jan 20<span>th</span>, 2025",
		"ts": "1737381600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($49.95 value each) for Inbox AI. Inbox AI lets you have conversations with AI, automate tasks, process your emails, and capture information - all through voice and connected to your information. This one is a popular user request, and I&rsquo;m glad I could bring it to you! Inbox AI is a productivity & automation app. Build custom voice commands and ai-based email processing rules. Create workflows like extracting tasks from emails, screenshots, and audio, or use workflows others have created. Simply select anything on your screen, or say it out loud to integrate with any of your favorite applications like Reminders, Notion, Tana, and Obsidian using API or terminal commands. Sign up below to enter. Winners will be randomly drawn on Friday, January 24, at 12pm Central. The drawing is for 3 licenses ($49.95 value each) for Inbox AI, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["macos","build","central","check","create","entries","friday","inbox","mastodon","notion","obsidian","reminders","simply","sorry","winners","among","applications","appreciated","audio","automate","automation","based","below","beyond","brettterpstra","bring","capture","codes","commands","connected","conversations","cooperation","created","custom","developer","drawing","email","emails","ended","enter","excited","extracting","favorite","featured","first","generating","giveaway","giveaways","information","integrate","license","licenses","mailing","maybe","names","offer","others","popular","process","processing","productivity","randomly","reading","robot","rsquo","rules","screen","screenshots","series","signups","skipped","tasks","terminal","through","tuned","using","value","vendors","visit","voice","winner","workflows"]
	},{
		"title": "Health Update: Diagnoses",
		"url": "/2025/01/19/health-update-diagnoses/",
		"tags": ["health"],
		"date": "Jan 19<span>th</span>, 2025",
		"ts": "1737302400",
		"summary": "Last time I wrote about my health, I had an inkling of what was going on with me, and now I have some diagnoses to work with. Thanks to my readers for their support as I grapple with my health changes. I knew I had some form of dysautonomia, but I was having trouble finding a doctor who was curious enough about my various symptoms1 to give me a diagnosis. I finally found what I needed through the EDS Clinic, with a hat tip to Bryan Guffey for pointing me there. It was a Telehealth appointment, which allowed for visual tests like mobility and basic orthostatic tests, but lacked blood work, so some of these are initial diagnoses that could change. Just that morning I&rsquo;d had an orthostatic pulse and blood pressure reading at Gundersen Health, so I was armed with the numbers and observations from that. I came out of it with diagnoses of: None of these are surprises &mdash; I had done extensive research on autonomic disorders and knew where my symptoms fit (and where they didn&rsquo;t). Thanks to a growing database in DEVONthink and some research help from my partner, I had a cross-referenced list of symptoms and possible correlations ready to go. I&rsquo;ve found that with rare diseases &mdash; especially ones that don&rsquo;t show up in blood work or show up with results that are individually explicable in other ways &mdash; it&rsquo;s best to show up armed with as much information as possible. Thankfully, because the clinic specialized in EDS, the physician was ready to listen and fully versed in the various disorders and syndromes comprising dysautonomia. So now that I have some diagnoses, I&rsquo;ve started treatment, and things have improved markedly. Some interventions &mdash; like increasing water and salt intake and applying abdominal compression &mdash; are easy and have already improved my POTS symptoms, which include dizziness and syncope (passing out) when standing up. I&rsquo;m more functional than I have been in six months. And I&rsquo;ve started medications, both over the counter and prescription, which have started to help symptoms like constant dizziness (even when seated or prone) and skin burning. I&rsquo;m still dizzy as I write this, and some of these interventions might take a while, but things are getting better. I&rsquo;ll follow up with some blood work, and I need to find EDS-aware physical therapists, but I have referrals and orders for all of that. It&rsquo;s such a relief to be making forward progress. I&rsquo;ve&hellip;",
		"keywords": ["activation","danlos","disorder","dizziness","dysautonomia","ehlers","hypermobility","orthostatic","postural","spectrum","syndrome","tachycardia","activation","bipolar","brett","bryan","cptsd","causes","clinic","college","complex","constant","control","devonthink","danlos","deficit","design","diagnosis","disorder","dysautonomia","ehlers","facebook","guffey","gundersen","health","hyperactivity","hypermobile","kissel","mastodon","medical","minneapolis","orthostatic","outlet","postural","references","religious","scrabble","society","spectrum","stress","substance","symptoms","syndrome","tachycardia","telehealth","terpstra","thankfully","thanks","thoracic","trauma","traumatic","treatment","types","abdominal","activation","allowed","applying","appointment","armed","autonomic","aware","backlink","basic","because","benefits","blackqueeriroh","blood","board","brettterpstra","burning","capabilities","causes","change","changes","changing","class","cleared","clevelandclinic","clinic","college","communicated","community","complex","compression","comprising","conditions","constant","correlations","cptsd","cross","curious","danlos","database","devontechnologies","devonthink","diagnoses","diagnosis","diseases","disorder","disorders","dizziness","dizzy","doctor","document","dysautonomia","ehlers","endnotes","enough","especially","excellent","explicable","extensive","family","features","feeling","finally","finding","fnref","footnote","footnotes","found","friends","fully","functional","gathered","getting","going","gotten","grapple","great","growing","having","health","healthline","height","hesitant","https","hurdles","image","impressive","improved","incognita","increasing","individually","information","initial","inkling","instruction","intake","interventions","joked","lacked","ldquo","learn","learning","letters","likely","listen","loading","looks","major","making","markedly","mayoclinic","mdash","media","medications","mobility","morning","needed","noscript","noteref","numbers","observations","openly","orders","original","orthostatic","outlet","partner","passing","people","physical","physician","picture","point","pointing","possible","postural","prescription","pressure","privacy","professional","prone","pulse","quickly","rather","rdquo","readers","reading","ready","realize"]
	},{
		"title": "The Setapp giveaway winners!",
		"url": "/2025/01/17/the-setapp-giveaway-winners/",
		"tags": ["giveaway","setapp"],
		"date": "Jan 17<span>th</span>, 2025",
		"ts": "1737140400",
		"summary": "The Setapp giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Setapp is still worth checking out. With access to hundreds of apps for one low monthly price, you can&rsquo;t beat the quality and affordability Setapp offers. I run dozens of apps via Setapp every month for one low monthly price. Highly recommended. Next up is Inbox AI . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["macos","ahles","ballentine","brandon","check","congratulations","curio","eaglefiler","highly","inbox","leighton","mastodon","monday","patrick","piper","price","setapp","simmons","spamsieve","tamer","twitter","access","affordability","announce","checking","details","dozens","email","ended","giveaway","giveaways","hundreds","monthly","notifications","offers","price","quality","received","recommended","rsquo","series","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "Marky gets DEVONthink integration",
		"url": "/2025/01/17/marky-gets-devonthink-integration/",
		"tags": ["bookmarklet","browser","devonthink","markdown","markdownifier","marky"],
		"date": "Jan 17<span>th</span>, 2025",
		"ts": "1737126300",
		"summary": "I&rsquo;ve been obsessively into DEVONthink lately. Once I&rsquo;ve truly explored it, I&rsquo;ll write more about that, but in the meantime I wanted to share a handy integration for those already using it. I&rsquo;m very aware that DEVONthink has a great clipper. Whether you&rsquo;re using bookmarklets, browser plugins, or the Sorter directly, it can grab a web page and convert it to Markdown, Web Archive, Formatted Note&hellip; whatever you want to do with it. The only problem I&rsquo;ve run into is that the built-in Markdownifier lacks some of the things I built into Marky the Markdownifier1. So I added my own clipper. DEVONthink has a very useful URL handler, which you can explore by looking at the source code for their bookmarklets (or by dissecting a browser plugin, but why bother?). It has options for clipping, creating Markdown and formatted notes, generating web archives, and more. For my purposes, I just wanted to create Markdown notes, but use Marky instead of the built in Markdown conversion tool. It took me about 10 minutes to build DEVONthink clipping into Marky itself. After Markdownifying a page with Marky, either from the main page or a custom bookmarklet (which Marky can generate for you), you&rsquo;ll get a preview window with a \"Clip to&hellip;\" option. Clicking that will give you a list of options, now including DEVONthink. The first time you use it, you&rsquo;ll probably have to grant permission for Marky to open urls. I know there&rsquo;s some magic in Chrome to grant permissions to all url handlers, but I&rsquo;ve never found the same setting in Firefox, my browser of choice. But once you grant permission once, you should be good to go in the future. Once you&rsquo;ve Markdownified a page and clipped to DEVONthink, it will show up in your Global Inbox, ready to be classified. If you Markdownify to MultiMarkdown or GFM, tags in the original web page will be automatically applied to the new document (if you enable that in tag settings). I move most of these into my main nvUltra folder, which is an indexed folder accessible to both DEVONthink and nvUltra. Super handy that way. The page imports as a regular Markdown document, ready to edit and preview. I hope this is useful to DEVONthink users. I&rsquo;d like to figure out how to clip the Markdown as a Formatted Note next, but my experiments thus far haven&rsquo;t worked. I&rsquo;m sure I&rsquo;ll figure it out. Of course the generated DEVONthink url is available in the&hellip;",
		"keywords": ["bookmark","devon","technologies","archive","chrome","clicking","devonthink","firefox","formatted","global","inbox","markdown","markdownified","markdownifier","markdownify","markdownifying","marky","multimarkdown","permissions","preview","sorter","super","accessible","added","anymore","applied","archives","asked","automatically","available","aware","backlink","bookmarklet","bookmarklets","bother","brettterpstra","browser","build","built","choice","class","classified","clipped","clipper","clipping","cliptodevonthink","conversion","convert","create","creating","custom","details","developers","devontechnologies","devonthink","directly","dissecting","document","download","either","endnotes","experiments","explore","explored","extras","figcaption","figure","first","fnref","folder","footnote","footnotes","format","formats","formatted","found","generated","generating","granted","great","handler","handlers","handy","haven","heckyesmarkdown","height","hellip","highlighter","https","image","imports","inbox","including","indexed","integration","itself","lacks","language","ldquo","loading","looking","magic","markdownrules","meantime","media","minutes","noscript","noteref","notes","nvultra","obsessively","options","original","permission","permissions","picture","plaintext","plugin","plugins","point","preview","problem","rdquo","ready","regular","reversefootnote","rouge","rsquo","setting","settings","share","source","srcset","support","think","title","truly","uploads","useful","users","using","wanted","whatever","width","window","worked","write"]
	},{
		"title": "Strikethrough and emojis for mdless",
		"url": "/2025/01/13/strikethrough-and-emojis-for-mdless/",
		"tags": ["markdown","mdless","support","terminal"],
		"date": "Jan 13<span>th</span>, 2025",
		"ts": "1736791200",
		"summary": "You can now use formatting, and if your terminal supports strikethrough text, it will be displayed as such. You can control formatting and colors by adding to your theme file, which by default is : I also added support for GitHub emojis, e.g. for 😁 and for ☂️. I can&rsquo;t guarantee full compatibility, but a vast number of emoji are covered. Enough that VS Code choked on the list and I had to open the trusty BBEdit, which is an absolute champ at handling large files. Emoji support in mdless is enabled by default and requires no configuration changes. That&rsquo;s it, but if you use mdless, especially for reading GitHub files, I think you&rsquo;ll appreciate the additions. Just use to update",
		"keywords": ["emoji","github","strikethrough","bbedit","emoji","enough","github","absolute","added","adding","additions","appreciate","barebones","bbedit","brettterpstra","champ","changes","choked","class","colors","compatibility","config","configuration","control","couple","covered","default","deletion","displayed","emoji","emojis","enabled","especially","features","files","formatting","guarantee","handling","highlight","highlighter","https","index","install","language","mdless","morning","plaintext","products","projects","published","reading","requires","rouge","rsquo","smile","strikethrough","support","supports","terminal","theme","think","title","trusty","umbrella"]
	},{
		"title": "Setapp giveaway!",
		"url": "/2025/01/13/setapp-giveaway/",
		"tags": ["giveaway","macos","setapp"],
		"date": "Jan 13<span>th</span>, 2025",
		"ts": "1736776800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 6-month subscriptions ($59.95 each) for Setapp. A lot of the giveaways I&rsquo;ve been running are also available on Setapp. And the reason a lot of readers don&rsquo;t enter is because they&rsquo;re already getting these apps for one monthly payment of $9.99. There are over 250 high-quality apps available, including amazing tools like CleanShot X, my own Marked 2, Ulysses, MindNode, and hundreds more. This giveaway is only open to new customers. Existing customers are inelegible for the free 6-months, sorry. Power up your workflow with Setapp, a smart way to get apps. Sign up below to enter. Winners will be randomly drawn on Friday, January 17, at 12pm Central. The drawing is for 5 6-month subscriptions ($59.95 each) for Setapp, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["macos","central","check","cleanshot","entries","friday","marked","mastodon","mindnode","setapp","sorry","ulysses","winners","amazing","among","appreciated","available","because","below","beyond","brettterpstra","codes","cooperation","customers","developer","drawing","ended","enter","excited","featured","first","generating","getting","giveaway","giveaways","hundreds","including","inelegible","license","mailing","maybe","monthly","names","offer","payment","quality","randomly","readers","reading","robot","rsquo","running","series","signups","skipped","smart","sorry","subscriptions","through","tools","tuned","vendors","visit","winner","workflow"]
	},{
		"title": "My \"remote\" web development setup",
		"url": "/2025/01/12/my-remote-web-development-setup/",
		"tags": ["developer","hosting","jekyll","macos","network","scripting","server","webdesign","webdev"],
		"date": "Jan 12<span>th</span>, 2025",
		"ts": "1736697180",
		"summary": "Recent changes in my health have made it such that some days I&rsquo;m couch-bound upstairs, while my office (and primary work computer) is in the basement. This has led to some interesting solutions for my daily work. My day job at Oracle I can mostly do from my couch and my work laptop. The only thing I have to get to my downstairs office for is recording voiceovers for the videos we&rsquo;ve been creating lately. My mornings are typically better for me health-wise, so I write scripts upstairs in the afternoon, and then record in the mornings with my expensive podcasting setup. So that&rsquo;s covered. But especially early in the morning I work on my personal stuff, which involves a lot of web development. For the purposes of this post, \"remote\" generally refers to a Mac Studio (Agony) in my basement office, and \"local\" refers to whatever laptop I&rsquo;m working on at the time. Most of these solutions work with actual remote machines, but some of them are specific to working on machines on the same network. This should become clear as I go. Websites for projects like nvUltra, Bunch, Dimspirations, and my personal blog (this one) are all Jekyll-based and set up on my Studio in my office. Rather than duplicate my setup and cause disparities between copies of my site, I&rsquo;ve set up a \"remote\" development setup that I think is worth writing up, if for no other reason than a reference point next time I set up a new machine. None of this is specific to Jekyll, so don&rsquo;t give up reading at this point. On my couch I have three laptops available. My work laptop, my older Intel MacBook Pro1, and my M4 MBP. My setup allows me to do web development on any of them without breaking the sites hosted on my Mac Studio. Here&rsquo;s how I keep them all in sync and develop these websites smoothly from the couch. Dropbox Local Git server Creating and syncing assets iTerm and tmux Port forwarding VS Code Remote Explorer Vim setups MAMP stacks and local DNS Screen sharing Actual remote work In closing&hellip; Show Links One more thing&hellip; First, I have a \"drafts\" folders for each site stored in Dropbox. Those folders are symlinked in the Jekyll directory of each site, so I can created drafts for posts locally in each directory (using a Rake task) and they&rsquo;re automatically available on all machines. That works great for a folder full of text files, but is a mess when dealing with Git repositories. I run a Git&hellip;",
		"keywords": ["computing","multiplexers","network","secure","shell","terminal","virtual","agony","anyconnect","apache","aptonic","automation","bunch","cisco","cleanshot","cleanshot","command","config","copilot","creating","daniel","despair","developing","dimspirations","docker","dotbot","downloads","dropbox","dropzone","editing","editor","explorer","finder","first","flying","github","hazel","hosts","indigostack","intel","jalkut","jekyll","lastly","links","liquid","local","macbook","machines","markdown","marked","micro","misery","multimarkdown","native","network","nginx","oracle","performance","rather","recent","redefined","remote","replacement","retrobatch","screen","sequoia","settings","sharing","siegel","simply","software","studio","synology","system","tailscale","terminal","useful","using","visual","webkit","webrick","websites","above","access","accessible","accessing","account","address","addresses","admittedly","aforementioned","afternoon","again","alerts","alias","allows","anishathalye","another","aptonic","archives","argument","aside","asset","assets","automated","automatic","automatically","automation","available","backlink","bandwidth","based","basement","batch","belong","between","blockquote","bound","breaking","brettterpstra","bright","brilliant","browser","built","bunch","bunchapp","cache","called","cause","changes","check","choice","class","cleanshot","clear","client","clipboard","clones","close","closing","coding","combiner","command","commands","commit","compiled","complex","computer","config","configuration","configure","configured","connected","constantly","container","conventions","convert","coolest","copies","copilot","copying","couch","couldn","couple","covered","crashes","create","created","creates","creating","daily","dealing","deploy","desktop","develop","development","different","dimspire","directories","directory","disconnecting","disparities","doesn","doing","dotbot","dotfiles","download","downloads","downstairs","draft","drafts","dropbox","droplet","duplicate","easily","edited","editing","editor","effort","elaborate","emotions","endnotes","enough","error","especially","eventually","everything"]
	},{
		"title": "The Chronicling giveaway winners!",
		"url": "/2025/01/11/the-chronicling-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jan 11<span>th</span>, 2025",
		"ts": "1736607600",
		"summary": "The Chronicling giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Chronicling is still worth checking out. Start tracking your life in the most beautiful way possible. Next up is Setapp . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["charts","habit","productivity","tracking","aaron","arentoft","brian","check","chronicling","congratulations","curio","eaglefiler","hockley","inbox","mastodon","monday","petran","preben","setapp","tamer","twitter","announce","beautiful","checking","details","email","ended","giveaway","giveaways","notifications","possible","received","rsquo","series","sorry","suggest","through","tracking","upcoming","winners","worth"]
	},{
		"title": "A StretchLink Shortcut",
		"url": "/2025/01/09/a-stretchlink-shortcut/",
		"tags": ["forum","shortcuts","stretchlink"],
		"date": "Jan 9<span>th</span>, 2025",
		"ts": "1736431200",
		"summary": "Immo Junghärtchen shared a Shortcut for StretchLink.cc on the forum, and I&rsquo;ve modified it slightly for my own needs. Find both below. The original shortcut can be found on the forum, but here&rsquo;s a direct link. Thanks to Immo for getting this started. I created my own version specifically for outputting Markdown links, with a few other modifications. You can download it below. If you need to convert short urls to long urls in Markdown for blogging, forum post, etc., this should save you some time. When you install it, you can optionally set it up to clean tracking info and tidy up those unwieldy Amazon URLs. StretchLink.cc Markdown Link Shortcut v1.0 Download StretchLink.cc Markdown Link Shortcut v1.0 A macOS Shortcut for converting a short url to a Markdown link. Published 01/08/25. Updated 01/08/25. Changelog Donate &bull; More info&hellip",
		"keywords": ["shortening","amazon","changelog","donate","download","jungh","markdown","published","shortcut","stretchlink","stretchlinkmarkdownlink","tuvbv&#39;","thanks","updated","background","below","blogging","brettterpstra","changelog","class","clean","convert","converting","cover","created","description","direct","dlbox","donate","download","downloads","fathom","forum","found","getting","gradient","hellip","https","icloud","images","information","install","introducing","linear","links","macos","modifications","modified","needs","onclick","optionally","original","outputting","published","repeat","rsquo","rtchen","shared","short","shortcut","shortcuts","shortcutsicon","slightly","specifically","started","stretchlink","style","title","trackgoal","tracking","ttscoff","unwieldy","updated","version"]
	},{
		"title": "Habit Traffic: A Unique Approach to Habit Tracking",
		"url": "/2025/01/08/habit-traffic-a-unique-approach/",
		"tags": ["developer","productivity"],
		"date": "Jan 8<span>th</span>, 2025",
		"ts": "1736351580",
		"summary": "Eric Linder, whom I affectionately call my Rabbi1, has created a habit tracking app with a twist, and it&rsquo;s ready for wider testing. He had a need for something that didn&rsquo;t exist, so he built it. He did it in maybe three weeks, using AI to learn how to code it. I&rsquo;m really impressed how fast someone who previously had zero coding experience pulled together an app and got it all the way to a polished beta. I&rsquo;ll let him explain the app below. If you find it intriguing, get on the TestFlight and help him get across the finish line with an app that the world might need. TLDR: I’d love if you would help to beta test my new app, \"Habit Traffic.\" Hi! I’m Eric, and I’ve bought, downloaded and used dozens of habit tracking apps on my iPhone in the last year. Many of them are beautiful and have great design, but none of them have the one feature that I most need:  Which of my habits actually need my attention today. Which ones can wait? I wanted an app that would cut through the clutter and show me ONLY the habits that need my focus right now, based on the goals that I set.  🟢 Green: You&rsquo;re on track (relax!) 🟡 Yellow: Heads up for tomorrow 🔴 Red: Action required today ⚫ Black: Goal missed, reset incoming Flexible sorting options User-created color-coded categories Automatically resets and recalculates habit progress based on user-defined goals Statistics (streaks, total durations, etc) Implementation for \"negative\" habits (example, you want to eat sugary snacks at MOST three times a week) One I&rsquo;m particularly proud of: what I call the \"interactive traffic light\" in the top left of the app, where at a glance you can look at all your habits that are green, yellow, or red Export/import data Notifications Advanced category categorization, with ability to collapse/expand categories and reorder &hellip; and more! During the past few weeks, this app has been in a very closed beta, but I think that it&rsquo;s ready to be released more widely. Huge thanks to my friend Brett Terpstra for cheerleading this app, and for being such a wonderful friend in the Apple/Mac community! You are of course more than welcome to join the TestFlight send feedback through the TestFlight app, but I would really love if you joined the app&rsquo;s Discord and left feedback/ideas/criticisms there. So please help with testing. If you&rsquo;re not already on TestFlight, it&rsquo;s free and the links above will&hellip;",
		"keywords": ["habit","store","tracking","action","advanced","apple","automatically","black","brett","depending","discord","export","flexible","green","habit","heads","implementation","linder","notifications","rabbi","statistics","terpstra","testflight","traffic","umyvu","yellow","ability","above","access","across","affectionately","apple","atheist","backlink","based","beautiful","below","blockquote","bought","brettterpstra","built","categories","categorization","category","cheerleading","class","closed","clutter","coded","coding","collapse","color","community","created","criticisms","defined","design","discord","downloaded","dozens","durations","easily","endnotes","example","exist","expand","experience","explain","feature","features","feedback","finish","first","fnref","focus","footnote","footnotes","friend","gentile","glance","goals","great","green","habit","habits","height","hellip","https","iphone","ideas","image","import","impressed","including","incoming","incorporate","install","interactive","intriguing","joined","ldquo","learn","light","links","loading","maybe","media","missed","negative","noscript","noteref","options","original","particularly","picture","polished","previously","proud","pulled","rdquo","ready","recalculates","relax","released","reorder","required","reset","resets","reversefootnote","right","rsquo","screenshot","snacks","sorting","source","srcset","status","streaks","strong","sugary","temple","testflight","testing","thanks","think","through","times","title","today","together","tomorrow","track","tracking","traffic","tried","twist","uploads","useful","using","vngwd","wanted","weeks","welcome","where","widely","wider","width","wonderful","world","yellow"]
	},{
		"title": "Chronicling giveaway!",
		"url": "/2025/01/06/chronicling-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Jan 6<span>th</span>, 2025",
		"ts": "1736172000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 1-year subscriptions ($9.99 value each) for Chronicling. If you&rsquo;re trying to build a new habit or track progress on any kind of activity, Chronicling provides all the tools you need, with beautiful charts to show your progress. Whether its chores, health metrics, symptoms, moods or just habits, Chronicling makes tracking easy. Chronicling is a life logging app for tracking habits, chores, or anything else that matters to you, with rich charts to show your progress. Sign up below to enter. Winners will be randomly drawn on Friday, January 10, at 12pm Central. The drawing is for 3 1-year subscriptions ($9.99 value each) for Chronicling, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["charts","habit","productivity","tracking","central","check","chronicling","entries","friday","mastodon","sorry","winners","activity","among","appreciated","beautiful","below","beyond","brettterpstra","build","charts","chores","codes","cooperation","developer","drawing","ended","enter","excited","featured","first","generating","giveaway","giveaways","habit","habits","health","license","logging","mailing","makes","matters","maybe","metrics","moods","names","offer","provides","randomly","reading","robot","rsquo","series","signups","skipped","subscriptions","symptoms","through","tools","track","tracking","trying","tuned","value","vendors","visit","winner"]
	},{
		"title": "Stripping Emoji from a string",
		"url": "/2025/01/04/stripping-emoji-from-a-string/",
		"tags": ["python","scripting","swift"],
		"date": "Jan 4<span>th</span>, 2025",
		"ts": "1736010360",
		"summary": "I often need to strip emoji from strings to prevent them from messing up other handling. I&rsquo;ve been compiling regular expressions and I think I finally have all the bases covered. I&rsquo;ve already ported this to Swift and Python, and put together a repo intended to keep these as living documents that are updated to keep up with new emoji. If you&rsquo;re into this kind of thing, please make pull requests as you discover new edge cases. You can create PRs against the README.md , which contains the main regular expression, or against any of the languages you use. And if you port this to any other language, please add a routine to the repo ",
		"keywords": ["emoji","manipulation","string","stripping","python","readme","swift","adapt","against","bases","compiling","contains","covered","create","discover","documents","emoji","example","expression","expressions","finally","handling","intended","language","languages","living","messing","often","ported","prevent","regular","requests","routine","rsquo","strings","strip","think","together","updated"]
	},{
		"title": "The Simple Scan giveaway winners!",
		"url": "/2025/01/03/the-simple-scan-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jan 3<span>rd</span>, 2025",
		"ts": "1735930800",
		"summary": "The Simple Scan giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Simple Scan is still worth checking out. Scan your documents on iOS with more flexibility in sending the scans where you need them to go. Next up is Chronicling. Check back every Monday through April, 2025 for more giveaways. If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["productivity","scanning","check","chronicling","congratulations","curio","eaglefiler","hevey","inbox","mastodon","monday","robeson","setapp","shaun","simple","twitter","announce","checking","details","documents","email","ended","flexibility","giveaway","giveaways","notifications","received","rsquo","scans","sending","series","sorry","suggest","through","upcoming","where","winners","worth"]
	},{
		"title": "Web Excursions for January 2nd, 2025",
		"url": "/2025/01/02/web-excursions-for-january-2nd-2025/",
		"tags": ["bookmarks","xcode"],
		"date": "Jan 2<span>nd</span>, 2025",
		"ts": "1735838460",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. alexwlchan/safari-webarchiver Save web pages as Safari webarchive files from the command line. H/T to Stephen Millard I&rsquo;ve incorporated this into my linkding archiving script so that a webarchive file is saved alongside the Markdown version of archived bookmarks. Note that if you have SIP enabled, you won&rsquo;t be able to use the downloadable version of the tool, you&rsquo;ll need to download the source and compile with (see the README). Wakamai Fondue The tool that answers the question “what can my font do?” Upload a font and see all of its features (kerning, ligatures, variants) and download CSS for enabling the features. mickael-menu/ShadowVim: \"Neovim inside Xcode, for real.\" This uses the Accessibility API to put a \"shadow\" Neovim instance into the Xcode editor. Xcode&rsquo;s Vim mode is pretty good, but this gives you almost everything, including macros and plugins. Nix is my favorite package manager to use on macOS I&rsquo;m not totally sold on revamping my setup, but if you&rsquo;re ambitious (or not already embedded in Homebrew), here&rsquo;s a full description and tutorial video for the Nix package manager (which can work on top of Homebrew)",
		"keywords": ["archive","formats","homebrew","manager","package","safari","webarchive","xcode","accessibility","brett","check","fondue","homebrew","markdown","millard","neovim","readme","safari","setapp","shadowvim","stephen","upload","wakamai","xcode","access","alexwlchan","almost","alongside","ambitious","answers","archived","archives","archiving","blockquote","bookmarks","brettterpstra","brought","class","command","description","download","downloadable","editor","embedded","enabled","enabling","everything","excursions","favorite","features","files","github","gives","height","highlighter","holding","https","hundreds","image","including","incorporated","index","inside","instance","kerning","language","ldquo","ligatures","linkding","links","loading","macos","macros","manager","managers","mdzwhi","media","mickael","monthly","noscript","original","package","pages","partnership","picture","plaintext","plugins","rdquo","revamping","rouge","rsquo","safari","saved","script","setapp","setup","shadow","source","srcset","subscription","swiftc","thoughtasylum","title","today","totally","tutorial","uploads","variants","version","video","wakamaifondue","watch","webarchive","webarchiver","width","youtube"]
	},{
		"title": "Brett's Favorites 2024: Behind The Scenes",
		"url": "/2025/01/02/bretts-favorites-2024-behind-the-scenes/",
		"tags": ["icons","linking","plugin","scripting","searchlink","setapp","shortcuts","tools"],
		"date": "Jan 2<span>nd</span>, 2025",
		"ts": "1735826400",
		"summary": "So I used a lot of tools and automations to put this year&rsquo;s lists together. Here&rsquo;s a behind-the-scenes look at them. Putting lists like these together is so much easier with SearchLink and my new Setapp Affiliate link Shortcut. I can just make a list of my favorite apps with the app name surrounded by , adding if the name is vague. When the list is complete, just run SearchLink on the whole file and have all the links added. I included a marker after the ones that were on Setapp, then wrote a little script that found those markers, grabbed the app name proceeding them, and ran it through the Setapp Affiliate shortcut1. Usually all of the little Setapp icons just link to the Setapp main page, but with the new tools this year, each one links to the Setapp landing page for that specific app. For the hardware list, SearchLink was able to help by grabbing links from my Firefox history, which had the landing pages stored. I also leveraged my Linkding plugin to grab pages I knew I&rsquo;d bookmarked. It takes a little memory to know what to look for where, but it&rsquo;s easy to adjust the search and try again. I got about 90% accuracy on all of the links, and cleaning them up was easy. The report that SearchLink provides, which includes app titles where possible, made it easy to verify, and any mysteries were easily solved using my URL Preview PopClip extension (also available as an Action/Service), which lets you pop up a quick preview without switching to your browser. I could easily have added app icons to the Mac and iOS posts with a little scripting and my various icon grabber scripts that can pull icons from local apps or use the iTunes API to get icons from the App Stores. That looked to busy, though. I&rsquo;ve been doing all of the editing in nvUltra, but that uses the same editing engine as MultiMarkdown Composer, so even if you&rsquo;re not on the beta2, you can still have all that power. Moving sections around, selecting sentences with a keystroke, full autocompletion of all Markdown syntax (including reference links), file transclusion, all of the things. Add to that list all of my custom keybindings, which make things like adding SearchLink syntax easy. And selecting paragraphs and sentences with quick keystrokes means running SearchLink on a per-paragraph basis is all a few keystrokes away. I can even bookmark a spot in the text with ⌥+1, scroll to another part and copy or cut text, then jump back to the original&hellip;",
		"keywords": ["bitly","keyboard","markdown","shortcut","shortening","usability","action","affiliate","brett&#39;s","coming","composer","cross","extensions","firefox","jekyll","jekyllplugins","keybindings","keyboard","linkding","links","maestro","markdown","moving","multimarkdown","plugins","popclip","preview","putting","searchlink","service","setapp","shortcut","stores","usually","accuracy","across","added","adding","adjust","affiliate","again","another","autocompletion","automations","available","backlink","basis","behind","bindings","bitly","blogging","bookmark","bookmarked","bound","bretts","brettterpstra","browser","check","checkurls","class","cleaning","combiner","contact","cross","custom","documenting","doesn","doing","easier","easily","editing","endnotes","engine","example","extension","extensions","favorite","favorites","finish","fnref","footnote","footnotes","found","getting","github","grabbed","grabber","grabbing","hardware","height","hellip","highlighter","history","https","itunes","icons","image","included","includes","including","jekyll","keybindings","keyboard","keycombo","keystroke","keystrokes","landing","language","leveraged","linking","links","lists","little","loading","local","location","looked","maestro","markdown","marker","markers","master","media","memory","multimarkdown","mysteries","nearly","noscript","noteref","nvultra","nvultra","original","pages","paragraph","paragraphs","picture","plaintext","plugin","plugins","popclip","possible","posts","preview","proceeding","projects","provides","publish","quick","report","required","reversefootnote","rouge","rsquo","running","scenes","script","scripting","scripts","scroll","search","searchlink","sections","selecting","sentences","separated","setapp","setup","shortcut","shortcuts","shudder","solved","source","special","specific","srcset","stored","stuck","surrounded","switching","symbol","syntax","takes","terms","think","through","title","titles","together","tools","transclusion","ttscoff","uploads","useful","using","vague","various","verify","version","where","whole","width","wrote"]
	},{
		"title": "Use iTerm to handle x-man-page URLs",
		"url": "/2025/01/01/use-iterm-to-handle-x-man-page-urls/",
		"tags": ["iterm","search","terminal"],
		"date": "Jan 1<span>st</span>, 2025",
		"ts": "1735754400",
		"summary": "It started when I was playing with LaunchBar search templates. I tried the man page search and it opened a nice window in Terminal. But I didn&rsquo;t want to open Terminal when iTerm was already running. My initial search said it wasn&rsquo;t possible, but in fact it&rsquo;s really easy. I found this gist, which solved the problem. iTerm profiles can be set to handle URL handlers, including , which is what the search template uses. If you create a new profile (call it \"Man Page\") and under General, change \"Login Shell\" to \"Command\" and paste this in: Then at the bottom of the General pane, locate \"URL Schemes,\" and choose from the dropdown. It will ask you if you want to make iTerm the default handler &mdash; click Yes (that&rsquo;s the point of this). That&rsquo;s the minimum you have to do. I went ahead and customized the color scheme, set the window to 80 columns, and added a little transparency and blur under Window settings. Under Session settings, I made sure that it was set to close when the command terminated, and disabled the warning about early termination, which was just annoying when I mistyped command and needed to try again. Here are the color schemes I made, both light and dark. I&rsquo;m generally a \"dark\" guy in Terminal, but I kind of liked the light theme that Terminal used for man pages. I made it less yellow, and added contrasting colors for bold and underline text, which looks great when viewing man pages. Customize to your heart&rsquo;s content. It&rsquo;s a pretty cool trick, hopefully it helps those who didn&rsquo;t already know about it. Once you have it set up, you can use anywhere you like, including aliasing it in your shell or creating a function. In Fish it would be",
		"keywords": ["alias","computer","launchbar","shell","system","terminal","window","command","customize","general","launchbar","login","schemes","session","shell","terminal","under","window","added","again","ahead","aliasing","annoying","anywhere","bottom","change","choose","click","close","color","colors","columns","command","content","contrasting","create","creating","customized","default","disabled","dropdown","found","function","generally","great","handle","handler","handlers","heart","helps","hopefully","iterm","including","initial","light","liked","little","looks","mdash","mistyped","needed","opened","pages","paste","playing","point","possible","problem","profile","profiles","rsquo","running","scheme","schemes","search","settings","shell","solved","started","template","templates","terminated","termination","theme","transparency","trick","tried","under","underline","viewing","warning","window","yellow"]
	},{
		"title": "Brett's Favorites 2024: Late Additions",
		"url": "/2025/01/01/bretts-favorites-2024-late-additions/",
		"tags": ["appreview","design","developer","hardware","hookmark","macos","tools"],
		"date": "Jan 1<span>st</span>, 2025",
		"ts": "1735740000",
		"summary": "Happy New Year! I managed to get the bulk of the Best of 2024 series out before the midnight deadline. Nice job, Brett. But here are a few late additions that I missed, and ones I&rsquo;m looking forward to using more of in 2025. DEVONthink Pro OK, this one snuck up on me. I&rsquo;ve been buying licenses for it for years, but never let it become a central part of my workflow. Last week I moved a bunch of research into DEVONthink to see what would happen. I&rsquo;d tried (many times) in the past and it overwhelmed me with organization options. Something finally clicked for me and I realized exactly how good it is. I think I&rsquo;m going to be using it a lot more moving forward. Black Ink When you need a break and you&rsquo;re still feeling intellectual, crosswords are a perfect respite. Black Ink makes solving them so much nicer than doing them in, say, the NYT app, and way more fun than doing it in pencil (or ink, you daredevil). I&rsquo;m a big fan of Daniel Jalkut, the developer, too. He makes a few great apps (MarsEdit, FastScripts, and more), plus he&rsquo;s always willing to take a minute to help out other developers, even ones with stupid questions (me). TextBlaze I still use TextExpander, but have really gotten into TextBlaze as an alternative. Great possibilities for automation. It&rsquo;s especially useful if you work in Chrome or Chromium browsers (I don&rsquo;t), but the Mac app is perfectly usable and very handy. Ice Bartender switched owners and they pulled some shenanigans that upset the Mac community last year. I think they&rsquo;ve smoothed out that snafu, and for menu bar management I still love Bartender on my laptop, but I&rsquo;ve been using Ice on my Studio and it&rsquo;s pretty darn good. Bartender&rsquo;s \"groups\" feature is pretty killer, though, and I have my menu bar set up so that I don&rsquo;t need the extra Bartender bar, I just expand groups. I have about 40 menu bar apps running and I can fit them all in my menu bar to the right of the notch on my MacBook Pro, which is pretty impressive. I&rsquo;m fairly certain Ice can&rsquo;t do that yet, but it&rsquo;s still being developed. Hookmark I&rsquo;ve been using Hookmark for a while and have gotten into the habit of hooking files, websites, and emails together as I work. DEVONthink is replacing some of that functionality for me, but you can use Hookmark even inside of DEVONthink, and you can easily hook DEVONthink documents to other places you might&hellip;",
		"keywords": ["compost","software","wallpaper","backdrop","bartender","bettertouchtool","black","bonus","brett","chrome","chromium","cleanmymac","coolors","devonthink","daniel","dropzone","fastscripts","great","hacking","happy","hazel","hookmark","houdahspot","iconifactory","jalkut","keyboard","launchcontro","macbook","macpaw","maestro","marsedit","nscolor","pastel","permute","pinwheel","plenty","popclip","setapp","speaking","studio","taskpaper","textblaze","textexpander","ultimate","wallaroo","wallpaper","weighted","wizard","additions","adjust","amazing","animated","another","anxiety","apply","applying","approach","automation","bearable","because","becomes","before","brainstorming","break","breathing","browsers","browsing","bunch","buying","central","certain","change","cityscapes","click","clicked","color","community","conversion","crawling","crosswords","cyberpunk","daily","daredevil","database","deadline","design","desktop","developed","developer","developers","documents","doing","drivers","easily","emails","especially","everyone","expand","experience","extra","fairly","feature","feeling","files","finally","friend","functionality","going","gotten","great","groups","guarantee","habit","handle","handy","happen","heard","hooking","hover","import","impressive","included","inside","intellectual","killer","laptop","launched","licenses","looking","makes","making","managed","management","managing","mention","mentioned","mentions","midnight","minute","missed","moved","moving","navigating","nicer","noise","notch","options","organization","overwhelmed","owners","palettes","partial","patron","pencil","perfectly","places","plenty","possibilities","project","pulled","putting","quality","questions","realized","remiss","replacing","requires","research","respite","right","rsquo","running","screen","screens","selection","series","shenanigans","shift","slows","smart","smoothed","snafu","snuck","solving","stops","stupid","subscription","suspects","switched","think","times","together","tried","upset","usable","useful","using","video","wallpaper","wallpapers","websites","where","while"]
	},{
		"title": "Brett's Favorites 2024: Personal Projects",
		"url": "/2024/12/31/bretts-favorites-2024-personal-projects/",
		"tags": ["appreview","bunch","customization","developer","howzit","macos","markdown","marked","marky","nvultra","personal","prompt","scripting","searchlink","tools"],
		"date": "Dec 31<span>st</span>, 2024",
		"ts": "1735653600",
		"summary": "Not my busiest year on record, but I did a lot. Updated: Generate slick changelogs from Git commits I do all of my release notes using careful git commit messages. It makes life so easy. SearchLink I still consider SearchLink &ndash; out of a hundred projects &ndash; the most useful thing I&rsquo;ve made, for my own purposes at least. Sure, it&rsquo;s only helpful to bloggers and podcasters, really, but I use it almost daily. I built a few new plugins this year, some for personal use, some for sharing. And you can add SearchLink plugins using any programming language now, too. Marked Conductor (new version of Marked coming with custom JS embedding) Rather than add complex predicate handling to Marked for handling multiple custom processors, I built a tool that allows you to configure your custom processors using YAML, allowing easy creation of \"tracks\" to apply different tools to different types of projects. In addition to running custom processors and scripts, it also has a bunch of built in filters for doing common tasks without any scripting. I have a new release of Marked almost ready that adds the ability to inject your own JavaScript into the preview. Local scripts, CDN-hosted scripts, and embedded scripts are all possible, making things like adding Mermaid or updating the DOM a simple process requiring no Custom Preprocessors or anything. CurlyQ I made this one to scratch my own itch, but it&rsquo;s a pretty complete tool for web scraping. I added the screenshot capability last, but now it&rsquo;s the feature I use most often. Bunch Bunch, my Mac app for automating with plain text, didn&rsquo;t actually get a lot of development this year, aside from bug fixes. But it&rsquo;s still an app near and dear to my heart and I plan to keep it going as long as I can. NA NA (next action, not Narcotics Anonymous) is my tool for working with TaskPaper formatted todo lists on a per-project basis. This year I added a lot of functionality based on other people&rsquo;s use cases, and came to adopt some of the creative ideas for my own use. It&rsquo;s really nice when you put something out that sparks other people&rsquo;s interest enough to request changes 😊. Howzit I did a lot with Howzit, my task-running, note-taking, project-saving tool. I use a Howzit file in every single one of my projects, allowing me to keep track of all of the steps for things like building, testing, and deploying, and be able to run them in any project with&hellip;",
		"keywords": ["keyboard","mastodon","search","service","shortcuts","anonymous","another","banner","binbundle","brett&#39;s","brettterpstra","bunch","conductor","curlyq","custom","daily","dimspirations","dimspire","doing","favorites","fletcher","github","hopefully","howzit","image","introducing","javascript","journal","linkding","local","macbook","markdown","markdownifier","marked","marky","mermaid","narcotics","oracle","personal","preprocessors","projects","rather","searchlink","setapp","shortly","snibbets","soundtrack","store","storing","taskpaper","timing","updated","ability","action","added","adding","adopt","allowing","allows","almost","among","anyone","apply","archives","aside","associated","automatically","automating","awesome","backed","based","basic","basis","because","before","binbundle","bloggers","bookmarks","bretts","brettterpstra","build","building","built","bunch","bunchapp","bundle","busiest","capability","careful","changelogs","changes","class","clipboard","combination","coming","command","commands","commit","commits","common","completely","complex","conductor","configure","consider","contact","continued","contributions","control","convert","couple","covered","create","creation","creative","curlyq","custom","customizable","daily","decent","depends","deploying","development","different","dimspire","direct","display","displays","doctor","doing","domain","either","email","embarrassing","embedded","embedding","enough","entries","essentially","expressed","extensive","favorites","feature","features","filters","finding","fixes","flavor","focusing","followed","forget","format","formatted","forum","functionality","github","going","gotten","habits","handling","handy","happy","heart","height","helpful","highlighted","highlighter","hopefully","hosted","hosting","https","hundred","ideas","image","importantly","improvements","incorporate","individual","inject","interest","introducing","journal","journaling","language","launch","ldquo","limited","listening","lists","little","loading","machine","makes","making","managers","markdownification","markdownrules","marked","marky","meant","media","messages","minded","mostly","multiple"]
	},{
		"title": "Brett's Favorites 2024: Hardware",
		"url": "/2024/12/30/bretts-favorites-2024-hardware/",
		"tags": ["hacks","hardware","keyboard","keycaps","music","office","synology"],
		"date": "Dec 30<span>th</span>, 2024",
		"ts": "1735581600",
		"summary": "This collection is more than just computer hardware. It&rsquo;s physical things I&rsquo;ve loved this year. Anything that isn&rsquo;t software. Milk Street Nakari My new favorite kitchen knife. They&rsquo;re fairly affordable and I love the form factor of the Nakiri, and given I eat mostly vegetables, it&rsquo;s the most useful knife in my collection. YUZU Keycaps So I started the year by buying a whole bunch of ceramic keycaps from Cerakey for my Ultimate Hacking Keyboard. I liked them, but then I found YUZU, which offers an Ultimate Hacking Keyboard layout. The hardest part of owning a UHK is the fact that so many of its keys are non-standard sizes and customization takes way too much effort. YUZU&rsquo;s layout made it so easy to get a full keyset in one go, rather than ordering a bunch of one-off custom keys. Perfect, and now I have my full \"clickiness\" back. M4 MacBook Pro If you&rsquo;re reading my blog, I probably don&rsquo;t have to tell you a lot about MacBooks. But this M4 chip is awesome. My last MBP was the last of the Intel processors and kind of sluggish at this point (and the battery was shot). I still need it for development, but this is amazing in comparison. Recent health changes have made it harder to get down to my office, where I have my M1 Mac Studio (which I love but will gladly update if and when a newer processor is available). So I&rsquo;m mostly working upstairs, and this M4 MBP is my daily driver most days. I have zero complaints, other than missing my Ultimate Hacking Keyboard. Synology 5-bay Expansion Unit I finally filled up my Synology, between backing up 5 computers, storing movies and TV shows, and general archiving. So I bought the expansion and loaded it up with another 40TB of storage. I think I can work with that. NAS-approved hard drives get expensive, and I keep a couple extra around in case I&rsquo;m ever unemployed and drives start failing, with me unable to shell out a few hundred for a replacement. Thanks to the expansion I now have two hot-swap drives and two brand new, uninstalled drives, so I should be good for a while. I&rsquo;ve only had one drive fail since I got the Synology, but I know there&rsquo;s a life expectancy. CHENSIVE Bone Conduction Headphones I have different-sized ear canals. My right ear just won&rsquo;t hold an earbud no matter what size cup I put on it. Thus, no earbuds work for me. I wish I could use AirPods, but no. I love my Sonos Ace over-ear headphones (like&hellip;",
		"keywords": ["hardware","reviews","airpods","alexa","anyone","archival","bluetooth","chensive","cerakey","conduction","controller","death","expansion","galaxy","govee","guardians","hacking","hardware","hardwood","headphones","intel","keyboard","keycap","keycaps","klipsch","lights","macbook","macbooks","manta","microstation","modern","monitor","nakari","nakiri","openrun","painting","presonus","print","raccoon","ready","recent","shokz","sonos","sophie","split","street","studio","subwoofer","synology","table","thanks","ultimate","watercolor","acquisition","admittedly","adore","affordable","amazing","amount","another","anxious","anyway","approved","archiving","artist","artwork","assembled","astounding","audiophiles","available","awesome","backing","backlighting","battery","behind","between","bleed","bought","brand","bright","build","building","built","bulky","bunch","button","buying","canals","ceramic","changes","clickiness","coffee","collection","college","color","comforting","comparison","complaints","completely","computer","computers","conduction","contact","controllable","controls","convenient","couch","couple","custom","customization","daily","dearest","decent","development","different","dinner","ditching","doing","drive","driver","drives","earbud","earbuds","effort","engineer","enjoy","exact","expansion","expectancy","expensive","extra","failing","fairly","favorite","filled","finally","fireplace","flicker","found","friends","frown","functionality","general","gladly","going","hangs","harder","hardest","hardware","headphones","health","hellip","hexagonal","holding","hundred","ideal","insects","intention","keyboards","keycap","keycaps","keyset","kitchen","knife","knitted","knows","lamps","laptop","latest","laying","layout","leave","light","lighting","lights","liked","limited","listening","living","loaded","loved","maker","makes","married","messing","minerals","missing","money","monitor","mostly","movie","movies","mushrooms","music","needed","newer","nicely","offers","office","opaque","options","ordering"]
	},{
		"title": "Simple Scan giveaway!",
		"url": "/2024/12/30/simple-scan-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Dec 30<span>th</span>, 2024",
		"ts": "1735567200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 licenses ($29.99 value each) for Simple Scan. The Apple Notes document scanner is great, but why clutter your notes with one-off scans? Simple Scan makes it easy to quickly scan documents to PDFs and send them wherever they need to go in one swoop. It&rsquo;s a perfect tool for anyone who ever needs to scan documents on the go. Do you love the Apple Notes document scanner, but would you like more flexibility in sending the scans to email, messages, files, or other apps? Then Simple Scan is for you. Simple Scan is the quick, easy way to scan paper documents to optimized, searchable PDF documents (or images) and send them almost anywhere. Sign up below to enter. Winners will be randomly drawn on Friday, January 03, at 12pm Central. The drawing is for 2 licenses ($29.99 value each) for Simple Scan, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["productivity","scanning","apple","central","check","entries","friday","mastodon","notes","simple","sorry","winners","almost","among","anyone","anywhere","appreciated","below","beyond","brettterpstra","clutter","codes","cooperation","developer","document","documents","drawing","email","ended","enter","excited","featured","files","first","flexibility","generating","giveaway","giveaways","great","images","license","licenses","mailing","makes","maybe","messages","names","needs","notes","offer","optimized","paper","quick","quickly","randomly","reading","robot","rsquo","scanner","scans","searchable","sending","series","signups","skipped","swoop","through","tuned","value","vendors","visit","wherever","winner"]
	},{
		"title": "The GoodTask for iOS and Mac giveaway winners!",
		"url": "/2024/12/27/the-goodtask-for-ios-and-mac-giveaway-winners/",
		"tags": ["giveaway","macos"],
		"date": "Dec 27<span>th</span>, 2024",
		"ts": "1735326000",
		"summary": "The GoodTask for iOS and Mac giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but GoodTask for iOS and Mac is still worth checking out. If you&rsquo;re looking for a new task management app, GoodTask gets things done. Integrate with Apple&rsquo;s own tools and get planning today. By the way, GoodTask for iOS and Mac is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Simple Scan . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["macos","management","planner","productivity","apple","barton","check","chris","chronicling","congratulations","curio","eaglefiler","goodtask","inbox","integrate","jamin","leonardo","mastodon","monday","setapp","simple","sousa","stott","twitter","amazing","announce","available","checking","details","email","ended","giveaway","giveaways","hundreds","looking","management","notifications","planning","received","rsquo","series","sorry","subscription","suggest","through","today","tools","upcoming","winners","worth"]
	},{
		"title": "Brett's Favorites 2024: iOS",
		"url": "/2024/12/27/bretts-favorites-2024-ios/",
		"tags": ["appreview","drafts","macos","markdown","recipe","tools"],
		"date": "Dec 27<span>th</span>, 2024",
		"ts": "1735308000",
		"summary": "Like I said in my last post, I do way more on my Mac than I&rsquo;ll ever do on iOS, so this will be significantly shorter. iOS is mostly for playing games, Messages, social stuff, and consuming media. But here are a few standouts. Drafts When I wake up in the middle of the night with an idea, Drafts is what I open. Or when someone tells me about a movie or TV show I need to see, it goes into Drafts. Easy to search and tag, and the easiest way to just enter text with no hassle. I still use 1Writer as my nvUltra/nvALT companion. Super Monsters Ate My Condo I play NYT word games, Threes, and Super Monsters Ate My Condo. That&rsquo;s really all. I download games from Arcade now and then, but SMAMC (which is on Arcade, by the way), is hands down the most addictive, thrilling, visually exciting game I know. I&rsquo;m pretty good. I usually make the top 20 leaderboard for the week. But it never gets boring for me. Ivory I mentioned this under Mac apps, but it&rsquo;s also my favorite Mastodon client on iOS. Paprika Nothing new or updated here, just a stalwart solution for collecting and notating recipes with all the features you need. Easily download recipes from the web and accurately convert them to Paprika recipes, create shopping lists from a recipe, share them with your family, automatically scale recipes, set multiple timers&hellip; an all-in-one companion for the kitchen. HeartWatch Get a great overview of your Apple Watch heart readings and activity rings as a companion to the Health app. I also love AutoSleep from the same developer, which is great for tracking my sleep habits. The two are available as a bundle. ShellFish This is a great SSH client for iOS. I was recently in the hospital and had time to play with doing remote work via my iPhone, and this client was my favorite. There are several good apps in this area out there, and I&rsquo;m not going to do a side-by-side here, but I love this one. Of course, Prompt 3 from Panic is always a good option (at least on iOS). Version 3 came out this year, if I recall the timeline correctly. I could be off. S3 Files & Storage I use this on both Mac and iOS for mounting Amazon S3, Backblaze B2, Oracle Cloud, and other cloud services, making them available in Finder and in Files on iOS. Find Me Gluten Free I have an allergy to gluten, which limits my dining possibilities. But I love eating out, especially when traveling, and this app is a community-sourced collection/&hellip;",
		"keywords": ["keyboard","mastodon","search","service","shortcuts","amazon","apple","arcade","audiokit","autosleep","backblaze","camera","cloud","condo","digital","drafts","easily","everything","files","finder","gluten","health","heartwatch","ivory","mastodon","messages","monsters","nothing","oracle","panic","paprika","prompt","smamc","shellfish","storage","store","super","synesthesia","synth","threes","version","watch","writer","accurately","activity","addictive","allergy","allows","almost","anyone","anywhere","audio","automatically","available","boring","build","built","bundle","camera","check","client","cloud","coding","collecting","collection","community","companion","consuming","convert","correctly","create","desired","developer","dining","direction","disappear","doing","download","easiest","eating","enjoy","enter","especially","example","exciting","experience","family","favorite","favorites","features","games","gimmicky","gluten","going","great","habits","hands","hassle","haven","heart","hellip","hospital","iphone","including","installments","introductory","kicking","kinda","kitchen","leaderboard","leaves","limits","lineup","lists","little","longer","making","media","mentioned","middle","mostly","mounting","movie","multiple","myriad","night","notating","nvalt","nvultra","offer","offers","often","options","overview","phone","playing","point","possibilities","prices","readings","recall","recently","recipe","recipes","remote","right","rings","rsquo","scale","search","services","several","share","shopping","shorter","significantly","sleep","social","software","solution","sourced","stalwart","standouts","stuff","synth","synths","tells","thrilling","timeline","timers","tracking","traveling","tuned","under","unremarkable","updated","usually","visually","wherever","while","whole"]
	},{
		"title": "Brett's Favorites 2024: macOS",
		"url": "/2024/12/26/bretts-favorites-2024-macos/",
		"tags": ["appreview","bookmarking","browser","developer","fonts","linkding","macos","setapp","synology","tools"],
		"date": "Dec 26<span>th</span>, 2024",
		"ts": "1735221600",
		"summary": "Here we go again with my yearly roundup of my favorite stuff. I&rsquo;m going to do this year in a few parts. This one will be all Mac apps, and it will the longest because Mac apps are my favorite. In no particular order, here are some of my favorite new apps, as well as some that received notable updates. As always, this list is not exhaustive, and I welcome you to add your own top picks in the comments. I may even publish an addendum if I made any glaring omissions. Many (most?) of these apps are available on Setapp, which now has over 230 apps. It&rsquo;s definitely worth the monthly price, and I highly recommend checking it out if you&rsquo;re not already a subscriber. It also gives your favorite developers a source of recurring income without forcing them into their own subscription model, which leads to requiring users to have a hundred subscriptions just to use the apps they love. SSH Config Editor SSH Config Editor This is a really cool way to interface with your file. It makes it easy to add advanced options, set up tunnels/forwarding, and quickly open connections. AlDente Pro AlDente Pro I&rsquo;m loving this one. It&rsquo;s a battery manager for Mac laptops that allows you to set a max charge level and keep your Mac there. It&rsquo;s supposed to be hard on a battery to be at 100% all the time, so if your laptop is plugged in more often than not, this will keep that from happening. It also offers a lot of info on your battery, can get actual hardware charge levels, and even controls the light on your magsafe cord to show you when you&rsquo;ve reached your fully charged level, when it&rsquo;s charging, and when it&rsquo;s discharging. In Your Face In Your Facee I miss meetings. A lot. I look at the calendar and think, \"oh I have 15 minutes, I could finish up this code before the meeting,\" then get so absorbed that I miss the little notification from Calendar and show up 20 minutes late, if at all. This app takes over your whole screen with customizable alerts that make it absolutely impossible to miss a meeting. A life (and job) saver. Soulver Soulver Not a new app by any means, but I&rsquo;ve really gotten into using it this year. I&rsquo;m not great at math. I have to break down complex problems to solve them, and with Soulver I can kind of write out my thoughts in sentence form and get the answers I need from them. Perfect. BoltAI BoltAI A friend asked me about which AI app they should get, given the over saturation&hellip;",
		"keywords": ["keyboard","mastodon","search","service","shortcuts","acorn","action","affinity","aldente","announcing","apple","archive","automatic","backblaze","banner","bartender","betterzip","bluesky","boltai","brainstorming","brett","brett&#39;s","browsers","calculator","calendar","choosy","cleanshot","cloud","command","config","control","copilot","curio","dimspirations","docker","doing","drive","editing","editor","enter","facee","favorites","featured","fediverse","finder","fluid","flying","forklift","github","hopefully","however","hyper","image","ivory","ksyws","kaleidoscope","launchbar","linkding","llama","macitbetter","macupdater","machine","manager","mapping","markdown","marky","mastodon","menus","messages","mindnode","multi","music","native","networks","notepad","paletro","palette","pdcxp","photo","pinboard","quick","redefined","retrobatch","secure","service","services","setapp","shift","shortcuts","signal","single","sleeve","soulver","spotify","studio","superkey","superkey","synology","tailscale","taking","tapbots","terpstra","threads","timing","tower","tplnm","tracker","tweetbot","tweetdeck","twitter","typeface","unite","vtsvno","version","visual","windows","working","works","zsjliv","zengobi","above","absorbed","access","accessing","account","acorn","action","added","addendum","adding","admit","advanced","again","ahead","alerts","allowing","allows","almost","annotate","answers","anyway","anywhere","appears","apphousekitchen","apple","applications","appmakes","archive","archives","archiving","arqbackup","artwork","asked","assed","assisted","automate","automation","available","awesome","backblaze","backup","backups","based","batch","battery","beautiful","because","becoming","before","billable","binarynights","bjango","blocks","boltai","bookmark","bookmarking","bookmarks","brach","brainstorming","branch","breadth","break","bretts","brettterpstra","brilliant","bring","brings","browser","browsers","building","bunch","button","bzgapps","calendar","catching","category","changes","charge","charged","charging","chats","cheap","checkbox","checking","choice"]
	},{
		"title": "Scripting when you're away: beengone 2.0",
		"url": "/2024/12/24/scripting-when-youre-away-beengone-2-dot-0/",
		"tags": ["beengone","scripting","terminal","tools"],
		"date": "Dec 24<span>th</span>, 2024",
		"ts": "1735065300",
		"summary": "I took a few hours to revive an old project. It had stopped working on modern machines, and despite its limited usefulness, it fit a need for me and I want to get an updated version out there. Sure, it took way longer to fix and deploy than it was worth, and I ended up going another direction in the script I was writing at the time, but it was fun and just enough challenge to keep my mind busy on my holiday break. This is a revival of beengone 1.0 , a simple little tool that just tells you how long your computer has been idle (no input from keyboard or mouse). Version 2.0 not only gets that working again, it adds some command line flags that are designed to make scripting easier. For example, it has a flag that can take an integer or interval string like and will provide an exit code based on whether that threshold has been met. That&rsquo;s perfect for looping in a background script and only moving on when it returns a 0 exit code. But wait, there&rsquo;s more. There&rsquo;s also a flag that takes the same input, but blocks the script until the threshold is met, bypassing the need for loops when you don&rsquo;t actually need them (when nothing else needs to happen on each iteration). It can even simulate a mouse click with , which will reset the timer, and possibly wake up your machine. I haven&rsquo;t tested that much. There are a few simple example scripts on the beengone project page. If you do anything cool with this, please let me know. My assumption is that nobody will have an immediate need for it, so surprise me. Maybe someday the need will arise and you&rsquo;ll stumble back upon it in a web search. works while your screensaver is on if it&rsquo;s running in the background, either in a background shell script or as a launchd process. It should also work when your machine is sleeping, or upon wake with launchd, but almost definitely not in hibernate mode. But if you want a script that, say, stops a timer when you&rsquo;re not using your Mac for five minutes, this is your tool. Side note, the hardest part of these binary command line utilities is distribution. You can&rsquo;t sign a lone binary outside of an app bundle, so you have to put it in a PKG file. And you have to sign the binary with a development ID within the PKG, but you also have to sign the PKG with an installer ID. Two different certificates to install a 94k binary, and without it the tool just won&rsquo;t run. It&rsquo;s a pain, but I also get exactly how risky downloading&hellip;",
		"keywords": ["computer","github","input","mouse","anyway","australians","christmas","enjoy","github","hanukah","happy","hopefully","kwanza","maybe","readme","solstice","version","again","almost","another","anyway","appreciate","arise","assumption","automated","background","based","beengone","binary","blocks","break","build","built","bundle","bypassing","certificates","challenge","click","command","computer","darkest","definitely","deploy","deserve","designed","development","different","direction","distribution","download","downloading","easier","either","ended","enough","evenings","example","files","flags","going","happen","happy","hardest","haven","hemisphere","hibernate","holiday","holidays","hours","immediate","input","install","installer","integer","internet","interval","iteration","keyboard","launchd","level","limited","little","longer","looping","loops","machine","machines","merry","minutes","modern","mouse","moving","needs","nobody","norther","notarized","nothing","outside","packaged","point","points","possibly","process","project","release","reset","returns","revival","revive","right","risky","rsquo","running","screensaver","script","scripting","scripts","search","security","server","shell","signed","simple","simulate","sleeping","someday","source","stopped","stops","string","stumble","surprise","tagged","takes","tells","tested","think","threshold","timer","unknown","updated","uploaded","usefulness","using","utilities","version","whatever","while","within","working","works","worth","writing"]
	},{
		"title": "GoodTask for iOS and Mac giveaway!",
		"url": "/2024/12/23/goodtask-for-ios-and-mac-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Dec 23<span>rd</span>, 2024",
		"ts": "1734962400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses, good for Mac and iOS ($59.98 value each) for GoodTask. How about a new task manager that integrates perfectly with Apple&rsquo;s Reminders & Calendars? Good Task is built with system integration in mind and is perfect for task management and planning. Whether you&rsquo;re making a grocery list or managing a complex project, GoodTask is the perfect tool for you. Access your checklist on the go with Widgets and Apple Watch, and manage calendar events with detailed subtasks for each task. Sign up below to enter. Winners will be randomly drawn on Friday, December 27, at 12pm Central. The drawing is for 3 licenses for Mac and iOS ($59.98 value each) for GoodTask for iOS and Mac, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["macos","management","planner","productivity","access","apple","calendars","central","check","entries","friday","goodtask","mastodon","reminders","sorry","watch","widgets","winners","among","appreciated","below","beyond","brettterpstra","built","calendar","checklist","codes","complex","cooperation","detailed","developer","drawing","ended","enter","events","excited","featured","first","generating","giveaway","giveaways","grocery","integrates","integration","license","licenses","mailing","making","management","manager","managing","maybe","names","offer","perfectly","planning","project","randomly","reading","robot","rsquo","series","signups","skipped","subtasks","system","through","tuned","value","vendors","visit","winner"]
	},{
		"title": "Introducing StretchLink.cc",
		"url": "/2024/12/21/introducing-stretchlink-dot-cc/",
		"tags": ["browser","linking","shortener","stretchlink"],
		"date": "Dec 21<span>st</span>, 2024",
		"ts": "1734810840",
		"summary": "I made something in the process of making something else. I didn&rsquo;t finish the something else, but figured I&rsquo;d share the thing&hellip; I got an itch to revive StretchLink, my little menu bar app that expanded shortened links as you copied them, so you had a full URL when you pasted. It was great for seeing where a link would take you before following it. Given the state of the internet, that seemed useful. I have the code to resolve links internally, but I like the flexibility of an API. The original StretchLink relied on an API that has since died, so I decided to just write my own. It&rsquo;s not complicated. So here&rsquo;s stretchlink.cc. A simple little API that takes a shortened URL and outputs the long version. It can remove tracking info if you like, as well as reduce Amazon product links down to the bare minimum the URL needs to function. It can output plain text (just the resolved URL), Markdown (with optional title), or JSON (including original url, expanded url, and optional title). I added caching and concurrency, for what it&rsquo;s worth. If this gets used, it would scale well. I doubt it will, but I like to cover my bases. I&rsquo;ve written a couple of Shortcuts that leverage it for double checking URLs you&rsquo;ve been sent before clicking them. I&rsquo;ll share those separately. If you make anything useful with the API, please do share in the comments (which are connected to the Forum)",
		"keywords": ["expander","privacy","safety","shortener","tracking","amazon","check","forum","markdown","shortcuts","stretchlink","added","bases","before","caching","checking","clicking","comments","complicated","concurrency","connected","copied","couple","cover","decided","detailed","double","doubt","expanded","figured","finish","flexibility","function","great","hellip","including","instructions","internally","internet","landing","leverage","links","little","making","needs","optional","original","output","outputs","pasted","process","product","relied","remove","resolve","resolved","revive","rsquo","scale","seeing","seemed","separately","share","shortened","simple","since","stretchlink","takes","title","tracking","useful","version","where","worth","write","written"]
	},{
		"title": "Web Excursions for December 20th, 2024",
		"url": "/2024/12/20/web-excursions-for-december-20th-2024/",
		"tags": ["bookmarks"],
		"date": "Dec 20<span>th</span>, 2024",
		"ts": "1734736620",
		"summary": "Web excursions brought to you in partnership with Fabric, the best way to organize your notes, tasks, and projects in one place. 1Piece - Multifunctional App for Mac Lots of cool usability features in this macOS app. Window management, Stage Manager features, extended Hot Corners and more. Hat tip to @kdude for this one. jtroo/kanata Improve keyboard comfort and usability with advanced customization. Apply tap and hold layers to all keys. Hat tip to MacOSX Guru OmniFocus 4.5 OmniFocus released version 4.5 this week with a host of new Shortcuts and Shortcut improvements. They&rsquo;re also going to start offering unobtrusive tips of the app notices a feature you&rsquo;re not using that could be helpful. I look forward to learning more. Acorn 8 Version 8 of Acorn has some crazy new photo editing capabilities. If you&rsquo;re looking for an affordable photo editing app with a ton of power, it&rsquo;s worth checking out. microsoft/markitdown Python tool for converting files and office documents to Markdown. Microsoft finally releasing an antidote to Word? Let Fabric be your second brain, with an all-in-one AI workspace and smart organizer for all your projects, ideas, notes & links. Check it out today",
		"keywords": ["acorn","microsoft","office","acorn","apply","check","corners","fabric","improve","macosx","manager","markdown","microsoft","multifunctional","omnifocus","piece","python","shortcut","shortcuts","stage","version","window","advanced","affordable","antidote","brain","brought","capabilities","checking","comfort","converting","crazy","customization","documents","editing","excursions","extended","feature","features","files","finally","going","helpful","ideas","improvements","jtroo","kanata","kdude","keyboard","layers","learning","links","looking","macos","management","markitdown","microsoft","notes","notices","offering","office","organize","organizer","partnership","photo","projects","released","releasing","rsquo","second","smart","tasks","today","unobtrusive","usability","using","version","workspace","worth"]
	},{
		"title": "The Drafts giveaway winner!",
		"url": "/2024/12/20/the-drafts-giveaway-winner/",
		"tags": ["drafts","giveaway"],
		"date": "Dec 20<span>th</span>, 2024",
		"ts": "1734721200",
		"summary": "The Drafts giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Drafts is still worth checking out. You can&rsquo;t beat Drafts for quick notes, with tagging, searching, organization, and a ton of powerful filters and extensions to make working with your notes a breeze. Next up is GoodTask for iOS and Mac . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["notes","productivity","taking","check","chronicling","congratulations","drafts","eaglefiler","goodtask","inbox","mastodon","monday","setapp","simple","twitter","announce","breeze","checking","details","email","ended","extensions","filters","giveaway","giveaways","notes","notifications","organization","powerful","quick","received","rsquo","searching","series","sorry","suggest","tagging","through","upcoming","winner","winners","working","worth"]
	},{
		"title": "Auto-generate Setapp Affiliate Links",
		"url": "/2024/12/18/auto-generate-setapp-affiliate-links/",
		"tags": ["affiliate","linking","setapp","shortcuts"],
		"date": "Dec 18<span>th</span>, 2024",
		"ts": "1734530400",
		"summary": "If you often recommend apps that are on Setapp, you either have an affiliate marketing account, or you really should get one. If you have one (or get one) this Shortcut is for you. A Setapp affiliate account gives you a little kickback every time someone purchases a Setapp subscription after following one of your links. It doesn&rsquo;t cost the customer anything, it comes out of MacPaw&rsquo;s pockets. Just a little thank you for talking about the product. Setapp runs their Affiliate program through Impact. If you go to Setapp&rsquo;s Affiliate Program page and click \"Become a partner,\" it will walk you through both signing up for Impact and joining the MacPaw/Setapp affiliate program. Once you&rsquo;ve been accepted to the program, you can start generating special links through the Impact interface. Go ahead and generate one for any Setapp landing page and you&rsquo;re ready for the next step. It&rsquo;s a pain to load up Impact and navigate their interface every time you just want to point someone to an app. That&rsquo;s where this shortcut comes in. It takes either an app name or a Setapp URL (without an affiliate query string) and generates an affiliate URL shortened with is.gd. Is.gd isn&rsquo;t as cool as the vanity URL that Setapp provides through Impact, but it has the same effect. To use this Shortcut, you&rsquo;re going to need an existing affiliate query string. Generate one through Impact, then paste it into your browser and follow it. When you get to the page it points to, your URL bar will show the expanded URL. Copy everything after the question mark () in the URL. That&rsquo;s your affiliate string, and it should look like: Now, install the Shortcut. On install it will ask you for the above string. Once set up, you can select an app name or Setapp URL in your blog post or social media post, right click on the selection, and select \"Setapp Affiliate (is.gd)\" from the Services submenu. The Shortcut will run and you&rsquo;ll get a shortened URL that will point to your affiliate link for the app or page. Run it on the name of an app you know is on Setapp, e.g. \"Marked 2\". The Shortcut searches for apps by trying a URL made from the input name and seeing if it works. If it doesn&rsquo;t, it tries a couple of modifications to the name, and checks those pages. If no match is found, it will output &lsquo;App not found&rsquo;. If it works, though, you&rsquo;ll get a Markdown link to an is.gd URL. I guess the Markdown formatting isn&&hellip;",
		"keywords": ["affiliate","marketing","query","shortcut","software","string","tracking","account","aeukcvbpy","affiliate","generating","hopefully","impact","macpaw","markdown","marked","powerful","program","searchlink","services","setapp","shortcut","above","accepted","account","affiliate","ahead","bitly","browser","check","checks","class","click","clickid","comes","couple","crossover","custom","customer","doesn","doing","domain","editing","either","everything","expanded","formatting","found","generates","generating","github","gives","going","great","guess","highlight","highlighter","https","icloud","imagine","impact","input","install","interface","iradid","irgwc","irpid","joining","kickback","landing","language","ldquo","links","little","lsquo","marketing","match","media","mentioning","modifications","mpaid","navigate","often","online","original","output","pages","partner","paste","plaintext","plugin","plugins","pockets","point","points","posting","product","program","provides","purchases","query","rdquo","ready","recommend","right","rouge","rsquo","searches","searchlink","seeing","selection","setapp","sharedid","shortcut","shortcuts","shortened","signing","social","special","string","submenu","subscription","takes","talking","thank","through","title","tracking","tries","trivial","trying","ttscoff","vanity","where","works","wrote"]
	},{
		"title": "The Manifesto for Ubiquitous Linking and a Marked Sale!",
		"url": "/2024/12/17/the-manifesto-for-ubiquitous-linking-and-a-marked-sale/",
		"tags": ["hookmark","linking","marked","nvultra"],
		"date": "Dec 17<span>th</span>, 2024",
		"ts": "1734444000",
		"summary": "Three years ago this month, Luc Beaudoin, the creator of Hookmark, published the Manifesto for Ubiquitous Linking. The idea was to bring together developers in all categories and promote \"Ubiquitous Linking\" in Mac software, a concept that improves cognitive flow and productivity. I was one of the original signatories, but since then plenty have joined in. ensuring their users can conveniently obtain a link to the currently open or selected resource via a user interface; and providing an application programming interface (API) to obtain or construct a link to that resource (i.e., to get its address and name). If you&rsquo;ve used Hookmark, you&rsquo;re familiar with (and hopefully love) this concept of linking anything to anything on your Mac. Marked and nvUltra both work with Ubiquitous Linking, along with a ton of other apps like Obsidian, DEVONthink, Calibre, Curio, MindNode, MailMate, Arc Browser, and many more. As part of the promotion of this anniversary, I&rsquo;m offering Marked 2 at a 30% discount using the coupon code (good until January 1st). Click here to redeem",
		"keywords": ["linking","manifesto","ubiquitous","beaudoin","browser","calibre","click","curio","devonthink","hookmark","linking","mailmate","manifesto","marked","mindnode","obsidian","ubiquitous","address","anniversary","bring","calls","categories","cognitive","concept","construct","conveniently","coupon","creator","developers","discount","ensuring","familiar","hopefully","improves","interface","joined","linking","manifesto","nvultra","offering","original","plenty","productivity","programming","promote","promotion","providing","published","redeem","resource","rsquo","selected","signatories","simple","since","software","together","users","using","years"]
	},{
		"title": "Shell Tricks: Check what's listening on a port",
		"url": "/2024/12/16/shell-tricks-check-whats-listening-on-a-port/",
		"tags": ["shell","terminal"],
		"date": "Dec 16<span>th</span>, 2024",
		"ts": "1734372000",
		"summary": "It&rsquo;s been a while since I offered a shell trick, so here&rsquo;s one I&rsquo;ve found useful lately. It&rsquo;s a way to quickly check what&rsquo;s listening on a specific port. There are times when I run into a conflict running local services, saying the port is already in use, but I don&rsquo;t know by what. So I use the following. This snippet relies on having your root password stored in your login keychain. See this post for instructions on setting this up. Once it&rsquo;s in place, you&rsquo;ll have a secure way to run sudo commands from scripts which only ask for a password when your keychain is locked. Here&rsquo;s the snippet, ready to use in a function or alias: Store this in a function or script called (or whatever you like). Replace with whatever you named your password entry in Keychain Access. Now you can call it like . Hope that&rsquo;s useful",
		"keywords": ["access","keychain","replace","store","alias","argument","called","check","commands","conflict","entry","found","function","having","instructions","keychain","listening","local","locked","login","named","offered","password","process","quickly","ready","relies","rsquo","running","saying","script","scripts","secure","services","setting","shell","since","snippet","specific","stored","times","trick","useful","whatever","whichever","while"]
	},{
		"title": "Drafts giveaway!",
		"url": "/2024/12/16/drafts-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Dec 16<span>th</span>, 2024",
		"ts": "1734357600",
		"summary": "I&rsquo;m excited to offer the next giveaway, a 1-year subscription ($19.99 value) for Drafts. You want a quick way to take notes on all your platforms, one where you&rsquo;ll be sure to easily find them later. With rapid entry, tagging, searching, and a ton of extensibility, Drafts is the perfect note taking tool. Drafts is a launching-off point for text &mdash; use the actions to copy it, share it, or deep link into other apps and services. Compose a tweet or message, create a file in Dropbox, send a task off to Reminders &mdash; there are hooks into tons of your favorite apps. Sign up below to enter. A winner will be randomly drawn on Friday, December 20, at 12pm Central. The drawing is for a 1-year subscription ($19.99 value) for Drafts. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["notes","productivity","taking","central","check","compose","drafts","dropbox","entries","friday","mastodon","reminders","sorry","actions","among","appreciated","below","beyond","brettterpstra","codes","cooperation","create","developer","drawing","easily","ended","enter","entry","excited","extensibility","favorite","featured","first","generating","giveaway","giveaways","hooks","later","launching","license","mailing","maybe","mdash","message","names","notes","offer","platforms","point","quick","randomly","rapid","reading","robot","rsquo","searching","series","services","share","signups","skipped","subscription","tagging","taking","through","tuned","value","vendors","visit","where","winner"]
	},{
		"title": "The Tower giveaway winners!",
		"url": "/2024/12/13/the-tower-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Dec 13<span>th</span>, 2024",
		"ts": "1734116400",
		"summary": "The Tower giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Tower is still worth checking out. If you use Git for anything, Tower can make your life easier. Visit git-tower.com to learn more! Next up is Drafts . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["tower","anderson","check","chronicling","congratulations","drafts","goodtask","inbox","mastodon","monday","setapp","simple","tower","twitter","visit","yinan","announce","checking","details","easier","email","ended","giveaway","giveaways","learn","notifications","received","rsquo","series","sorry","suggest","through","tower","upcoming","winners","worth"]
	},{
		"title": "The MacPaw 2024 Developer Survey",
		"url": "/2024/12/10/the-macpaw-2024-developer-survey/",
		"tags": ["sponsor"],
		"date": "Dec 10<span>th</span>, 2024",
		"ts": "1733835600",
		"summary": "A special announcement from MacPaw, this week&rsquo;s sponsor! Conducted by the Setapp team, this annual survey is in its 8th year and has become a trusted benchmark for insights into the evolving Mac developer landscape. This year’s findings reveal significant changes in how developers are approaching app distribution, platform integration, and new hardware opportunities &ndash; especially with Apple’s latest innovations. Increased Revenue Diversification 52% of developers now earn income from sources outside the Mac App Store, up from 44% in 2023. Only 20% rely exclusively on the Mac App Store for app distribution. For those who leverage both the Mac App Store and external channels, revenue is distributed fairly evenly. In fact, 52% of their revenue now comes from sources outside the App Store, up from 44% in 2023. This shift highlights the increasing importance of diversifying distribution strategies for Mac developers. Shift Towards Integrated Experiences 66% of developers are interested in moving away from standalone apps, opting instead to create more integrated, seamless experiences. AI and personalized experience remain top priorities The integration of AI continued to gain momentum in 2024. Nearly 60% of Mac developers are either actively working on or have already implemented AI models in their apps. Notably, 40% of developers cited AI as having the most significant impact on their apps in 2024, up from 31% in the previous year. Developer sentiment on Apple Vision Pro remains mixed Despite the launch of Apple Vision Pro in March 2024, Mac developers remain cautious about its appeal. Nearly half of those surveyed expressed uncertainty about whether they would start developing apps for the device. Furthermore, 35% of respondents indicated that they have no plans to create apps for visionOS. The Setapp team hopes these findings offer a valuable glimpse into the future of Mac development, shedding light on trends that could shape the industry in 2025 and beyond",
		"keywords": ["apple","developer","distribution","software","store","usability","vision","visionos","apple","conducted","developer","diversification","experiences","increased","insights","integrated","macpaw","nearly","notably","revenue","setapp","shift","store","survey","towards","vision","actively","announcement","annual","appeal","approaching","benchmark","beyond","brettterpstra","cautious","changes","channels","cited","class","comes","continued","create","developer","developers","developing","development","device","distributed","distribution","diversifying","either","especially","evenly","evolving","experience","experiences","explore","expressed","external","fairly","findings","glimpse","hardware","having","height","highlights","hopes","https","image","impact","implemented","importance","income","increasing","indicated","industry","innovations","insights","integrated","integration","interested","iotne","landscape","latest","launch","leverage","light","loading","media","mixed","models","momentum","moving","ndash","nofollow","noscript","offer","opportunities","opting","original","outside","personalized","picture","plans","platform","priorities","remains","report","respondents","reveal","revenue","rsquo","seamless","sentiment","setapp","shape","shedding","shift","significant","source","sources","special","sponsor","srcset","standalone","strategies","survey","surveyed","title","trends","trusted","uncertainty","uploads","valuable","visionos","width","working"]
	},{
		"title": "Tower giveaway!",
		"url": "/2024/12/09/tower-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Dec 9<span>th</span>, 2024",
		"ts": "1733752800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 1-year licenses ($99 value each) for Tower. Another chance at a 1-year subscription to Tower! Tower is the absolute best Git GUI out there. If you use Git for work or personal projects, its in-depth integration with the entire Git toolset makes life easier, even if you&rsquo;re already well-versed in the command line. It includes great GitHub integration for pull requests and issues. It even has a ⌘Z Undo command for reverting those pesky git mistakes. All of Git&rsquo;s Power (And None of the Pain). Pull Requests, Single-line staging, Interactive Rebase, Submodules, Git LFS, Git-Flow, File History, Blame, Cherry-Pick. Sign up below to enter. Winners will be randomly drawn on Friday, December 13, at 12pm Central. The drawing is for 2 1-year licenses ($99 value each) for Tower, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["tower","another","blame","brettterpstra","central","check","cherry","entries","friday","github","giveaway","giveaways","history","interactive","mastodon","rebase","requests","robot","single","sorry","submodules","tower","upcoming","winners","absolute","among","appreciated","below","beyond","blockquote","brett","brettterpstra","chance","class","codes","command","contact","cooperation","depth","developer","drawing","easier","easydns","ended","enter","entire","excited","featured","first","generating","giveaway","giveaways","great","height","https","image","includes","integration","issues","license","licenses","loading","mailing","makes","maybe","media","mistakes","names","nojack","noscript","offer","original","personal","pesky","picture","projects","randomly","reading","requests","reverting","robot","rsquo","screenshot","series","signups","skipped","sorry","source","srcset","staging","strong","subscribe","subscription","through","title","toolset","tower","ttscoff","tuned","upcoming","uploads","value","vendors","versed","visit","width","winner"]
	},{
		"title": "The Take Control Books giveaway winners!",
		"url": "/2024/12/06/the-take-control-books-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Dec 6<span>th</span>, 2024",
		"ts": "1733514120",
		"summary": "The Take Control Books giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Take Control Books is still worth checking out. Learn about anything Mac or iOS. You can still save a whopping 50% on your next e-book purchase with the coupon . Check it out! Next up is Tower . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["ebook","education","macos","bolte","books","carlos","check","chronicling","congratulations","control","donovan","drafts","fabian","goodtask","learn","lopes","mastodon","monday","setapp","simple","tower","twitter","watts","announce","checking","coupon","details","email","ended","giveaway","giveaways","notifications","received","rsquo","series","sorry","suggest","through","upcoming","whopping","winners","worth"]
	},{
		"title": "Web Excursions for December 5th, 2024",
		"url": "/2024/12/05/web-excursions-for-december-5th-2024/",
		"tags": ["bookmarks"],
		"date": "Dec 5<span>th</span>, 2024",
		"ts": "1733407200",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Nerd Fonts Iconic font aggregator, collection, & patcher: 9,000+ glyph/icons, 60+ patched fonts. Get fonts with all the developer icons built in. Programming Fonts - Test Drive Try out the best and newest monospace fonts for code. 150 fonts with a nice preview. jdx/mise I&rsquo;m replacing asdf with this. Dev tools, env vars, and task runner to handle multiple versions of Python, Ruby, NodeJS, etc., plus run scripts and set environment variables per-project. Why pipes sometimes get \"stuck\": buffering Very useful info for command line scripters and *nix users. Ever have a piped command unexpectedly show nothing when you&rsquo;re sure there&rsquo;s data in the pipe? Here&rsquo;s your answer. Hat tip to Patrice. BetterZip 5 An awesome tool for creating and managing archives (zip, dmg, tgz and more). My favorite part about it is that it offers a navigable Quick Look preview of zip archives. That alone isn&rsquo;t worth the $25 price, of course, but it&rsquo;s on Setapp, too. Omni Automation Vids Sal Soghoian, of macOS automation fame, has produced a series of 1-3 minute videos on automating Omni products. Learn from a legend",
		"keywords": ["archive","automation","betterzip","check","drive","fonts","iconic","learn","nodejs","patrice","programming","python","quick","setapp","soghoian","access","aggregator","alone","answer","archives","automating","automation","awesome","brought","buffering","built","collection","command","creating","developer","environment","excursions","favorite","fonts","glyph","handle","hundreds","icons","legend","macos","managing","minute","monospace","monthly","multiple","navigable","newest","nothing","offers","partnership","patched","patcher","piped","pipes","preview","price","produced","products","project","replacing","rsquo","runner","scripters","scripts","series","sometimes","stuck","subscription","today","tools","unexpectedly","useful","users","variables","versions","videos","worth"]
	},{
		"title": "Suspicious Package keeps on tickin'",
		"url": "/2024/12/04/suspicious-package-keeps-on-tickin/",
		"tags": ["appreview","macos","security"],
		"date": "Dec 4<span>th</span>, 2024",
		"ts": "1733329140",
		"summary": "Suspicious Package is an indispensable tool for macOS with a long history, and surprisingly, it&rsquo;s free. I&rsquo;ve rarely mentioned it, so I thought I&rsquo;d give it a quick review. Suspicious Package has been around for as long as I can remember. It&rsquo;s been steadily updated over the years, and runs perfectly on the latest macOS (Sequoia). It makes inscrutable Package Installers scrutable. Package Installers on Mac () are those downloads that look like a cardboard box with a yellow cube coming out of it. Unlike Disk Images () and Zip Archives (), they run scripts and can install to locations you might not expect or be able to locate after install. This can be disconcerting, or at least inconvenient for people who want to know what&rsquo;s going on on their machine. That&rsquo;s where Suspicious Package comes in. This tool will give you a Quick Look extension, so you can just select a file and hit Space to see what the Package Installer will do &mdash; how many files it will install, how many scripts it will run, etc. This is not the same thing as Show Package Contents in Finder, which will give you little information about what&rsquo;s going to be installed. It&rsquo;s also much more informative than Show Files in the macOS Installer app. You can click through the app window to preview files and where they&rsquo;ll be installed, scripts that will run, as well as package info and receipts. In the file viewer, you can see all the metadata for each file, including kind, permissions, and version and Bundle IDs on bundle files (e.g. Mac apps). Scripts can be previewed or opened in an external app. It provides a sweeping overview of your packages, and is also extensively scriptable. Suspicious Package is free. It&rsquo;s developed by Randy Saldinger (Mother&rsquo;s Ruin Software), who doesn&rsquo;t even accept donations. He says his apps are labors of love, created just because he wanted them to exist. If you want to know what&rsquo;s going on with your files (even those you trust), it&rsquo;s a killer app. There&rsquo;s no reason not to go get Suspicious Package today",
		"keywords": ["bundle","installer","package","software","archives","bundle","clicking","contents","files","finder","images","installer","installers","mastodon","mother","package","quick","randy","saldinger","scripts","sequoia","software","space","suspicious","unlike","accept","because","bundle","cardboard","click","comes","coming","created","details","developed","developer","development","disconcerting","doesn","donations","downloads","exact","exist","expect","extension","extensively","external","files","going","history","including","inconvenient","indispensable","information","informative","inscrutable","install","installed","killer","labors","latest","little","locations","macos","machine","makes","mdash","mentioned","metadata","opened","overview","package","packages","people","perfectly","permissions","preview","previewed","provides","quick","rarely","receipts","remember","rsquo","scriptable","scripts","scrutable","steadily","surprisingly","sweeping","thought","through","today","updated","version","viewer","wanted","where","window","years","yellow"]
	},{
		"title": "Key repeat in Sequoia",
		"url": "/2024/12/03/key-repeat-in-sequoia/",
		"tags": ["keyboard","macos"],
		"date": "Dec 3<span>rd</span>, 2024",
		"ts": "1733234400",
		"summary": "I got a new MacBook Pro on a Black Friday sale, and have been setting it up for the last few days. A combination of \"brew bundle\", DotBot, and Mackup have made that a mostly painless process, but I still had to do a lot of tweaking. Setapp will even offer to automatically install your favorites the first time it runs. Nice. But one thing I found frustrating was that setting key repeat delay and key repeat speed in System Settings was having no effect. Keys that had diacritics still just popped up the special character popover, and keys without didn&rsquo;t do anything at all when held. Finally figured out the solution, which I&rsquo;m posting here mostly so I can easily find it next time this happens. Then reboot your machine (simply logging out might do it). Now the key repeat settings in System Settings will actually have an effect. Random side note: if your Nerd Font in iTerm isn&rsquo;t showing icons, be sure to uncheck \"Use built-in Powerline glyphs\" in the profile->Text settings",
		"keywords": ["diacritic","black","dotbot","finally","friday","macbook","mackup","powerline","random","setapp","settings","system","terminal","automatically","built","bundle","character","combination","diacritics","easily","favorites","figured","first","found","frustrating","glyphs","happens","having","iterm","icons","install","logging","machine","mostly","offer","painless","popover","popped","posting","process","profile","reboot","repeat","rsquo","setting","settings","showing","simply","solution","special","speed","tweaking","uncheck"]
	},{
		"title": "Take Control Books giveaway!",
		"url": "/2024/12/02/take-control-books-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Dec 2<span>nd</span>, 2024",
		"ts": "1733148000",
		"summary": "I&rsquo;m excited to offer the next giveaway, any 3 e-books (~$45 value) from Take Control Books. If you&rsquo;re a Mac/iOS user looking to learn more about anything from the latest OS to security to more about your favorite apps, Take Control has a book for you. Written by some of the best authors in the tech community, there&rsquo;s a selection for everyone. Three winners will be drawn for the giveaway, and each one will get their choice of three e-books! Highly practical ebooks that cover much more detail than a magazine article but that are shorter, more focused, and more timely than a typical printed book. Sign up below to enter. Winners will be randomly drawn on Friday, December 06, at 12pm Central. The drawing is for any 3 e-books (~$45 value) from Take Control Books, 3 per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["ebook","education","macos","books","central","check","control","entries","friday","highly","mastodon","sorry","winners","written","among","appreciated","article","authors","below","beyond","books","brettterpstra","choice","codes","community","cooperation","cover","detail","developer","drawing","ebooks","ended","enter","everyone","excited","favorite","featured","first","focused","generating","giveaway","giveaways","latest","learn","license","looking","magazine","mailing","maybe","names","offer","practical","printed","randomly","reading","robot","rsquo","security","selection","series","shorter","signups","skipped","through","timely","tuned","typical","value","vendors","visit","winner","winners"]
	},{
		"title": "The Alfred 5 giveaway winner!",
		"url": "/2024/11/29/the-alfred-5-giveaway-winner/",
		"tags": ["giveaway"],
		"date": "Nov 29<span>th</span>, 2024",
		"ts": "1732906800",
		"summary": "The Alfred 5 giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Alfred 5 is still worth checking out. Alfred continues to innovate and is an amazing launcher for your Mac. Seriously, if you don&rsquo;t have this already, you want it. Next up is Take Control Books . Check back every Monday through April, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["launcher","macos","productivity","alfred","books","chamness","check","chronicling","congratulations","control","drafts","goodtask","mastodon","monday","seriously","simple","tower","twitter","amazing","announce","checking","continues","details","email","ended","giveaway","giveaways","innovate","launcher","notifications","received","rsquo","series","sorry","suggest","through","upcoming","winner","winners","worth"]
	},{
		"title": "A health update",
		"url": "/2024/11/28/a-health-update/",
		"tags": ["health","personal"],
		"date": "Nov 28<span>th</span>, 2024",
		"ts": "1732802940",
		"summary": "You may have heard about my health issues, whether on social media or Overtired, so I thought I&rsquo;d offer an update on where things are at. I&rsquo;m not soliciting for medical advice, I&rsquo;ve received enough of that. I&rsquo;m just kind of documenting my current state. You can hear me talk a bit more about all of this on Overtired #423, if you like. About two months ago I began feeling lightheaded. Constantly. Most of the time it just felt like a nice buzz &mdash; like a big yawn. Sometimes it felt like motion sickness. But it was disconcerting either way. Then a month ago I started passing out. Always within 3 minutes of standing up after sitting or lying down (orthostatic changes). I went to the doctor before the syncope started. My primary care provider ran a dozen tests and declared me fine, blaming my lightheadedness on my psych meds. My psychiatrist didn&rsquo;t believe that my symptoms could be explained by any of my current meds. I did try going off some of them, but to disastrous results and with no effect on the symptoms I was experiencing. I went to the ER three times after losing consciousness, and again, all tests were normal, aside from a minor concussion one time. Returning to primary care, my doctor was pretty sure it must be my heart or circulation issues. Now that I&rsquo;d been passing out, he was taking me a little more seriously. Not as seriously as I would have liked, but he scheduled me for an echocardiogram. All of my EKGs had come back normal, and I didn&rsquo;t expect much from the echo. I was correct. Everything looked great. And there I was, scared to take the stairs down to my office for fear of losing consciousness and breaking my neck. Meanwhile my psychiatrist was convinced it was neurological. I got scheduled for an MRI. I just had that a couple of days ago and am still waiting to hear my doctor&rsquo;s interpretation, but my layman&rsquo;s read of the results is that it&rsquo;s a bunch of \"minimal this\" and \"unremarkable that.\" After some unsolicited medical advice and a lot of research by my partner, Elle, we found some information on dysautonomia. That&rsquo;s an umbrella term for a bunch of disorders and syndromes like Ehlers-Danlos Syndrome, Mast Cell Activation Syndrome, and POTS. Various combinations of these &mdash; which are often comorbid &mdash; could explain my symptoms, both present and past. GI issues, sleep issues, plus the lightheadness and syncope. And unexplained pain that I&rsquo;d&hellip;",
		"keywords": ["activation","danlos","ehlers","syndrome","dysautonomia","syndrome","activation","constantly","danlos","ehlers","everything","meanwhile","middle","overtired","returning","school","sometimes","syndrome","turns","various","while","ability","advice","again","allergen","allow","appreciate","aside","asked","before","began","believe","blaming","bones","breaking","bunch","burns","called","capitalist","changes","circulation","combinations","comorbid","concussion","confirm","consciousness","constant","convinced","couple","declared","dependent","diagnosis","disability","disastrous","disconcerting","disorders","doctor","documenting","doesn","dozen","dysautonomia","echocardiogram","either","enough","entirely","everybody","everything","expect","experienced","experiencing","explain","explained","feeling","fervently","figure","figured","found","friends","genetic","going","great","headache","health","heard","heart","hematology","hopefully","hypermobility","income","indicator","information","insist","insurance","interpretation","investigations","invisible","issues","layman","lifestyle","lightheaded","lightheadedness","lightheadness","liked","little","lived","looked","losing","lying","maintain","mdash","media","medical","minimal","minor","minutes","motion","neurological","normal","offer","office","often","orthostatic","pains","partner","passing","perfectly","permanent","pieces","point","prayers","primary","process","productivity","project","provider","psych","psychiatrist","received","remember","research","results","rsquo","safety","scared","scary","scheduled","scream","seriously","shorter","sickness","sitting","sleep","social","society","soliciting","somewhat","speak","specialists","specific","stairs","standing","started","support","suspect","suspicion","suspicions","symptoms","syncope","syndromes","taken","taking","talking","testing","tests","therapist","thinking","thought","thumb","times","together","touch","treatment","umbrella","unexplained","unremarkable","unsolicited","value","various","visible","waiting","weren","where","whole","within","wondered","wondering","wouldn","wrist","years"]
	},{
		"title": "Web Excursions for November 28th, 2024",
		"url": "/2024/11/28/web-excursions-for-november-28th-2024/",
		"tags": ["bookmarks"],
		"date": "Nov 28<span>th</span>, 2024",
		"ts": "1732799640",
		"summary": "Whether you&rsquo;re a new user or a seasoned pro, ScreenCastsONLINE offers in-depth screencasts on a wide range of topics, from tutorials to app discovery. Check it out. Eternal Terminal Automatically reconnect and resume SSH sessions, with support for tmux control mode. GitLaw GitLaw is an innovative platform offering free access to an extensive repository of legal contract templates. Powered by AI, our smart editor simplifies and clarifies legal documents, while our secure private repository allows you to store and manage your contracts effortlessly. Discover the future of legal documentation with GitLaw. Great for creating privacy statements and TOS for your projects. Totally free and really well done. Phantomy AI I actually really enjoyed my Leap Motion while it lasted. This looks like a useful project that replaces the need for external hardware by using the camera for gesture-based input. Pinwheel A new app from Bjango: Import design systems from Design Tokens JSON, Figma, Sketch and more. Export to namespaced Sass, SwiftUI, etc. Want more great tips and apps? Check out ScreenCastsOnline",
		"keywords": ["figma","secure","shell","automatically","bjango","check","design","discover","eternal","export","figma","gitlaw","great","happy","harvest","import","motion","phantomy","pinwheel","powered","screencastsonline","screencastsonline","sketch","swiftui","terminal","tokens","totally","access","allows","based","camera","celebrate","choose","clarifies","contract","contracts","control","creating","depth","design","discovery","documents","editor","effortlessly","enjoyed","extensive","external","gesture","great","hardware","innovative","input","lasted","legal","looks","namespaced","offering","offers","platform","privacy","private","project","projects","range","reconnect","replaces","repository","resume","rsquo","screencasts","seasoned","secure","sessions","simplifies","smart","statements","store","support","systems","templates","topics","tutorials","useful","using","whatever","while"]
	},{
		"title": "Web Excursions for November 25th, 2024",
		"url": "/2024/11/25/web-excursions-for-november-25th-2024/",
		"tags": ["bookmarks"],
		"date": "Nov 25<span>th</span>, 2024",
		"ts": "1732557600",
		"summary": "Web excursions brought to you in partnership with CleanShot X, the absolute, hands-down best app for Mac screenshots. Get one of my all-time favorite apps here. fermyon/spin Spin is the open source developer tool for building and running serverless applications powered by WebAssembly Once again, the only way forward is the Mac The App Store era must end and the solution is already here. Mints: a multifunction utility Mints is a growing collection of tools which provide tailor-made log extracts for investigating problems and exploring macOS, collate various information about a Mac which can be difficult to find elsewhere, perform a set of tests on Spotlight, and provide specialist tools for certain types of data. Useful for investigating QuickLook plugins now that qlmanage is basically useless on Sequoia. New in the Shortcuts Library: Bluesky shortcuts – Matthew Cassinelli These shortcuts for Bluesky work on the web and the app – jump directly into any section. Plus, build out your List dictionary. If you, like many others, are getting into Bluesky, these might be helpful. I&rsquo;m still mostly on Mastodon (and plan to continue to be), but Bluesky (find me here) is more attractive to me than Threads (here) as an alternative. I do all of my screenshots and screen recordings with CleanShot X. I love it to pieces. You should get it",
		"keywords": ["bluesky","macos","programming","shortcut","webassembly","bluesky","brett","cassinelli","cleanshot","dkrzyd","library","mastodon","matthew","mints","quicklook","sequoia","shortcuts","spotlight","store","threads","useful","webassembly","absolute","again","apples","applications","article","attractive","blockquote","bluesky","brettterpstra","brought","build","building","certain","class","cleanshot","collate","collection","continue","developer","dictionary","difficult","directly","easydns","eclecticlight","elsewhere","excursions","exploring","extracts","favorite","fermyon","getting","github","growing","hands","height","helpful","holding","https","image","information","investigating","library","loading","macos","macworld","matthewcassinelli","media","mints","mostly","multifunction","nojack","noscript","original","others","partnership","picture","pieces","plugins","powered","problems","profile","qlmanage","recordings","rsquo","running","screen","screenshots","section","serverless","shortcuts","social","solution","source","specialist","srcset","store","tailor","tests","threads","title","tools","ttscoff","types","uploads","useless","utility","various","width"]
	},{
		"title": "Alfred 5 giveaway!",
		"url": "/2024/11/25/alfred-5-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Nov 25<span>th</span>, 2024",
		"ts": "1732543200",
		"summary": "I&rsquo;m excited to offer the next giveaway, a Single User Power Pack (£34 value) for Alfred 5. If you&rsquo;re a Mac power user (or an aspiring power user), you can&rsquo;t live without an app launcher. Alfred is one of the originals that continues to innovate, allowing you to launch and interact with apps, act on files, and perform all kinds of actions, local and web-based, with nothing but your keyboard. Launch apps, control your music, get definitions, work with text, use your clipboard history, and tons more. Launch applications and find files on your Mac or on the web. Alfred learns how you use your Mac and prioritises results. Save countless hours by using hotkeys, keywords and customising how you want to search your Mac and activity history. Jump in and browse, preview files and take action on them without lifting your fingers off the keyboard. Sign up below to enter. A winner will be randomly drawn on Friday, November 29, at 12pm Central. The drawing is for Single User Power Pack (£34 value) for Alfred 5. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through April, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["launcher","macos","productivity","alfred","brettterpstra","central","check","entries","friday","giveaway","giveaways","launch","mastodon","robot","single","sorry","upcoming","action","actions","activity","alfred","alfredapp","allowing","among","applications","appreciated","aspiring","based","below","beyond","blockquote","brettterpstra","browse","class","clipboard","codes","contact","continues","control","cooperation","countless","customising","definitions","developer","drawing","easydns","ended","enter","excited","featured","files","fingers","first","generating","giveaway","giveaways","height","history","hotkeys","hours","https","image","innovate","interact","keyboard","keywords","kinds","launch","launcher","learns","license","lifting","loading","local","mailing","maybe","media","music","names","nojack","noscript","nothing","offer","original","originals","picture","preview","prioritises","randomly","reading","results","robot","rsquo","screenshot","search","series","signups","skipped","sorry","source","srcset","strong","subscribe","through","title","ttscoff","tuned","upcoming","uploads","using","value","vendors","visit","width","winner"]
	},{
		"title": "The Tally giveaway winners!",
		"url": "/2024/11/22/the-tally-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Nov 22<span>nd</span>, 2024",
		"ts": "1732302000",
		"summary": "The Tally giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Tally is still worth checking out. Get your totals in order with the easiest, most elegant counting app out there. Next up is Alfred 5 . Check back every Monday through March, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["counting","tally","alfred","bertrand","books","check","congratulations","control","drafts","goodtask","herpin","landgraf","lemonnier","mastodon","monday","simple","tally","tower","twitter","announce","checking","counting","details","easiest","elegant","email","ended","giveaway","giveaways","notifications","received","rsquo","series","sorry","suggest","through","totals","upcoming","winners","worth"]
	},{
		"title": "Web Excursions for November 21st, 2024",
		"url": "/2024/11/21/web-excursions-for-november-21st-2024/",
		"tags": ["bookmarks"],
		"date": "Nov 21<span>st</span>, 2024",
		"ts": "1732211820",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Weighted Hug A friend of mine launched these recently. I purchased one after trying it on at the launch party. It&rsquo;s amazing. My breathing immediately slowed and the noise of the party became more bearable. At home I&rsquo;ve found it a great relief when I&rsquo;m feeling anxious or stressed. Highly recommend. Hand made, super high quality. linkding injector Ever created bookmarks, only to forget about them later? Don&rsquo;t regularly search within your bookmarks? This (Firefox) extension is designed to help with this kind of problem. Injects search results from the linkding bookmark service into search pages like google and duckduckgo 15 Easy Ways to Stay Anonymous Online: Mask Your Identity Learn various steps you can take to protect your privacy online. I don&rsquo;t want to fearmonger, but you might want to consider being a little more private these days. These are basic steps you can take to protect yourself. You probably know most of them, but if you don&rsquo;t, here you go. deck.blue Get the most out of Bluesky with a multi-column layout like Tweetdeck. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["firefox","health","linkding","mental","privacy","anonymous","backblaze","bluesky","check","firefox","highly","identity","injects","learn","online","tweetdeck","weighted","affordably","amazing","anxious","backs","basic","bearable","became","bookmark","bookmarks","breathing","brought","cloud","column","computer","consider","created","designed","duckduckgo","entire","everything","excursions","extension","fearmonger","feeling","forget","found","friend","google","great","injector","later","launch","launched","layout","linkding","little","multi","noise","online","pages","partnership","party","privacy","private","problem","protect","purchased","quality","recently","recommend","regularly","reliably","relief","results","rsquo","search","securely","service","slowed","steps","stressed","super","today","trying","various","within"]
	},{
		"title": "A card-based layout for linkding",
		"url": "/2024/11/18/a-card-based-layout-for-linkding/",
		"tags": ["linkding","webdesign"],
		"date": "Nov 18<span>th</span>, 2024",
		"ts": "1731951720",
		"summary": "I took a whack at making linkding look more like LinkWarden. I didn&rsquo;t want to modify the source, so I did the whole thing using CSS only. It was an adventure. I&rsquo;ve mentioned linkding a few times, and am now hosting all of my bookmarks with it. I switched from a hosted solution to running it on my Synology via a Docker container (super easy to set up with Container Manager and Web Portal, if you&rsquo;re a Synology user). linkding allows for custom CSS, and I wanted to play with it a bit. By default it looks a lot like Pinboard, which is a bit plain. I kind of liked the way LinkWarden looks, so I gave that a shot. Links are displayed as \"cards\" instead of lines, with the snapshot image large at the top. The full image is clickable. In bulk edit mode, the entire card becomes clickable. On mobile it switches to one or two columns (based on resolution and orientation), which isn&rsquo;t great for browsing a large collection, but that&rsquo;s just how cards are going to work and still be readable. On a wider desktop monitor you can get four columns and browsing is really nice. Given I mostly search by title or tag and don&rsquo;t spend a lot of time just scrolling through, it works great for my personal needs. You can see it in action here. Tags are moved into a sliding panel on the right, just hover over the \"TAGS\" tab to expose them. This all has to be done with CSS, so it&rsquo;s not a perfect implementation, which would require a little bit of javascript. But it&rsquo;s totally working. If you want to play with it, here&rsquo;s the code. If you do, here are. the settings I recommend with it: To add the CSS, just copy and paste it into the Custom CSS box in settings. When you hit save, the new style will be applied. You can remove it at any time just by clearing that box and hitting save. The process of moving everything around and restyling it led to a lot of z-index and positioning considerations when opening confirmation dialogs and what not. I think I found all the issues and solved them, but let me know if you try it and run into any issues. I made use of CSS variables as much as possible, so modifying the color scheme should be relatively painless. Note that the variables use raw rgb numeric values, not actual rules. This is so that I can insert the raw values into rules and apply transparency. So if you&rsquo;re changing them, remove the from your rule and just include the part. By the way, if you&rsquo&hellip;",
		"keywords": ["color","model","again","container","custom","docker","linkwarden","links","manager","pinboard","portal","synology","action","adventure","allows","applied","apply","based","becomes","bookmarks","browsing","cards","changing","clearing","clickable","collection","color","columns","confirmation","considerations","container","custom","default","description","desktop","dialogs","displayed","entire","everything","expose","favicons","found","going","great","guest","hitting","hosted","hosting","hover","image","images","implementation","index","issues","javascript","layout","liked","linkding","little","looks","making","mentioned","mobile","modify","modifying","monitor","mostly","moved","moving","needs","numeric","opening","optional","orientation","painless","panel","paste","personal","positioning","possible","process","profile","public","readable","recommend","relatively","remove","resolution","restyling","right","rsquo","rules","running","scheme","scrolling","search","separate","settings","sliding","snapshot","solution","solved","source","spend","style","super","switched","switches","think","through","times","title","totally","transparency","using","values","variables","visitors","wanted","whack","whole","wider","working","works"]
	},{
		"title": "Tally giveaway!",
		"url": "/2024/11/18/tally-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Nov 18<span>th</span>, 2024",
		"ts": "1731938400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 licenses ($29.99 value each) for Tally. Counting seems like a simple thing, but if you&rsquo;ve ever tried to keep track of a total for a while, you know how nice it would be to have some assistance. Tally to the rescue! Easily keep multiple tallies with custom increments on your iPhone and/or Apple Watch. It&rsquo;s a brilliantly simple tool that you shouldn&rsquo;t be without. I use Tally all the time on my watch because I almost immediately lose count of whatever I&rsquo;m trying to track for more than 5 seconds. It&rsquo;s simple but very handy. Tally is the quick, easy way to keep track of any sort of counts. Habit tracking, scorekeeping, attendance…anything else you keep up with. Tally’s gesture-based interface keeps your eyes free while counting. Sign up below to enter. Winners will be randomly drawn on Friday, November 22, at 12pm Central. The drawing is for 2 licenses ($29.99 value each) for Tally, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through March, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["counting","tally","apple","brettterpstra","central","check","counting","easily","entries","friday","giveaway","giveaways","habit","mastodon","robot","sorry","tally","upcoming","watch","winners","agiletortoise","almost","among","appreciated","attendance","based","because","below","beyond","blockquote","brettterpstra","brilliantly","class","codes","contact","cooperation","count","counting","counts","custom","developer","drawing","easydns","ended","enter","excited","featured","first","generating","gesture","giveaway","giveaways","handy","height","https","iphone","image","increments","interface","keeps","license","licenses","loading","mailing","maybe","media","multiple","names","nojack","noscript","offer","original","picture","quick","randomly","reading","rescue","robot","rsquo","scorekeeping","screenshot","seconds","seems","series","shouldn","signups","simple","skipped","sorry","source","srcset","strong","subscribe","tallies","tally","through","title","track","tracking","tried","trying","ttscoff","tuned","upcoming","uploads","value","vendors","visit","watch","whatever","while","width","winner"]
	},{
		"title": "The Monodraw giveaway winners!",
		"url": "/2024/11/16/the-monodraw-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Nov 16<span>th</span>, 2024",
		"ts": "1731789000",
		"summary": "The Monodraw giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Monodraw is still worth checking out. Get cracking on that awesome ASCII art you&rsquo;ve been meaning to create. Add a diagram to your text file, spruce up a README, anywhere it&rsquo;s plain text, you can make it artwork. Next up is Tally . Check back every Monday through March, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["ascii","design","drawing","ascii","alfred","arendt","ariel","becherer","books","brenden","brian","cardieri","check","christian","congratulations","control","david","drafts","dreau","gavin","giveaway","goodtask","hagen","hartington","hawker","jerman","jimmy","johnny","juande","kevin","levison","loeffler","mastodon","monday","monodraw","norman","parshva","patel","readme","rajiv","robot","santander","slaven","tally","thijs","tower","twitter","wolfe","zehner","agiletortoise","alfredapp","announce","anywhere","artwork","awesome","background","bolton","brett","brettterpstra","bryan","checking","class","confetti","contact","cracking","create","details","diagram","didnt","easydns","email","ended","getdrafts","giveaway","giveaways","goodtaskapp","height","heinz","helftone","https","image","loading","meaning","media","monodraw","nojack","noscript","notifications","original","picture","received","rsquo","series","sorry","source","spruce","srcset","subscribe","suggest","takecontrolbooks","tally","through","title","tower","ttscoff","twitter","upcoming","uploads","width","winners","worth"]
	},{
		"title": "Web Excursions for November 12th, 2024",
		"url": "/2024/11/12/web-excursions-for-november-10th-2024/",
		"tags": ["bookmarks"],
		"date": "Nov 12<span>th</span>, 2024",
		"ts": "1731420000",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. mighty_docs &ndash; AI-Powered Developer Documentation Assistance Get accurate answers from the latest dev docs, customized for your tech stack, locally on your computer. This looks great for web developers, with the ability to chat with documentation for stacks like Vue and React. Maybe more platforms in the future? But the free version is enough to test it out, and a lifetime license is a reasonable $30. Mac only. Fantastical for Windows My favorite calender app for Mac and iOS is now available for Windows (scroll down the page if you don&rsquo;t see the Microsoft Store link). GitHub Spark GitHub Next Project: Can we enable anyone to create or adapt software for themselves, using AI and a fully-managed runtime? I watched demos of this at GitHub Universe and it&rsquo;s pretty astounding. I&rsquo;ve been skeptical that AI was going to get to a point where you could just describe an idea and get accurate code from it, but we&rsquo;re already at that point. Custom keycaps for UHK Design unique dye sub keycaps with UHK layout. Just for the Ultimate Hacking Keyboard users out there. Here&rsquo;s what I did with it",
		"keywords": ["keycap","cleanmymac","custom","design","developer","fantastical","github","hacking","keyboard","maybe","microsoft","powered","project","react","spark","store","ultimate","universe","windows","ability","accurate","adapt","answers","anyone","astounding","available","brought","calender","computer","create","customized","demos","describe","developers","enough","excursions","favorite","fully","going","great","keycaps","latest","layout","license","lifetime","locally","looks","managed","mighty","ndash","partnership","platforms","point","reasonable","rsquo","runtime","scroll","skeptical","software","speed","stack","stacks","themselves","tools","unique","users","using","version","watched","where"]
	},{
		"title": "Monodraw giveaway!",
		"url": "/2024/11/11/monodraw-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Nov 11<span>th</span>, 2024",
		"ts": "1731339480",
		"summary": "I&rsquo;m excited to offer the next giveaway, 20 licenses ($9.99 value each) for Monodraw. If you ever need to add ASCII art to a README or any text file, Monodraw is the best tool for creating it. From flow charts to mind maps, Monodraw&rsquo;s drawing tools make adding boxes, lines, shapes and text as simple as any graphic design program. Plain text has been around for decades and it&rsquo;s here to stay. Monodraw allows you to easily create text-based art (like diagrams, layouts, flow charts) and visually represent algorithms, data structures, binary formats and more. Because it&rsquo;s all just text, it can be easily embedded almost anywhere. Sign up below to enter. Winners will be randomly drawn on Friday, November 15, at 12pm Central. The drawing is for 20 licenses ($9.99 value each) for Monodraw, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through March, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["ascii","design","drawing","ascii","because","central","check","entries","friday","mastodon","monodraw","readme","sorry","winners","adding","algorithms","allows","almost","among","anywhere","appreciated","based","below","beyond","binary","boxes","brettterpstra","charts","codes","cooperation","create","creating","decades","design","developer","diagrams","drawing","easily","embedded","ended","enter","excited","featured","first","formats","generating","giveaway","giveaways","graphic","layouts","license","licenses","mailing","maybe","names","offer","program","randomly","reading","robot","rsquo","series","shapes","signups","simple","skipped","structures","through","tools","tuned","value","vendors","visit","visually","winner"]
	},{
		"title": "The Name Mangler giveaway winners!",
		"url": "/2024/11/08/the-name-mangler-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Nov 8<span>th</span>, 2024",
		"ts": "1731092400",
		"summary": "The Name Mangler giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Name Mangler is still worth checking out. If you&rsquo;ve ever run into the need to rename a bunch of files quickly and accurately, you should try out Name Mangler. It&rsquo;s brilliant. Next up is Monodraw . Check back every Monday through March, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["productivity","rename","renaming","alfred","billy","books","check","congratulations","control","drafts","giveaway","grooms","mangler","mastodon","monday","monodraw","patterson","quesnel","robot","rowell","simpson","tally","tower","twitter","accurately","agiletortoise","alfredapp","announce","background","brett","brettterpstra","brilliant","bunch","checking","class","confetti","contact","details","didnt","easydns","email","ended","files","getdrafts","giveaway","giveaways","height","helftone","https","image","loading","manytricks","media","monodraw","namemangler","nojack","noscript","notifications","original","picture","quickly","received","rename","rsquo","series","sorry","source","srcset","subscribe","suggest","takecontrolbooks","tally","through","title","tower","ttscoff","twitter","upcoming","uploads","width","winners","worth"]
	},{
		"title": "Web Excursions for November 6, 2024",
		"url": "/2024/11/06/web-excursions-for-november-6-2024/",
		"tags": ["bookmarks"],
		"date": "Nov 6<span>th</span>, 2024",
		"ts": "1730901600",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Spafe Code &ndash; AI Code Translator Use AI to translate code from one language to another. Works really well in my brief testing. Copilot can probably do the same thing but I&rsquo;ve never thought to try. Stretch It A simpler version of Gestimer, if that&rsquo;s possible. I love the utility of these gesture-based timers, where you just pull down from your menu bar to set a quick timer. Simple, useful. linkding Bookmarks for Alfred Search linkding bookmarks with Alfred. H/T Ralf Hülsmann. Wikiwand - Wikipedia, and beyond AI-driven wiki aggregator created to enhance user experience on Wikipedia by streamlining knowledge consumption Summarize articles and make them queryable while you browse. Another great use case for AI (I know I&rsquo;ve been linking a lot of that lately, but that&rsquo;s the world right now). (Plus, great landing page design, check out the little widget for page customization previews.) Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["artificial","graphical","intelligence","widget","alfred","another","bookmarks","brett","check","copilot","gestimer","mindmeister","search","simple","spafe","stretch","summarize","translator","wikipedia","wikiwand","works","aggregator","alfred","another","articles","based","beyond","blockquote","bookmarks","boosting","brainstorming","brettterpstra","brief","brought","browse","check","class","clemstation","collaborating","collaborative","created","customization","design","driven","enhance","excursions","experience","firefingers","gesture","great","height","holding","https","image","knowledge","landing","language","linkding","linking","little","loading","lsmann","mapping","media","mindmeister","ndash","noscript","original","partnership","picture","possible","previews","productivity","queryable","quick","right","rsquo","simpler","software","source","spafe","srcset","streamlining","stretch","testing","thought","timer","timers","title","translate","uploads","useful","utility","version","where","while","widget","width","wikiwand","workflows","world"]
	},{
		"title": "Name Mangler giveaway!",
		"url": "/2024/11/04/name-mangler-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Nov 4<span>th</span>, 2024",
		"ts": "1730728800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($19 value each) for Name Mangler. Name Mangler is a brilliant piece of software designed specifically for renaming batches of files. You can build rulesets to handle all kinds of \"mangling,\" applying prefixes and suffixes, sequences, using image data to create placeholders like width and date&hellip; you name it, it will rename it. Name Mangler is designed to make it super easy to rename batches of files &mdash; anywhere from a few to tens of thousands &mdash; in one quick operation. Tell Name Mangler which files to rename, set up your rules, then click one button and it&rsquo;s done. Sign up below to enter. Winners will be randomly drawn on Friday, November 08, at 12pm Central. The drawing is for 5 licenses ($19 value each) for Name Mangler, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through March, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["productivity","rename","renaming","central","check","entries","friday","mangler","mastodon","sorry","winners","among","anywhere","applying","appreciated","batches","below","beyond","brettterpstra","brilliant","build","button","click","codes","cooperation","create","designed","developer","drawing","ended","enter","excited","featured","files","first","generating","giveaway","giveaways","handle","hellip","image","kinds","license","licenses","mailing","mangling","maybe","mdash","names","offer","operation","piece","placeholders","prefixes","quick","randomly","reading","rename","renaming","robot","rsquo","rules","rulesets","sequences","series","signups","skipped","software","specifically","suffixes","super","thousands","through","tuned","using","value","vendors","visit","width","winner"]
	},{
		"title": "The ScreenCastsONLINE giveaway winner!",
		"url": "/2024/11/01/the-screencastsonline-giveaway-winner/",
		"tags": ["giveaway"],
		"date": "Nov 1<span>st</span>, 2024",
		"ts": "1730484000",
		"summary": "The ScreenCastsONLINE giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but ScreenCastsONLINE is still worth checking out. You&rsquo;ve got a lot to learn, and ScreenCastsONLINE is a super valuable source for for learning apps and tools. And you can get a 20% discount on your first subscription (week, month, or year) by using this link! Next up is Name Mangler . Check back every Monday through March, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["education","screencast","alfred","arendt","books","check","christian","congratulations","control","mangler","mastodon","monday","monodraw","screencastsonline","tally","tower","twitter","announce","checking","details","discount","email","ended","first","giveaway","giveaways","learn","learning","notifications","received","rsquo","series","sorry","source","subscription","suggest","super","through","tools","upcoming","using","valuable","winner","winners","worth"]
	},{
		"title": "linkding for SearchLink",
		"url": "/2024/11/01/linkding-for-searchlink/",
		"tags": ["bookmarking","linkding","searchlink"],
		"date": "Nov 1<span>st</span>, 2024",
		"ts": "1730470740",
		"summary": "I added linkding searching to SearchLink this morning. It works the same as Pinboard searching, just with (or ) as the search shortcut. See the bottom of the Pinboard search page for configuration setup. No big deal, just updating to work with the tools I&rsquo;m using. Get the latest version of SearchLink on the project page",
		"keywords": ["bookmarks","searching","pinboard","searchlink","added","bottom","configuration","latest","linkding","morning","project","rsquo","search","searching","setup","shortcut","tools","updating","using","version","works"]
	},{
		"title": "Archive linkding bookmarks to local Markdown",
		"url": "/2024/10/31/archive-linkding-bookmarks-to-local-markdown/",
		"tags": ["bookmarking","linkding","markdown"],
		"date": "Oct 31<span>st</span>, 2024",
		"ts": "1730391060",
		"summary": "I&rsquo;ve completely switched from Pinboard to linkding for bookmarking. Mostly because Pinboard hasn&rsquo;t seen development in years, and the creator is getting a little&hellip; weird, which makes me wonder about its future. Pinboard still works fine, but linkding is actively developed, has mostly the same features, and can be hosted locally. I have my Web Excursions working perfectly with linkding, as well as some other integrations using the API. It&rsquo;s a little different from Pinboard, but not so much that porting scripts takes a lot of time. I even have inside information that Pins for Pinboard might have a linkding version soon. It would be excellent to have a UI for my bookmarks again. You can run linkding on any server that allows Docker images, or just do what I did and spin up a dedicated machine on PikaPods for a couple bucks a month. The only thing that running your own bookmarking service lacks is the trending topics kind of stuff that Pinboard can do. (As an aside, I mentioned LinkWarden in my Web Excursions, and if you&rsquo;re looking for a self-hosted service that does archiving and has a prettier interface, it&rsquo;s a good choice. It just didn&rsquo;t quite fit my needs.) I do have a public page for (and RSS feed) for shared bookmarks, if you care to follow it. One thing linkding doesn&rsquo;t have is archiving. That feature is available on Pinboard for an additional fee, but I&rsquo;m not sure how well it&rsquo;s working there these days. What linkding does offer is the ability to submit any page you bookmark to the Internet Archive, so it will be permanently accessible via the Wayback Machine . That&rsquo;s a pretty reasonable option, really. Personally, I&rsquo;d rather have local Markdown files of any articles I want to reference in the future. I have this script running in the background on my Mac mini server in my basement. Any bookmark I tag with gets Markdownfied using Gather (it can also use Marky for web-based conversion) and saved as Markdown into a folder I use in nvUltra. The archives are just text files that will work with any app that can import them (Obsidian, DEVONthink, etc.). It&rsquo;s working great so far. You can change the tag it searches for, or leave that blank to just archive every bookmark. I don&rsquo;t want to do that with my 8,000 existing bookmarks, as a lot of them are just links to tools and apps that I don&rsquo;t need saved as notes. Linkding is perfectly searchable as a reference&hellip;",
		"keywords": ["folksonomy","machine","tagging","wayback","archive","devonthink","docker","excursions","gather","internet","linkwarden","linkding","machine","markdown","markdownfied","marky","mostly","obsidian","personally","pikapods","pinboard","wayback","ability","accessible","actively","added","again","allows","anyway","archive","archives","archiving","articles","aside","available","backed","background","based","basement","because","between","blank","bookmark","bookmarking","bookmarks","bucks","change","choice","comments","completely","configuration","conversion","couple","creator","dedicated","description","developed","development","different","doesn","excellent","feature","features","files","folder","getting","great","headers","hellip","highly","hosted","images","import","includes","information","inside","integrations","interface","lacks","leave","linkding","links","little","local","locally","looking","machine","makes","mentioned","metadata","mostly","needs","notes","nvultra","offer","perfectly","permanently","portable","porting","prettier","programming","public","rather","reasonable","rsquo","running","saved","script","scripts","search","searchable","searches","server","service","shared","solution","solutions","stuff","switched","takes","title","tools","topics","trending","usable","usage","using","version","weird","wonder","working","works","years"]
	},{
		"title": "Web Excursions for October 24, 2024",
		"url": "/2024/10/28/web-excursions-for-october-24-2024/",
		"tags": ["bookmarks"],
		"date": "Oct 28<span>th</span>, 2024",
		"ts": "1730134800",
		"summary": "Whether you&rsquo;re a new user or a seasoned pro, ScreenCastsONLINE offers in-depth screencasts on a wide range of topics, from tutorials to app discovery. Check it out. Linkwarden Linkwarden is a self-hosted, open-source collaborative bookmark manager to collect, organize and archive webpages. The objective is to organize useful webpages and articles you find across the web in one place, and since useful webpages can go away (see the inevitability of Link Rot), Linkwarden also saves a copy of each webpage as a Screenshot and PDF, ensuring accessibility even if the original content is no longer available. H/T Eric Beavers. sissbruecker/linkding Self-hosted bookmark manager that is designed be to be minimal, fast, and easy to set up using Docker. Great 1:1 replacememt for Pinboard, if you&rsquo;re looking to switch (allows custom CSS!) PikaPods - Instant Open Source App Hosting Run the finest Open Source web apps from $1/month, fully managed, no tracking, no ads, full privacy. Self-hosting was never this convenient. This is a great way to run your own LinkDing server. Supercharge Cool little Mac app that just adds some tweaks to the OS. I already have shortcuts to most of what it does, but re-creating the TotalFinder visor idea is pretty cool. Shareware. bruno An API client that uses plain text language to create API request collections, syncable with Git, and a great replacement for Postman, Insomnia, and other tools. Open source. beorg: To-Do List & Agenda Similar in concept to Noteplan (todos mixed with notes, plain text storage), but using Org mode files, syncable with any cloud service. iOS/WatchOS only, but the files are accessible with Emacs or other editor anywhere. From the creator of TrunkNotes, which was one of my favorite personal wikis back in the day. Want more great tips and apps? Check out ScreenCastsOnline",
		"keywords": ["emacs","personal","shortcut","watchos","agenda","beavers","check","docker","emacs","great","hosting","insomnia","instant","linkding","linkwarden","noteplan","pikapods","pinboard","postman","screencastsonline","screencastsonline","screenshot","shareware","similar","source","supercharge","totalfinder","trunknotes","watchos","accessibility","accessible","across","allows","anywhere","archive","articles","available","beorg","bookmark","bruno","client","cloud","collaborative","collect","collections","concept","content","convenient","create","creating","creator","custom","depth","designed","discovery","editor","ensuring","favorite","files","finest","fully","great","hosted","hosting","inevitability","language","linkding","little","longer","looking","managed","manager","minimal","mixed","notes","offers","organize","original","personal","privacy","range","replacememt","replacement","rsquo","saves","screencasts","seasoned","server","service","shortcuts","since","sissbruecker","source","storage","switch","syncable","todos","tools","topics","tracking","tutorials","tweaks","useful","using","visor","webpage","webpages","wikis"]
	},{
		"title": "ScreenCastsONLINE giveaway!",
		"url": "/2024/10/28/screencastsonline-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Oct 28<span>th</span>, 2024",
		"ts": "1730120400",
		"summary": "I&rsquo;m excited to offer the next giveaway, a 1-year subscription ($89.99) for ScreenCastsONLINE. I&rsquo;ve learned so much from ScreenCastsONLINE. For tips, tricks, and in-depth how-tos on everything from OmniFocus to Obsidian, you can&rsquo;t beat their informative and excellently-made videos. This 1-year subscription opens up a plethora of knowledge. Get the Most Out Of Your Apple Devices! Unlock your full potential with ScreenCastsONLINE’s step-by-step video tutorials and stay on top of the latest Apple devices and applications. ScreenCastsONLINE has been providing two videos per week for over 19 years so you can have access to the full archive and find videos to help you maximise your usage of your Mac, iPhone, iPad and Apple Watch. No matter who you are, or what your skill level is, ScreenCastsONLINE has something to offer everyone. Sign up below to enter. A winner will be randomly drawn on Friday, November 01, at 12pm Central. The drawing is for 1-year subscription ($89.99) for ScreenCastsONLINE. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through March, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["education","screencast","apple","brettterpstra","central","check","devices","entries","friday","giveaway","giveaways","mastodon","obsidian","omnifocus","robot","screencastsonline","sorry","unlock","upcoming","watch","access","among","applications","appreciated","archive","below","beyond","blockquote","brettterpstra","bterpstra","class","codes","contact","cooperation","depth","developer","devices","drawing","easydns","ended","enter","everyone","everything","excellently","excited","featured","first","generating","giveaway","giveaways","height","https","iphone","image","informative","knowledge","latest","learned","level","license","loading","mailing","maximise","maybe","media","names","nojack","noscript","offer","opens","original","picture","plethora","potential","providing","randomly","reading","robot","rsquo","screencastsonline","screenshot","series","signups","skill","skipped","sorry","source","srcset","strong","subscribe","subscription","through","title","tricks","ttscoff","tuned","tutorials","upcoming","uploads","usage","vendors","video","videos","visit","width","winner","years"]
	},{
		"title": "The Typora giveaway winners!",
		"url": "/2024/10/25/the-typora-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Oct 25<span>th</span>, 2024",
		"ts": "1729879200",
		"summary": "The Typora giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Typora is still worth checking out. If you want a clean, flexible Markdown writing experience (or want to learn Markdown and improve your writing process), Typora is a perfect fit. You can still save 20% with coupon at checkout (good until October 31st). Next up is ScreenCastsONLINE . Check back every Monday through March, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["editor","markdown","writing","alfred","anderson","books","check","clark","congratulations","control","curtis","harrington","jonathan","losito","mangler","markdown","mastodon","michael","monday","monodraw","nicola","screencastsonline","spendlove","tally","twitter","typora","announce","checking","checkout","clean","coupon","details","email","ended","experience","flexible","giveaway","giveaways","improve","learn","notifications","process","received","rsquo","series","sorry","suggest","through","upcoming","winners","worth","writing"]
	},{
		"title": "Web Excursions for October 22, 2024",
		"url": "/2024/10/22/web-excursions-for-october-22-2024/",
		"tags": ["bookmarks"],
		"date": "Oct 22<span>nd</span>, 2024",
		"ts": "1729602000",
		"summary": "Web excursions brought to you in partnership with CleanShot X, the absolute, hands-down best app for Mac screenshots. Get one of my all-time favorite apps here. What? Two web excursions in 7 days? In this economy? I just found some extra stuff over the weekend&hellip; Busy Status Bar — Productivity Multi-tool Device with an LED pixel screen Displays a personal busy message. Built-in Pomodoro timer and Apps. Fully customizable, open-source, and hacker-friendly HomeBatteries for HomeKit on the App Store HomeBatteries makes it super quick & easy to see all of your HomeKit accessory batteries in one location. Playnode An interesting node-based interface for using various LLMs to create text content visually. Free plan offers 20 credits/week. JSX.design No-code WYSIWYG editor for React. Drag and drop components and produce clean code. I do all of my screenshots and screen recordings with CleanShot X. I love it to pieces. You should get it",
		"keywords": ["hardware","pomodoro","react","wysiwyg","brett","built","cleanshot","dkrzyd","device","displays","fully","homebatteries","homekit","multi","playnode","pomodoro","productivity","react","status","store","wysiwyg","absolute","accessory","apple","based","batteries","brettterpstra","brought","class","clean","cleanshot","components","content","create","credits","customizable","design","economy","editor","excursions","extra","favorite","found","friendly","hacker","hands","height","hellip","holding","homebatteries","homekit","https","image","interesting","interface","loading","location","makes","media","message","noscript","offers","original","partnership","personal","picture","pieces","pixel","playnode","produce","quick","recordings","screen","screenshots","source","srcset","stuff","super","timer","title","uploads","using","various","visually","weekend","width"]
	},{
		"title": "Typora giveaway!",
		"url": "/2024/10/21/typora-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Oct 21<span>st</span>, 2024",
		"ts": "1729515600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($14.99 value each) for Typora. Want to write Markdown without seeing Markdown? Typora offers a full Markdown editing experience that hides the symbols and syntax of Markdown, making your work easily readable and distraction free. It&rsquo;s the ease of Markdown combined with a What You See Is What You Mean experience. Typora gives you a seamless experience as both a reader and a writer. It removes the preview window, mode switcher, syntax symbols of markdown source code, and all other unnecessary distractions. Instead, it provides a real live preview feature to help you concentrate on the content itself. Sign up below to enter. Winners will be randomly drawn on Friday, October 25, at 12pm Central. The drawing is for 5 licenses ($14.99 value each) for Typora, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through March, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["editor","markdown","writing","central","check","entries","friday","markdown","mastodon","sorry","typora","winners","among","appreciated","below","beyond","brettterpstra","codes","concentrate","content","cooperation","developer","distraction","distractions","drawing","easily","editing","ended","enter","excited","experience","feature","featured","first","generating","giveaway","giveaways","gives","hides","itself","license","licenses","mailing","making","markdown","maybe","names","offer","offers","preview","provides","randomly","readable","reader","reading","removes","robot","rsquo","seamless","seeing","series","signups","skipped","source","switcher","symbols","syntax","through","tuned","unnecessary","value","vendors","visit","window","winner","write","writer"]
	},{
		"title": "Web Excursions for October 19, 2024",
		"url": "/2024/10/19/web-excursions-for-october-19-2024/",
		"tags": ["bookmarks"],
		"date": "Oct 19<span>th</span>, 2024",
		"ts": "1729353480",
		"summary": "Web excursions brought to you in partnership with Fabric, the best way to organize your notes, tasks, and projects in one place. IndigoStack This is really cool. Bare metal performance for local web development stacks. Run multiple stacks with https, reverse proxies, whatever tech you need &mdash; no Docker, no VMs, full terminal integration. Really well done. A Quick Tip For Using Moom in Bunch Great post from Stephen Millard on using Moom 4 with Bunch. Lots of tips! Copy Repo Copy/Paste the content of any Github repository for use in your LLM of choice. Filterable by file type. ttscoff/confluence2md I made this specifically for the internal docs team at Oracle, but figured other people may find a use for it. It takes an HTML export dump from Confluence and converts it to Markdown (specifically Python markdown, but could easily be modified for other formats). Great for converting Confluence documentation wikis into GitHub/GitLab pages. Let Fabric be your second brain, with an all-in-one AI workspace and smart organizer for all your projects, ideas, notes & links. Check it out today",
		"keywords": ["github","bunch","check","confluence","docker","fabric","filterable","github","gitlab","github","great","indigostack","markdown","millard","oracle","paste","python","quick","stephen","using","brain","brought","choice","confluence","content","converting","converts","development","easily","excursions","export","figured","formats","https","ideas","integration","internal","links","local","markdown","mdash","metal","modified","multiple","notes","organize","organizer","pages","partnership","people","performance","projects","proxies","repository","reverse","second","smart","specifically","stacks","takes","tasks","terminal","today","ttscoff","using","whatever","wikis","workspace"]
	},{
		"title": "The OmniPlan giveaway winners!",
		"url": "/2024/10/18/the-omniplan-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Oct 18<span>th</span>, 2024",
		"ts": "1729274400",
		"summary": "The OmniPlan giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but OmniPlan is still worth checking out. OmniPlan is totally worth checking out, and worth the price. Get organized and manage your projects! Next up is Typora . Check back every Monday through March, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["management","omniplan","project","alfred","check","chris","congratulations","ishan","mahapatra","mangler","mastodon","messina","monday","monodraw","omniplan","screencastsonline","tally","twitter","typora","announce","checking","details","email","ended","giveaway","giveaways","notifications","organized","price","projects","received","rsquo","series","sorry","suggest","through","totally","upcoming","winners","worth"]
	},{
		"title": "OmniPlan giveaway!",
		"url": "/2024/10/14/omniplan-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Oct 14<span>th</span>, 2024",
		"ts": "1728910800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 Universal Standard licenses ($199.99 value each) for OmniPlan. OmniPlan is the ultimate way to manage a project, seeing all of the moving parts at once with start and end dates for tasks, Gantt charts, support for automation workflows, and a project assistant to provide extra functionality. Multi-project dashboards make managing complex projects in your life/work a breeze. This giveaway is for a universal license that will cover you on macOS, iOS, and visionOS. Used by top-tier Fortune 500 technology companies, production companies, construction firms and other industries, OmniPlan helps anyone with a complex project wrangle the complexity into submission, scope out needed resources, schedule required steps, and manage execution to achieve their goals on time and on budget. Sign up below to enter. Winners will be randomly drawn on Friday, October 18, at 12pm Central. The drawing is for 2 Universal Standard licenses ($199.99 value each) for OmniPlan, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through March, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["management","omniplan","project","central","check","entries","fortune","friday","gantt","mastodon","multi","omniplan","sorry","standard","universal","winners","achieve","among","anyone","appreciated","assistant","automation","below","beyond","breeze","brettterpstra","budget","charts","codes","companies","complex","complexity","construction","cooperation","cover","dashboards","dates","developer","drawing","ended","enter","excited","execution","extra","featured","firms","first","functionality","generating","giveaway","giveaways","goals","helps","industries","license","licenses","macos","mailing","managing","maybe","moving","names","needed","offer","parts","production","project","projects","randomly","reading","required","resources","robot","rsquo","schedule","scope","seeing","series","signups","skipped","steps","submission","support","tasks","technology","through","tuned","ultimate","universal","value","vendors","visionos","visit","winner","workflows","wrangle"]
	},{
		"title": "The Eloquent Javascript (e-book) giveaway winners!",
		"url": "/2024/10/11/the-eloquent-javascript-e-book-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Oct 11<span>th</span>, 2024",
		"ts": "1728669600",
		"summary": "The Eloquent Javascript (e-book) giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Eloquent Javascript is still worth checking out. If you&rsquo;re a Javascript developer, new or old, this book has great info and tips for you. You can still save 30% off of the purchase price using the code at checkout. Next up is OmniPlan . Check back every Monday through March, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["development","ebook","javascript","programming","bolton","check","ciaran","congratulations","connelly","davide","eloquent","fischer","jasper","javascript","kopelchuk","mangler","mastodon","matthias","monday","monodraw","omniplan","peter","rempe","ricci","robeson","scott","screencastsonline","tally","trist","tristan","twitter","typora","announce","checking","checkout","details","developer","email","ended","giveaway","giveaways","great","notifications","price","received","rsquo","series","sorry","suggest","through","upcoming","using","winners","worth"]
	},{
		"title": "Eloquent Javascript (e-book) giveaway!",
		"url": "/2024/10/07/eloquent-javascript-e-book-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Oct 7<span>th</span>, 2024",
		"ts": "1728306000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 10 copies of Eloquent Javascript ($39.99 value each). Whether you&rsquo;re just getting into web development or are an old hand, this book contains excellent knowledge and tips for Javascript developers. The latest edition updates for current web development practices and tools. The fourth edition of this classic textbook takes you on a journey through the language of the web, starting from its basic elements and building up to engaging, complete programs. The author’s personal experiences from years of maintaining popular open source projects enliven the text with practical insights and examples. Sign up below to enter. Winners will be randomly drawn on Friday, October 11, at 12pm Central. The drawing is for 10 e-books ($39.99 value each) for Eloquent Javascript (e-book), one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through January, 2025 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["development","ebook","javascript","programming","brettterpstra","central","check","eloquent","entries","friday","giveaway","giveaways","javascript","mastodon","robot","sorry","upcoming","winners","among","appreciated","author","basic","below","beyond","blockquote","books","brettterpstra","building","class","classic","codes","contact","contains","cooperation","copies","developer","developers","development","drawing","easydns","edition","elements","eloquent","ended","engaging","enliven","enter","examples","excellent","excited","experiences","featured","first","fourth","generating","getting","giveaway","giveaways","height","https","image","insights","javascript","journey","knowledge","language","latest","license","loading","mailing","maintaining","maybe","media","names","nojack","noscript","nostarch","offer","original","personal","picture","popular","practical","practices","programs","projects","randomly","reading","robot","rsquo","series","signups","skipped","sorry","source","srcset","starting","strong","subscribe","takes","textbook","through","title","tools","ttscoff","tuned","upcoming","updates","uploads","value","vendors","visit","width","winner","years"]
	},{
		"title": "The Moom giveaway winners!",
		"url": "/2024/10/04/the-moom-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Oct 4<span>th</span>, 2024",
		"ts": "1728064800",
		"summary": "The Moom giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Moom is still worth checking out. I can&rsquo;t think of anyone on a Mac who couldn&rsquo;t use better window management. Moom is the best in the biz. You can use the coupon to save 15% on a purchase or upgrade. Next up is Eloquent Javascript (e-book) . Check back every Monday through January, 2025 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["management","manytricks","window","check","congratulations","cristobal","eloquent","gavin","javascript","jenkins","jerman","litke","mangler","marco","mastodon","mcclain","michail","miller","monday","monodraw","omniplan","onderstal","schofield","screencastsonline","terpstra","torres","tracy","twitter","typora","velez","zainudin","announce","anyone","checking","couldn","coupon","details","email","ended","giveaway","giveaways","management","notifications","received","rsquo","series","sorry","suggest","think","through","upcoming","upgrade","window","winners","worth"]
	},{
		"title": "Web Excursions for October 04, 2024",
		"url": "/2024/10/04/web-excursions-for-october-04-2024/",
		"tags": ["bookmarks"],
		"date": "Oct 4<span>th</span>, 2024",
		"ts": "1728057000",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Create VS Code Themes Easily - Theme Studio - The VS Code Theme Editor I&rsquo;ve switched to VS Code (finally) and I&rsquo;m mostly loving it. Started playing around with porting my favorite things and found VS Code Theme Studio. It&rsquo;s \"the easiest way to create a theme for VS Code. It&rsquo;s a browser-based theme editor for Visual Studio Code Themes. You can easily design beautiful, polished themes, and deploy them to the VS Code Marketplace.\" Support Mutual Aid Disaster Relief - Action Network A great place to donate to hurricane recovery in the North Carolina region. Put your money directly in the hands of people doing the work. Intech Studio - Midi Grid controllers and accessories I have no more room on my desk for more controllers, and I&rsquo;ve fallen out of the habit of making music, but these are so tempting. Cute and modular. I think I just like buttons&hellip; rhulse/ruby-css-toolkit: Some tools for compressing CSS Some tools for compressing and tidying CSS with Ruby. I&rsquo;m using this port of the YUI compressor in Conductor and Marky and it works really well. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["design","studio","visual","action","backblaze","carolina","check","conductor","create","disaster","easily","editor","intech","marketplace","marky","mutual","network","north","relief","started","studio","support","theme","themes","visual","accessories","affordably","backs","based","beautiful","brought","browser","buttons","cloud","compressing","compressor","computer","controllers","create","deploy","design","directly","doing","donate","easiest","easily","editor","entire","everything","excursions","fallen","favorite","finally","found","great","habit","hands","hellip","hurricane","loving","making","modular","money","mostly","music","partnership","people","playing","polished","porting","recovery","region","reliably","rhulse","rsquo","securely","switched","tempting","theme","themes","think","tidying","today","toolkit","tools","using","works"]
	},{
		"title": "Moom giveaway!",
		"url": "/2024/09/30/moom-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Sep 30<span>th</span>, 2024",
		"ts": "1727701200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 10 licenses ($15 value each) for Moom. Whether you know it yet or not, window management on a Mac can change your computing life. Imagine being able to fly windows into organized dimensions and locations with the click of a button or the press of a key. Moom is the best app for managing windows that I&rsquo;ve found, and I get lost without it these days. With its wide variety of window management tools, Moom makes moving and resizing windows fast, easy, and if you&rsquo;re as geeky as we are, even fun. If you haven&rsquo;t checked Moom out recently, you&rsquo;ll be floored by the improvements in version 4. It&rsquo;s a doubling (quadrupling?) of everything that was already cool about Moom. If you&rsquo;re a current Moom user who hasn&rsquo;t upgraded, this giveaway will get you a free license for all the new goodness. Sign up below to enter. Winners will be randomly drawn on Friday, October 04, at 12pm Central. The drawing is for 10 licenses ($15 value each) for Moom, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through October, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["management","manytricks","window","central","check","entries","friday","imagine","mastodon","sorry","winners","among","appreciated","below","beyond","brettterpstra","button","change","checked","click","codes","computing","cooperation","developer","dimensions","doubling","drawing","ended","enter","everything","excited","featured","first","floored","found","geeky","generating","giveaway","giveaways","goodness","haven","improvements","license","licenses","locations","mailing","makes","management","managing","maybe","moving","names","offer","organized","press","quadrupling","randomly","reading","recently","resizing","robot","rsquo","series","signups","skipped","through","tools","tuned","upgraded","value","variety","vendors","version","visit","window","windows","winner"]
	},{
		"title": "Marky 2.0",
		"url": "/2024/09/29/marky-2-dot-0/",
		"tags": ["markdown","marky"],
		"date": "Sep 29<span>th</span>, 2024",
		"ts": "1727636100",
		"summary": "I recently revived Marky the Markdownfier. In case you missed it, Marky turns any web page into clippable Markdown for storage in notes/organization apps. And I could have left well enough alone, but there were a couple of quirks I wanted to fix. That led to&hellip; well, a complete ground-up rewrite of Marky. The old version and the old bookmarklets should continue to function, but the API at is completely overhauled to be more accurate and more versatile. The main UI at your choice of versions now points to the v2 API, and the bookmarklets it generates make use of the new improvements. The API is similar but expanded for v2. See the API docs for full info. This is still somewhat a work in progress, but I promise not to break any existing functionality if you start using the API or the bookmarklets today. Among the new features is the ability to output links for nvUltra and Obsidian, as well as links to open a preview in Marked 2. From any preview page you can click on \"Clip to&hellip;\" to immediately access these links. They can also be returned via the API as raw links, redirect pages, or as part of a JSON blob for incorporation in other workflows. The Readability engine (the part of Marky that removes ads, sidebars, menus, etc.) is completely custom now. It&rsquo;s a little more lax than the previous version, meaning it occasionally includes things like comment blocks (sans comments) and other small periphery, but is way better at getting all relevant content on a page regardless of markup. Nothing will ever be 100% perfect across every possible markup style on the web, but this does a really good job in testing. You can enable or disable readability from any preview page or via the parameter in any Marky URL or when calling the API outside of a browser. There&rsquo;s improved handling for StackExchange pages, including StackOverflow. The question will be at the top, any accepted answer will be at the top of the answers, and then additional answers and their comments will be ranked by upvotes and included in descending order. Comments are added as block quotes and should be easily parseable in both Markdown format and rendered HTML output. There&rsquo;s also handling for GitHub repos (READMEs), raw GitHub files, and Gists. If there&rsquo;s a site you frequently clip from that you think could benefit from custom parsing, let me know. I love using Marky for saving StackOverflow answers for easy searching later (in nvUltra, of course). In&hellip;",
		"keywords": ["bookmark","bookmarklet","javascript","languages","markdown","markup","pandoc","among","bookmarklet","bullseye","check","chrome","chromium","clicking","comments","gists","github","javascript","latex","markdown","markdownfier","markdownified","marked","marky","nothing","obsidian","obvious","pandoc","phantomjs","readmes","readability","shortcuts","speaking","stackexchange","stackoverflow","textile","ability","accepted","access","accurate","across","added","adding","allow","allowing","almost","alone","answer","answers","arrow","backlink","before","benefit","block","blocks","bookmarklet","bookmarklets","break","brettterpstra","browser","browsers","bullseye","bullseyeupdate","button","bypassing","called","calling","capable","chance","change","choice","class","click","clicked","clipboard","clippable","clipping","combination","comment","comments","common","completely","contacto","content","contents","continue","conversion","copied","couple","create","custom","descending","destination","different","directly","disable","discover","display","distant","doing","dropdown","easily","email","endnotes","engine","enough","especially","eventually","evolving","expanded","extension","extensions","failures","features","files","fnref","footnote","footnotes","format","formats","function","functionality","generated","generates","generator","getting","going","grabbing","great","ground","handle","handling","harder","haven","heckyesmarkdown","hellip","helpful","highlighted","highlighter","highlighting","https","ideas","identifying","improved","improvements","included","includes","including","incorporation","increasingly","information","integrations","language","later","ldquo","links","little","logged","longer","markdown","markdownrules","markup","marky","mdash","meaning","menus","minus","missed","multiple","newer","noteref","notes","nvultra","occasionally","opens","organization","output","outside","overhauled","paces","pages","pandoc","parameter","parameters","parseable","parsing","pasting","periphery","plaintext","point","points","popup","possible","precise","preview","processes","promise","pullquote","query","quick","quirks","quotes","range","ranked","rdquo","readability","recently"]
	},{
		"title": "The Screen Studio giveaway winner!",
		"url": "/2024/09/27/the-screen-studio-giveaway-winner/",
		"tags": ["giveaway"],
		"date": "Sep 27<span>th</span>, 2024",
		"ts": "1727460000",
		"summary": "The Screen Studio giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Screen Studio is still worth checking out. If you do any kind of screencasting or video documentation, Screen Studio will save you a ton of time and produce outstanding videos. The first 10 people to use the code will get 20% off their purchase of the Standard edition &mdash; go grab it! Next up is Moom . Check back every Monday through October, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["recording","screen","screencast","video","check","congratulations","eloquent","graham","javascript","mastodon","monday","omniplan","screen","standard","studio","twitter","announce","checking","details","edition","email","ended","first","giveaway","giveaways","mdash","notifications","people","produce","received","rsquo","screencasting","series","sorry","suggest","through","upcoming","video","videos","winner","worth"]
	},{
		"title": "Screen Studio giveaway!",
		"url": "/2024/09/23/screen-studio-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Sep 23<span>rd</span>, 2024",
		"ts": "1727096400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 1 Standard license ($89 value) for Screen Studio. I&rsquo;ve long used ScreenFlow to create screencasts, and then discovered Screen Studio (thanks Mike Schmitz). If you just need to create a beautiful screencast with adjustable background, window zooming, and cursor enhancing/smoothing, Screen Studio does it all automatically. You just hit record and it does the rest. Brilliant. Screen Studio is an opinionated screen recorder that makes your videos look beautiful. It automatically zooms in on your cursor, increases cursor size and smooths its movements. Sign up below to enter. A winner will be randomly drawn on Friday, September 27, at 12pm Central. The drawing is for 1 Standard license ($89 value) for Screen Studio. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through October, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["recording","screen","screencast","video","brilliant","central","check","entries","friday","mastodon","schmitz","screen","screenflow","sorry","standard","studio","adjustable","among","appreciated","automatically","background","beautiful","below","beyond","brettterpstra","codes","cooperation","create","cursor","developer","discovered","drawing","ended","enhancing","enter","excited","featured","first","generating","giveaway","giveaways","increases","license","mailing","makes","maybe","movements","names","offer","opinionated","randomly","reading","record","recorder","robot","rsquo","screen","screencast","screencasts","series","signups","skipped","smoothing","smooths","thanks","through","tuned","value","vendors","videos","visit","window","winner","zooming","zooms"]
	},{
		"title": "Web Excursions for September 20, 2024",
		"url": "/2024/09/20/web-excursions-for-september-20-2024/",
		"tags": ["bookmarks"],
		"date": "Sep 20<span>th</span>, 2024",
		"ts": "1726860720",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Usage A schema for CLIs that can be used to generate man pages, Markdown, and shell completion scripts. I might have to start implementing this&hellip; OSStatus — Apple API Errors Look up those inscrutable Apple OS Error codes easily. Agent Mode in Warp AI There are a bunch of caveats to the service, but I love that Warp integrated AI command help in the command line just by recognizing natural language. You no longer have to load a panel or anything, just ask for help at the prompt. Pretty cool. kindaVim Add Vim mode to any macOS text field. Works pretty well! Free trial only allows usage during a certain period of the day, kind of a clever limited trial",
		"keywords": ["apple","codes","error","status","terminal","agent","apple","brett","check","error","errors","markdown","osstatus","setapp","usage","works","access","allows","brettterpstra","brought","bunch","caveats","certain","class","clever","codes","command","easily","excursions","field","height","hellip","holding","https","hundreds","image","implementing","inscrutable","integrated","kindavim","kindavim","language","limited","loading","longer","macos","media","monthly","natural","noscript","original","osstatus","pages","panel","partnership","picture","prompt","recognizing","results","schema","scripts","search","service","setapp","shell","source","srcset","subscription","title","today","trial","uploads","usage","width"]
	},{
		"title": "The Keep It giveaway winners!",
		"url": "/2024/09/20/the-keep-it-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Sep 20<span>th</span>, 2024",
		"ts": "1726855200",
		"summary": "The Keep It giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Keep It is still worth checking out. Especially if you&rsquo;re looking to own your own data (ahem, Evernote) and still have all the necessary tools for organizing, searching, and referencing you documents, notes, web links, images, and files, Keep It is a great tool. You can still save 20% off with the code when purchasing directly! Next up is Screen Studio . Check back every Monday through October, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["notes","organizer","reinvented","software","brett","brett","check","congratulations","dammsh","eloquent","especially","evernote","giveaway","javascript","martinez","mastodon","monday","omniplan","robot","screen","studio","terpstra","trecartin","twitter","announce","background","brettterpstra","campaign","checking","class","confetti","contact","details","didnt","directly","documents","easydns","edition","eloquent","email","ended","files","first","giveaway","giveaways","great","height","highlighter","https","image","images","javascript","keepit","language","links","loading","looking","manytricks","media","medium","necessary","nojack","noscript","nostarch","notes","notifications","omnigroup","omniplan","organizing","original","picture","plaintext","purchasing","received","referencing","reinventedsoftware","rouge","rsquo","screen","searching","series","sorry","source","srcset","store","studio","subscribe","suggest","through","title","tools","ttscoff","twitter","upcoming","uploads","width","winners","worth"]
	},{
		"title": "Keep It giveaway!",
		"url": "/2024/09/16/keep-it-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Sep 16<span>th</span>, 2024",
		"ts": "1726491600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 1-year subscriptions ($40 value each) for Mac and iOS for Keep It. Keep It from Reinvented Software is the perfect tool for people who want to collect notes, documents, web links, and more without locking their data into something like Evernote. If you&rsquo;ve been tempted by something like DEVONthink but the learning curve seems steep, Keep It probably has all the power you need. Tagging, sorting, and advanced searching make it a great tool for keeping track of everything. Keep It is a notebook and organizer, ideal for writing notes, saving web links, storing documents, images or any kind of file, and finding them again. Keep It is the destination for all those things you want to put somewhere, confident you will find them again later. Sign up below to enter. Winners will be randomly drawn on Friday, September 20, at 12pm Central. The drawing is for 3 1-year subscriptions ($40 value each) for Mac and iOS for Keep It, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through October, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["notes","organizer","reinvented","software","central","check","devonthink","entries","evernote","friday","mastodon","reinvented","software","sorry","tagging","winners","advanced","again","among","appreciated","below","beyond","brettterpstra","codes","collect","confident","cooperation","curve","destination","developer","documents","drawing","ended","enter","everything","excited","featured","finding","first","generating","giveaway","giveaways","great","ideal","images","keeping","later","learning","license","links","locking","mailing","maybe","names","notebook","notes","offer","organizer","people","randomly","reading","robot","rsquo","saving","searching","seems","series","signups","skipped","somewhere","sorting","steep","storing","subscriptions","tempted","through","track","tuned","value","vendors","visit","winner","writing"]
	},{
		"title": "Marky is back",
		"url": "/2024/09/15/marky-is-back/",
		"tags": ["markdown","marky"],
		"date": "Sep 15<span>th</span>, 2024",
		"ts": "1726409280",
		"summary": "I finally fixed Marky the Markdownifier. I didn&rsquo;t do any updates to the interface as it is, in my opinion, not too bad. Marky is a tool for turning web pages into Markdown. It now uses Pandoc with GFM formatting. There&rsquo;s an API available for outputting to various formats (including JSON with title, source, rendered content, and Markdown content). See the API section of the Marky page for more info. Hope you find this useful! I&rsquo;ll actually be able to add back my \"add to nvALT\" links now, updated for nvUltra1&hellip; Check Marky out at markdownrules.com. Beta is almost finished, if you still want on board, just email me through the nvUltra site.&nbsp;↩",
		"keywords": ["communication","technical","check","markdown","markdownifier","marky","pandoc","almost","available","backlink","board","class","content","email","endnotes","finally","finished","fixed","fnref","footnote","footnotes","formats","formatting","hellip","https","including","interface","ldquo","links","markdownrules","noteref","nvalt","nvultra","nvultra","outputting","pages","rdquo","rendered","reversefootnote","rsquo","section","source","through","title","turning","updated","updates","useful","various"]
	},{
		"title": "The HoudahGeo giveaway winners!",
		"url": "/2024/09/13/the-houdahgeo-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Sep 13<span>th</span>, 2024",
		"ts": "1726248600",
		"summary": "The HoudahGeo giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but HoudahGeo is still worth checking out. If you&rsquo;re interested in geocoding and geotagging your photos, HoudahGeo is the way to go. Use this link to save 20%, or enter at checkout. Next up is Keep It . Check back every Monday through October, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["geolocation","houdahgeo","burkhardt","check","congratulations","hannam","houdahgeo","mastodon","mattan","menezes","monday","oldakowski","omniplan","screen","stephen","steve","studio","twitter","announce","checking","checkout","details","email","ended","enter","geocoding","geotagging","giveaway","giveaways","interested","notifications","photos","received","rsquo","series","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "Cookiecutter: a Planter alternative",
		"url": "/2024/09/13/cookiecutter-a-planter-alternative/",
		"tags": ["planter"],
		"date": "Sep 13<span>th</span>, 2024",
		"ts": "1726244400",
		"summary": "Shorly after publishing Planter, user cavalierex brought Cookiecutter to my attention on the forum. It appears to be a complete replacement and is far more mature than Planter. I don&rsquo;t regret making Planter &mdash; it fits my own needs perfectly. If I&rsquo;d known about cookiecutter before starting, though, I probably wouldn&rsquo;t have bothered reinventing the wheel. It was still fun to code Planter. Cookiecutter is so close in functionality that I thought it would be worth sharing. If Planter works well for you, great, but if you want an alternative, check it out",
		"keywords": ["cookiecutter","project","template","cookiecutter","planter","shorly","appears","before","bothered","brought","cavalierex","check","close","cookiecutter","forum","functionality","great","making","mature","mdash","needs","perfectly","publishing","regret","reinventing","replacement","rsquo","sharing","starting","thought","wheel","works","worth","wouldn"]
	},{
		"title": "HoudahGeo giveaway!",
		"url": "/2024/09/09/houdahgeo-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Sep 9<span>th</span>, 2024",
		"ts": "1725886800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($39 value each) for HoudahGeo. Have you ever wanted a fully-fledged interface for automatically geocoding and geotagging your photo collection? HoudahGeo makes it easy to add locations in Apple Photos, iPhoto, and Aperture, and can write tags to the original image files. This giveaway is for version 6, but version 7 is in the works and winners will be upgraded when it&rsquo;s released. Use HoudahGeo to geocode and geotag your photos. \"Pin\" photos to the exact places where they were taken. HoudahGeo stores latitude, longitude and altitude as geotags right within the image file. Just like a GPS-enabled camera. HoudahGeo supports many methods of geocoding, ranging from automatic to manual. Use a GPS track log, reference photos taken with iPhone, or pick locations on the built-in map. Sign up below to enter. Winners will be randomly drawn on Friday, September 13, at 12pm Central. The drawing is for 5 licenses ($39 value each) for HoudahGeo, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through October, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["geolocation","houdahgeo","aperture","apple","central","check","entries","friday","houdahgeo","mastodon","photos","sorry","winners","altitude","among","appreciated","automatic","automatically","below","beyond","brettterpstra","built","camera","codes","collection","cooperation","developer","drawing","enabled","ended","enter","exact","excited","featured","files","first","fledged","fully","generating","geocode","geocoding","geotag","geotagging","geotags","giveaway","giveaways","iphone","iphoto","image","interface","latitude","license","licenses","locations","longitude","mailing","makes","manual","maybe","methods","names","offer","original","photo","photos","places","randomly","ranging","reading","released","right","robot","rsquo","series","signups","skipped","stores","supports","taken","through","track","tuned","upgraded","value","vendors","version","visit","wanted","where","winner","winners","within","works","write"]
	},{
		"title": "Welcome to the lab 4.0",
		"url": "/2024/09/08/welcome-to-the-lab-4-dot-0/",
		"tags": ["design","webdesign"],
		"date": "Sep 8<span>th</span>, 2024",
		"ts": "1725802920",
		"summary": "I did a redesign of this site last night. I hope you like it. It&rsquo;s heavily inspired by the iA blog. Shamelessly inspired, I guess. But it was a fun exercise to revamp the Jekyll setup, which took a ton of work. I do not love templating in Liquid, but I do like writing filters in Ruby. I think it came out pretty good. I do this every few years when I get bored. This site has been running since 2010, and the Circle Six Blog before that. Gosh I&rsquo;ve been doing this a long time&hellip; Unfortunately the embedded comments are broken at the moment, so if you want to offer feedback, please join me in the forum",
		"keywords": ["brettterpstra","redesign","circle","jekyll","liquid","shamelessly","unfortunately","before","bored","broken","comments","doing","embedded","exercise","feedback","filters","forum","guess","heavily","hellip","inspired","night","offer","redesign","revamp","rsquo","running","setup","since","templating","think","writing","years"]
	},{
		"title": "The Morpho Converter Pro giveaway winners!",
		"url": "/2024/09/06/the-morpho-converter-pro-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Sep 6<span>th</span>, 2024",
		"ts": "1725642600",
		"summary": "The Morpho Converter Pro giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Morpho Converter Pro is still worth checking out. All your conversions in one place! Next up is HoudahGeo . Check back every Monday through October, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["conversion","morpho","units","brett","carley","check","congratulations","converter","galassi","giulio","halvorson","houdahgeo","irmak","isaac","knight","mastodon","monday","morpho","omniplan","peter","screen","studio","terpstra","twitter","announce","brettterpstra","campaign","checking","contact","conversions","details","didnt","easydns","email","ended","first","giveaway","giveaways","houdah","houdahgeo","https","keepit","manytricks","medium","nojack","notifications","omnigroup","omniplan","received","reinventedsoftware","rsquo","screen","series","sorry","source","studio","subscribe","suggest","thinktapwork","through","ttscoff","twitter","upcoming","winners","worth"]
	},{
		"title": "Planter 3.0",
		"url": "/2024/09/02/planter-3-dot-0/",
		"tags": ["planter","scripting"],
		"date": "Sep 2<span>nd</span>, 2024",
		"ts": "1725284220",
		"summary": "Years ago (12!) I made a script called Planter that would generate directory and file structures based on an indented template. I decided to reimagine the whole thing and am happy to release Planter 3 today. Instead of relying on a single template file, Planter now expects a template directory with all of the subdirectories and files you want to include already existing. To make this work, the template variable system has been completely reworked. It now supports named keys, prompts for values on the command line, and can even handle if/then logic and multiple choice variables. Template variables can be applied to filenames (including if/then logic) and within any type of text-based file (including XML, RTF, JSON, etc., and Apple Binary PLIST will be converted automatically). This means you can template your source code, your notes, even your Mindnode mind maps, rich text notes, and Scrivener documents. I&rsquo;m not going to document the whole thing here, as I&rsquo;ve written a pretty good README for the project. If this is of interest to you, let me know about anything that&rsquo;s confusing in the documentation. I will note that because of its interactive nature on the command line, it&rsquo;s a bit more difficult to incorporate into something like a LaunchBar or Alfred workflow. But not impossible, as values can be passed as arguments, so if your automation handles the interaction for filling in the variables, you can easily call the script. It&rsquo;s also now a Ruby gem, which means you can&rsquo;t easily embed the whole script and would have to rely on it being installed on the user&rsquo;s system. If you regularly create projects that follow a similar directory/file structure, Planter will save you a ton of time. Check it out. If you have ideas or need support, please use the Forum. I look forward to hearing from you",
		"keywords": ["directory","launchbar","alfred","apple","binary","check","forum","launchbar","mindnode","plist","planter","readme","scrivener","template","years","applied","arguments","automatically","automation","based","because","called","choice","command","completely","confusing","converted","create","decided","difficult","directory","document","documents","easily","embed","expects","filenames","files","filling","going","handle","handles","happy","hearing","ideas","impossible","including","incorporate","indented","installed","interaction","interactive","interest","logic","multiple","named","nature","notes","passed","project","projects","prompts","regularly","reimagine","release","relying","reworked","rsquo","script","similar","single","source","structure","structures","subdirectories","support","supports","system","template","today","values","variable","variables","whole","within","workflow","written"]
	},{
		"title": "Morpho Converter Pro giveaway!",
		"url": "/2024/09/02/morpho-converter-pro-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Sep 2<span>nd</span>, 2024",
		"ts": "1725282000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 lifetime Pro licenses ($19.99 value each) for Morpho Converter Pro. Morpho is an app for Mac, iOS, and Apple Watch that makes converting literally any number to any other unit possible. Miles to kilometers? Grams to ounces? USD to HKD? Anything you need to convert, Morpho is there for you, on your phone, in your menu bar, even on your watch. Morpho is a fast and elegant, travel-focused unit and currency converter app for iPhone, iPad, Mac, and Apple Watch. In addition to providing instant conversions for your favorite units, it also includes helpful information for travel to 256 countries and regions. Sign up below to enter. Winners will be randomly drawn on Friday, September 06, at 12pm Central. The drawing is for 5 lifetime Pro licenses ($19.99 value each) for Morpho Converter Pro, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through October, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["conversion","morpho","units","apple","central","check","converter","entries","friday","grams","mastodon","miles","morpho","sorry","watch","winners","among","appreciated","below","beyond","brettterpstra","codes","conversions","convert","converter","converting","cooperation","countries","currency","developer","drawing","elegant","ended","enter","excited","favorite","featured","first","focused","generating","giveaway","giveaways","helpful","iphone","includes","information","instant","kilometers","license","licenses","lifetime","literally","mailing","makes","maybe","names","offer","ounces","phone","possible","providing","randomly","reading","regions","robot","rsquo","series","signups","skipped","through","travel","tuned","units","value","vendors","visit","watch","winner"]
	},{
		"title": "Updated: generate slick changelogs from Git commits",
		"url": "/2024/08/31/updated-generate-slick-changelogs-from-git-commits/",
		"tags": ["markdown","scripting","tagging"],
		"date": "Aug 31<span>st</span>, 2024",
		"ts": "1725130920",
		"summary": "7 years ago I wrote about a script I was using to generate changelogs for Marked. Since then I&rsquo;ve continued updating the script to work with just about all of my projects, from Xcode projects to Ruby gems to scripts that just have a VERSION file in the same directory. It can output a few different formats of changelog to accommodate all of my different documentation formats. So I&rsquo;m posting it again. Since it&rsquo;s unlikely anyone remembers, this script uses Git tags to determine what commits have been made since the last release. This works well with git-flow, but any setup that creates tagged releases will work. It parses commit messages for lines like , and it now works with a more \"tag-like\" syntax: . It gathers all of these lines from the commit messages and outputs a Markdown-formatted changelog, ready for release notes or website posting. It&rsquo;s simple yet highly effective. Any time I make a change I want to include in the release notes, I just make sure to include a tagged line in the commit message. It works with commit subjects as well as commit notes. Then, when it&rsquo;s time to release, I just run and get my output for sharing. It can also update a CHANGELOG.md file by running . It detects the format of the file and adds appropriately-formatted notes to the file, recognizing if there&rsquo;s already an entry for the current version number and replacing it. Some of the customizations are specific to the formatting I use for Bunch notes, which include syntax for custom Jekyll plugins for icons and availability. These won&rsquo;t be of use to anyone else, but unless your directory structure happens to exactly match the one I use for Bunch, or you use the flag, you&rsquo;ll never see those. But if you want to edit the script to fit your specific needs, you can see how it&rsquo;s done. Eventually I&rsquo;ll probably generalize this and make it work with templates and a config file with regexes for matching types and formats, but for now it&rsquo;s just open to your hacking. This script has been a huge timesaver for me and has resulted in very complete release notes and changelogs I can be proud of. I hope it does the same for you. @change, @changed @breaking, @deprecated @rem, @removed @fix, @fixed @imp, @improved, @improvement @add, @added, @new All of these can be in the format or . The first letter of the description will be capitalized when the release notes are rendered. You can also use to pop up&hellip;",
		"keywords": ["change","notes","release","software","versioning","again","based","bunch","changelog","eventually","github","jekyll","markdown","marked","stdin","since","version","xcode","accepts","accommodate","added","again","allowing","anyone","appropriately","automatically","availability","available","based","breaking","capitalized","change","changed","changelog","changelogs","changes","check","combination","command","comments","commit","commits","config","continued","creates","creating","custom","customizations","deprecated","derive","description","detect","detects","different","directory","easily","effective","entry","first","fixed","format","formats","formatted","formatting","gathers","generalize","generators","hacked","hacking","happens","highly","icons","improved","improvement","informative","input","letter","making","match","matching","message","messages","needs","notes","optional","others","output","outputs","package","parses","perfectly","personal","plugins","posting","project","projects","proud","quick","ready","recognizing","regexes","release","releases","remembers","removed","rendered","replacing","resulted","rsquo","running","script","scripts","search","selection","setup","sharing","simple","since","specific","structure","subjects","syntax","tagged","templates","timesaver","types","unlikely","updated","updating","using","version","website","works","wrote","years"]
	},{
		"title": "The Obsidian Sync giveaway winners!",
		"url": "/2024/08/30/the-obsidian-sync-giveaway-winners/",
		"tags": ["giveaway","obsidian"],
		"date": "Aug 30<span>th</span>, 2024",
		"ts": "1725040800",
		"summary": "The Obsidian Sync giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Obsidian Sync is still worth checking out. Get all of your notes, everywhere, and sync with your team! Next up is Morpho Converter Pro . Check back every Monday through October, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["macos","notes","obsidian","check","congratulations","converter","donovan","florian","graessle","houdahgeo","kuhle","mastodon","monday","morpho","morris","obsidian","omniplan","screen","stefan","studio","twitter","wallace","watts","announce","checking","details","email","ended","everywhere","giveaway","giveaways","notes","notifications","received","rsquo","series","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "Obsidian Sync giveaway!",
		"url": "/2024/08/26/obsidian-sync-giveaway/",
		"tags": ["giveaway","macos","obsidian"],
		"date": "Aug 26<span>th</span>, 2024",
		"ts": "1724699520",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 1-year subscriptions ($96 value each) for Obsidian Sync. Obisidan is an amazing tool that&rsquo;s free to use, but if you want to sync and share your vaults, settings, and more, you&rsquo;ll want to upgrade with Obsidian Sync. This giveaway is for a free year! Sign up below to enter. Winners will be randomly drawn on Friday, August 30, at 12pm Central. The drawing is for 5 1-year subscriptions ($96 value each) for Obsidian Sync, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through October, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["macos","notes","obsidian","central","check","entries","friday","mastodon","obisidan","obsidian","sorry","winners","amazing","among","appreciated","background","below","beyond","brettterpstra","codes","cooperation","developer","drawing","effortlessly","ended","enter","excited","featured","first","generating","giveaway","giveaways","license","mailing","maybe","names","notes","offer","privately","randomly","reading","robot","rsquo","series","settings","share","signups","skipped","subscriptions","synchronized","through","tuned","upgrade","value","vaults","vendors","visit","winner","works"]
	},{
		"title": "The iStat Menus giveaway winners!",
		"url": "/2024/08/23/the-istat-menus-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Aug 23<span>rd</span>, 2024",
		"ts": "1724433300",
		"summary": "The iStat Menus giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but iStat Menus is still worth checking out. Get all the info about your Mac in one place! By the way, iStat Menus is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Obsidian Sync . Check back every Monday through October, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["istat","macos","menus","stats","bhaskar","check","congratulations","converter","houdahgeo","johan","leighton","mastodon","menus","monday","morpho","obsidian","price","robert","romin","screen","setapp","studio","twitter","yinan","amazing","announce","available","checking","details","email","ended","giveaway","giveaways","hundreds","istat","notifications","received","rsquo","series","sorry","subscription","suggest","through","upcoming","winners","worth"]
	},{
		"title": "iStat Menus giveaway!",
		"url": "/2024/08/19/istat-menus-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Aug 19<span>th</span>, 2024",
		"ts": "1724072400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($11.99 value each) for iStat Menus. iStat Menus puts a bevy of system monitoring widgets right in your menu bar. Weather, CPU and GPU usage, Memory usage, date and time, network activity/bandwidth, battery and power, and disk usage. Any (or all) available at a glance, and detailed info on each is just a click away. The ultimate system monitor. What’s new? Everything. iStat Menus 7 is a full reboot, sporting an all-new design with hundreds of big and small improvements. iStat Menus is unmatched in efficiency, and is the most CPU-friendly system monitoring app. Sign up below to enter. Winners will be randomly drawn on Friday, August 23, at 12pm Central. The drawing is for 5 licenses ($11.99 value each) for iStat Menus, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["istat","macos","menus","stats","brettterpstra","central","check","entries","everything","friday","giveaways","mastodon","memory","menus","sorry","upcoming","weather","winners","activity","among","appreciated","available","bandwidth","battery","below","beyond","bjango","blockquote","brettterpstra","class","click","codes","contact","cooperation","design","detailed","developer","drawing","easydns","efficiency","ended","enter","excited","featured","first","friendly","generating","giveaway","giveaways","glance","height","https","hundreds","istat","image","improvements","istat","istatmenus","license","licenses","loading","mailing","maybe","media","menus","monitor","monitoring","names","network","nojack","noscript","offer","original","picture","randomly","reading","reboot","right","robot","rsquo","screenshot","series","signups","skipped","small","sorry","source","sporting","srcset","strong","subscribe","system","through","title","ttscoff","tuned","ultimate","unmatched","upcoming","uploads","usage","value","vendors","visit","widgets","width","winner"]
	},{
		"title": "The SoundSource giveaway winners!",
		"url": "/2024/08/16/the-soundsource-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Aug 16<span>th</span>, 2024",
		"ts": "1723853400",
		"summary": "The SoundSource giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but SoundSource is still worth checking out. If you have multiple sound sources/outputs, you need SoundSource. It makes controlling where apps send and recieve audio a powerful but simple affair. You can still save 15% on a purchase with the code . Next up is iStat Menus . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["audio","routing","soundsource","check","congratulations","converter","houdahgeo","liddell","mastodon","menus","monday","morpho","obsidian","screen","soundsource","stevens","stuart","studio","twitter","wright","affair","announce","audio","checking","controlling","details","email","ended","giveaway","giveaways","istat","makes","multiple","notifications","outputs","powerful","received","recieve","rsquo","series","simple","sorry","sound","sources","suggest","through","upcoming","where","winners","worth"]
	},{
		"title": "Relaunched T-shirts for The Lab and Rock Scissors",
		"url": "/2024/08/14/relaunched-t-shirts-for-the-lab-and-rock-scissors/",
		"tags": ["design"],
		"date": "Aug 14<span>th</span>, 2024",
		"ts": "1723653480",
		"summary": "I had let the original TeeSpring stores I had set up languish, and TeeSpring changed a bunch of stuff that made all of my listings invalid. So I&rsquo;ve relaunched the storefronts with the original designs, plus some new ones. The Lab has some new logo designs, plus the \"classic\" ones. Not to be vain, but I&rsquo;d love to see the lab out there once again. I&rsquo;ve also updated the design with a new design, which makes for a great, though minimalist, coffee mug. Gruber took issue with the BOLD version from a technical standpoint, so the STRONG version should satisfy the requirements. The designs are available as various clothing items (men&rsquo;s shirts, women&rsquo;s shirts, some hoodies), and coffee mugs/stickers. Let me know if there&rsquo;s something you want but don&rsquo;t see. The Rock Scissors store offers some of the old Rock and Roll-inspired designs, plus a new one I like: The hope you guess my name shirt as a tribute to the Stones. My favorite shirt, the tribute to Black Flag, The Ramones, and The Sex Pistols refuses to list, but I have a customer support query in and hope that one shows up soon. I don&rsquo;t make much profit off this stuff, it&rsquo;s more of a labor of love, but it&rsquo;s definitely a way of supporting my work. Please enjoy",
		"keywords": ["coffee","black","gruber","pistols","ramones","strong","scissors","stones","teespring","again","available","bunch","changed","classic","clothing","coffee","customer","definitely","design","designs","enjoy","favorite","great","guess","hoodies","inspired","invalid","items","labor","languish","listings","makes","minimalist","offers","original","profit","query","refuses","relaunched","rsquo","satisfy","shirt","shirts","shows","standpoint","stickers","store","storefronts","stores","stuff","support","supporting","technical","tribute","updated","various","version","women"]
	},{
		"title": "SoundSource giveaway!",
		"url": "/2024/08/12/soundsource-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Aug 12<span>th</span>, 2024",
		"ts": "1723467600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($39 value each) for SoundSource. SoundSource lets you define audio inputs and outputs on a per-app basis, plus apply effects to different channels. It puts control of all of your system audio devices in your menu bar, just a click away (it even has keyboard shortcuts). Fast Access to System Devices: Control the settings for your Mac&rsquo;s Output, Input, and Sound Effects audio devices right from your menu bar. Per-Application Audio Control: Change the volume of any app relative to others, and send individual apps to different audio outputs. Add Effects: Make any audio sound great, with powerful built-in effects, as well as advanced Audio Unit support. Sign up below to enter. Winners will be randomly drawn on Friday, August 16, at 12pm Central. The drawing is for 3 licenses ($39 value each) for SoundSource, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["audio","routing","soundsource","access","audio","central","change","check","control","devices","effects","entries","friday","input","mastodon","output","sorry","sound","soundsource","system","winners","advanced","among","apply","appreciated","audio","basis","below","beyond","brettterpstra","built","channels","click","codes","control","cooperation","define","developer","devices","different","drawing","effects","ended","enter","excited","featured","first","generating","giveaway","giveaways","great","individual","inputs","keyboard","license","licenses","mailing","maybe","names","offer","others","outputs","powerful","randomly","reading","relative","right","robot","rsquo","series","settings","shortcuts","signups","skipped","sound","support","system","through","tuned","value","vendors","visit","volume","winner"]
	},{
		"title": "Add SearchLink plugins using any programming language",
		"url": "/2024/08/10/add-searchlink-plugins-using-any-programming-language/",
		"tags": ["plugin","searchlink"],
		"date": "Aug 10<span>th</span>, 2024",
		"ts": "1723315080",
		"summary": "Last night I had a dream that someone had asked if they could write SearchLink plugins in Python. The answer was no, but it got me thinking. To be clear, no one has asked for this, but I did some Saturday morning coding anyway. You can now write a script in any language, and as long as it returns YAML or JSON with appropriate keys, it will work as a SearchLink plugin. So anything you can get results from in your favorite language, you can add to SearchLink. Each plugin requires a config file, which can be YAML or JSON. Details are now all in the Plugins wiki page. I also added a new feature for processing bare URLs in a document or selection. If is set in config or at the top of a file/selection, any URLs that are not self-linked (wrapped in angle brackets) or part of a Markdown link (in parenthesis or after \": \") will be turned into full Markdown links with page titles as link text. It&rsquo;s perfect for gathering Podcast show notes or blog link posts when you just have a list of URLs. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["configuration","markdown","changelog","details","donate","download","markdown","plugins","podcast","published","python","saturday","searchlink","updated","added","angle","answer","anyway","asked","brackets","clear","coding","config","document","dream","editor","favorite","feature","gathering","hellip","language","leaving","linked","links","morning","night","notes","parenthesis","plugin","plugins","posts","processing","requires","results","returns","rsquo","script","searches","selection","thinking","titles","turned","wrapped","write"]
	},{
		"title": "SearchLink with improved bookmark and history searching",
		"url": "/2024/08/09/searchlink-with-improved-bookmark-and-history-searching/",
		"tags": ["browser","history","markdown","search","searchlink"],
		"date": "Aug 9<span>th</span>, 2024",
		"ts": "1723225620",
		"summary": "As many of these updates seem to, this one started with a bug report from my friend Jay Miller, which caused me to run the test suite on SearchLink and discover a few things had broken since I last looked at it. So you get an update. Aside from fixing bugs that had cropped up, I spent some time on the various browser searching tools. SearchLink can scan your browser bookmarks and browsing history to find the most relevant link for a search term. It works with Arc, Chrome, Firefox, Edge, and Safari. And it&rsquo;s pretty cool for grabbing links to things you&rsquo;ve already visited or bookmarked. Now these tools also work with profiles in most browsers, scanning all available profiles for matches. You can&rsquo;t currently specify a single profile, but if a bookmark or history item exists in any of your profiles, it will be found. I also overhauled the Arc support, as the bookmark file format has changed since I first implemented it, diverging from standard Chromium fare. Should work fine now. Not a major update, but it&rsquo;s worth mentioning. If you write Markdown and haven&rsquo;t tried SearchLink, I highly recommend taking a look! SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["firefox","safari","aside","changelog","chrome","chromium","donate","download","firefox","markdown","miller","published","safari","searchlink","updated","available","below","bookmark","bookmarked","bookmarks","broken","browser","browsers","browsing","caused","changed","cropped","discover","diverging","editor","exists","first","fixing","format","found","friend","grabbing","haven","hellip","highly","history","implemented","latest","leaving","links","looked","major","matches","mentioning","overhauled","profile","profiles","recommend","relevant","report","rsquo","scanning","search","searches","searching","since","single","specify","spent","standard","started","suite","support","taking","tools","tried","updates","various","version","visited","works","worth","write"]
	},{
		"title": "The TextBuddy giveaway winners!",
		"url": "/2024/08/09/the-textbuddy-giveaway-winners/",
		"tags": ["email","giveaway"],
		"date": "Aug 9<span>th</span>, 2024",
		"ts": "1723224180",
		"summary": "The TextBuddy giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but TextBuddy is still worth checking out. No matter what you&rsquo;re doing with text, from coding to composing to emailing, TextBuddy has tools that will make your life easier. You can still save 20% on a purchase using the coupon when purchasing. Next up is SoundSource . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["manipulation","processing","textbuddy","ahles","btgiveaway","check","congratulations","converter","david","davis","giveaway","houdahgeo","kovanen","krenz","lowry","mastodon","menus","mijalche","monday","morpho","nieporent","obsidian","patrick","peter","philip","robot","santa","soundsource","stephen","textbuddy","twitter","versteegen","announce","background","bjango","brettterpstra","checking","class","coding","composing","confetti","contact","coupon","details","didnt","doing","easier","easydns","email","emailing","ended","giveaway","giveaways","height","highlighter","houdah","houdahgeo","https","istat","image","istatmenus","keepit","language","loading","media","nojack","noscript","notifications","obsidian","original","picture","plaintext","purchasing","received","reinventedsoftware","retina","rogueamoeba","rouge","rsquo","series","sorry","soundsource","source","srcset","studio","subscribe","suggest","textbuddy","thinktapwork","through","title","tools","ttscoff","twitter","upcoming","uploads","using","verschooten","width","winners","worth"]
	},{
		"title": "Speed up development with Howzit templates",
		"url": "/2024/08/05/speed-up-development-with-howzit-templates/",
		"tags": ["developer","editor","howzit","markdown","productivity","sublimetext"],
		"date": "Aug 5<span>th</span>, 2024",
		"ts": "1722886500",
		"summary": "Ok, so you may or may not have heard of my Howzit project, so I&rsquo;ll begin by recapping. \"Howzit\" is a contraction of \"how does it\" that allows you to query any project with commands like or and get documentation, as well as automatically execute the necessary steps for a task. I use it almost every day and it has saved me a crazy amount of time over the years, especially in picking up on projects I haven&rsquo;t touched for a while. The heart of the system is a \"buildnotes.md\" file located in the root of your project. This is a Markdown file where you describe each topic, e.g. , listing out any pertinent info. Just stop and think \"if I come back to this a year from now, what would I need to know?\" You can include \"directives\" that can do things like copy strings to your clipboard or execute code or commands. If you just run it will show you your documentation, and if you run , it will execute any directives in the topic. Ok, so on to templates. I&rsquo;ve added a lot of functionality to Howzit over the years, but templates have turned out to be my favorite extension. Templates allow you to store reusable tasks in a single file, and then include all of those tasks with a single line at the top of a build notes file. Everything discussed in this post can be found in the Howzit wiki, specifically the Templates and Metadata page. Templates are stored in and are just Markdown files formatted like any file. Markdown headers for topics, and they can contain text, lists, tables, and, most importantly for my purposes, directives. They&rsquo;re given a short filename like or and saved to the aforementioned directory. Then, in any build notes file, you can add a line at the top like: All of the tasks in those templates are now automatically included in your build notes without any additional documentation. If you frequently use the same tools and structures for projects of the same kind, this greatly reduces the time it takes to document while minimizing errors. For example, in many of my templates there&rsquo;s a topic called \"Deploy.\" This topic contains the steps necessary to publish a project, specific to the type of project it is. I have one for Swift command line tools, one for Ruby gems, one for Sparkle-based Mac apps, etc. The benefit of always naming the topic \"Deploy\" is that in any project I can just run and deploy that project without looking anything up or remembering multiple steps1. You can also specify variables in templates, which&hellip;",
		"keywords": ["changelog","&#39;home&#39;","banner","changelog","check","deploy","everything","github","howzit","jekyll","markdown","metadata","modified","project","readme","readmes","sparkle","spell","spellcheck","sublime","swift","topic","templates","users","action","actions","added","aforementioned","allow","allowing","allows","almost","among","amount","aspell","associated","automatically","backlink","backup","based","begin","benefit","between","binbundle","brettterpstra","build","buildnotes","built","cached","called","changed","changelog","changelogs","changes","check","class","clipboard","coffee","command","commands","compiling","concat","config","contain","containing","contains","contraction","crazy","create","creates","default","defaulting","define","defined","deploy","describe","developer","development","different","directives","directory","dirty","discussed","distributable","document","donate","editor","endnotes","errors","especially","example","execute","extension","favorite","filename","files","fnref","folder","footnote","footnotes","formatted","found","functionality","generates","github","greatly","handle","haven","headers","heard","heart","height","hellip","highlight","highlighter","howzit","howzitdeploy","https","image","importantly","included","index","individual","language","ldquo","listing","lists","loading","located","location","longer","looking","markdown","marked","media","metadata","minimizing","modified","moving","multiple","naming","necessary","noscript","noteref","notes","offer","optional","original","output","partial","personal","pertinent","picking","picture","plaintext","porcelain","possible","project","projects","publish","published","pushing","query","rdquo","recapping","reduces","releases","remember","remembering","required","reusable","reversefootnote","rouge","rsquo","running","saved","saves","scripts","short","simpler","single","source","special","specific","specifically","specify","specifying","spellcheck","spellchecked","spellchecking","spelling","split","srcset","staged","status","steps","store","stored","strings","strip","structures"]
	},{
		"title": "TextBuddy giveaway!",
		"url": "/2024/08/05/textbuddy-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Aug 5<span>th</span>, 2024",
		"ts": "1722862800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 10 licenses ($35 value each) for TextBuddy. For anybody who deals with text, whether you&rsquo;re composing, coding, or just emailing, TextBuddy is an indispensible tool that makes transforming and working with text a breeze. It&rsquo;s fully extensible, too and you can extend it to perform custom actions in addition to its myriad built-in options. Use it with ChatGPT, let it format and preview your Markdown, and even integrate your favorite Quick Actions into it. TextBuddy is a Mac app for manipulating text. A Swiss Army knife for plain text that is there when you need it and hidden when you don&rsquo;t. Sign up below to enter. Winners will be randomly drawn on Friday, August 09, at 12pm Central. The drawing is for 10 licenses ($35 value each) for TextBuddy, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["manipulation","processing","textbuddy","actions","central","chatgpt","check","entries","friday","markdown","mastodon","quick","sorry","swiss","textbuddy","winners","actions","among","anybody","appreciated","below","beyond","breeze","brettterpstra","built","codes","coding","composing","cooperation","custom","deals","developer","drawing","emailing","ended","enter","excited","extend","extensible","favorite","featured","first","format","fully","generating","giveaway","giveaways","hidden","indispensible","integrate","knife","license","licenses","mailing","makes","manipulating","maybe","myriad","names","offer","options","preview","randomly","reading","robot","rsquo","series","signups","skipped","through","transforming","tuned","value","vendors","visit","winner","working"]
	},{
		"title": "The PopClip giveaway winners!",
		"url": "/2024/08/02/the-popclip-giveaway-winners/",
		"tags": ["giveaway","popclip"],
		"date": "Aug 2<span>nd</span>, 2024",
		"ts": "1722621600",
		"summary": "The PopClip giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but PopClip is still worth checking out. It will quickly become a utility you use every day! You can still save 20% off a purchase using the coupon when you go buy PopClip. By the way, PopClip is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is TextBuddy . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["macos","popclip","utility","andrew","buckingham","check","congratulations","converter","curtis","houdahgeo","kolstad","mastodon","mccoy","menus","monday","morgan","morpho","obsidian","peter","popclip","setapp","soundsource","spendlove","tansley","textbuddy","twitter","amazing","announce","available","checking","coupon","details","email","ended","giveaway","giveaways","hundreds","istat","notifications","quickly","received","rsquo","series","sorry","subscription","suggest","through","upcoming","using","utility","winners","worth"]
	},{
		"title": "Binbundle: A gem for saving and restoring gem binaries",
		"url": "/2024/08/02/binbundle-a-gem-for-restoring-gem-binaries/",
		"tags": ["binbundle"],
		"date": "Aug 2<span>nd</span>, 2024",
		"ts": "1722614760",
		"summary": "I published a script yesterday for creating a \"bundle file\" of all binaries (executables) on your system that rely on Rubygems to install. These aren&rsquo;t covered by Homebrew&rsquo;s bundle command and I wanted easy system restore via my dotfiles setup. But&hellip; because it deals specifically with gems, I figured why not make it a gem and make it easy to install? So I present Binbundle, the same script as yesterday, but elaborated on and in gem form. See the project page for details on installation and usage. This project combined with Dotbot makes for a very easy way to restore all of those binaries that Homebrew misses",
		"keywords": ["binaries","bundle","executables","homebrew","rubygems","binbundle","dotbot","homebrew","rubygems","because","binaries","bundle","command","covered","creating","deals","details","dotfiles","elaborated","executables","figured","hellip","install","installation","makes","misses","project","published","restore","rsquo","script","setup","specifically","system","usage","wanted","yesterday"]
	},{
		"title": "Easily save and restore all of your gem executables",
		"url": "/2024/08/01/easily-save-and-restore-gem-executables/",
		"tags": ["bundle","homebrew","scripting"],
		"date": "Aug 1<span>st</span>, 2024",
		"ts": "1722539820",
		"summary": "I&rsquo;ve always liked Homebrew&rsquo;s bundle command. You can save a snapshot of everything you&rsquo;ve installed with Homebrew, and then reinstall the snapshot on a new system. I also like Ruby&rsquo;s Bundler, which lets you save all of the gems needed by an application and then install them easily with . However, I don&rsquo;t like installing Ruby gems with Homebrew, mostly because brew-gem isn&rsquo;t up-to-date and barely functions these days. I install all of my gems with just . Because of this, binaries that are installed by gems aren&rsquo;t included when I do a . And Ruby&rsquo;s bundler is project-specific. So I wrote a script that will save a snapshot of every gem that has a binary installed on your system, and then do a on all of them when setting up a new system. I gave it a decent README, so if this is of interest, go check it out. If you use any of my tools like or , you&rsquo;ve probably installed those with and they won&rsquo;t be included if you try to restore using Homebrew (or dot files, etc.). So do yourself a favor and create a snapshot! Please share issues and suggestions using the Issues section of the script&rsquo;s GitHub home",
		"keywords": ["bundler","homebrew","installation","because","bundler","github","homebrew","however","issues","readme","barely","because","binaries","binary","bundle","bundler","check","command","create","decent","easily","everything","favor","files","functions","included","install","installed","installing","interest","issues","liked","mostly","needed","project","reinstall","restore","rsquo","script","section","setting","share","snapshot","specific","suggestions","system","tools","using","wrote"]
	},{
		"title": "PopClip giveaway!",
		"url": "/2024/07/29/popclip-giveaway/",
		"tags": ["giveaway","macos","popclip"],
		"date": "Jul 29<span>th</span>, 2024",
		"ts": "1722258000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($24 value each) for PopClip. You know how when you select text on iOS, you get a little popup with operations like copy and paste? What if you could have that on your Mac? And if the menu options that show were customizable and powerful? That&rsquo;s what PopClip does. I use it daily. Whenever I select text on a Mac and it doesn&rsquo;t pop up offering me relevant actions for the type of text selected, it feels like something&rsquo;s missing. PopClip&rsquo;s actions range from simple copy-paste and web searches to complex tasks such as translating text. Using extensions, you can add more actions to PopClip to adapt it to your needs. Think of PopClip as a context-aware assistant that provides a set of tools you can use instantly in any app. Sign up below to enter. Winners will be randomly drawn on Friday, August 02, at 12pm Central. The drawing is for 5 licenses ($24 value each) for PopClip, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["macos","popclip","utility","central","check","entries","friday","mastodon","popclip","sorry","think","using","whenever","winners","actions","adapt","among","appreciated","assistant","aware","below","beyond","brettterpstra","codes","complex","context","cooperation","customizable","daily","developer","doesn","drawing","ended","enter","excited","extensions","featured","feels","first","generating","giveaway","giveaways","instantly","license","licenses","little","mailing","maybe","missing","names","needs","offer","offering","operations","options","paste","popup","powerful","provides","randomly","range","reading","relevant","robot","rsquo","searches","selected","series","signups","simple","skipped","tasks","through","tools","translating","tuned","value","vendors","visit","winner"]
	},{
		"title": "The Backblaze giveaway winner!",
		"url": "/2024/07/26/the-backblaze-giveaway-winner/",
		"tags": ["giveaway"],
		"date": "Jul 26<span>th</span>, 2024",
		"ts": "1722016800",
		"summary": "The Backblaze giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Backblaze is still worth checking out. If you live in a digital world, you need a cloud backup. Backblaze is the easiest, most affordable way to secure peace of mind. Next up is PopClip . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["backblaze","backup","protection","backblaze","check","congratulations","converter","diana","giveaway","mastodon","menus","monday","morpho","obsidian","popclip","robot","salda","soundsource","textbuddy","twitter","affordable","announce","backblaze","background","backup","bjango","brettterpstra","checking","class","cloud","confetti","contact","details","didnt","digital","easiest","easydns","email","ended","giveaway","giveaways","height","https","istat","image","istatmenus","loading","media","nojack","noscript","notifications","obsidian","original","peace","picture","popclip","received","retina","rogueamoeba","rsquo","secure","series","sorry","soundsource","source","srcset","studio","subscribe","suggest","terpstra","textbuddy","thinktapwork","through","title","ttscoff","twitter","upcoming","uploads","width","winner","winners","world","worth"]
	},{
		"title": "Backblaze giveaway!",
		"url": "/2024/07/22/backblaze-giveaway/",
		"tags": ["backup","giveaway","macos"],
		"date": "Jul 22<span>nd</span>, 2024",
		"ts": "1721653200",
		"summary": "I&rsquo;m excited to offer the next giveaway, a 1-year subscription ($99.99 value) for Backblaze. I use a 3-tier backup system: local clones, Time Machine, and Backblaze for cloud backup. Backblaze is the easiest, most affordable way to get an offsite backup of all your data, with versioning and easy restore when things go wrong. Backblaze makes backing up and accessing your data astonishingly easy. For just $9/month, you can backup all of your personal and business data. You can also easily restore your data through the web app or a hard drive and you can access your data via the mobile app. With Backblaze, you never have to stress about data loss again. Sign up below to enter. A winner will be randomly drawn on Friday, July 26, at 12pm Central. The drawing is for a 1-year subscription ($99.99 value) for Backblaze. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["backblaze","backup","protection","backblaze","central","check","entries","friday","machine","mastodon","sorry","access","accessing","affordable","again","among","appreciated","astonishingly","backing","backup","below","beyond","brettterpstra","business","clones","cloud","codes","cooperation","developer","drawing","drive","easiest","easily","ended","enter","excited","featured","first","generating","giveaway","giveaways","license","local","mailing","makes","maybe","mobile","names","offer","offsite","personal","randomly","reading","restore","robot","rsquo","series","signups","skipped","stress","subscription","system","through","tuned","value","vendors","versioning","visit","winner","wrong"]
	},{
		"title": "The TableFlip giveaway winners!",
		"url": "/2024/07/19/the-tableflip-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jul 19<span>th</span>, 2024",
		"ts": "1721412000",
		"summary": "The TableFlip giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but TableFlip is still worth checking out. If you work in Markdown but get frustrated with creating and editing tables, TableFlip is the perfect answer. You can still save 33% on TableFlip by using code when purchasing. Next up is Backblaze. Check back every Monday through September, 2024 for more giveaways. If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["markdown","table","tableflip","backblaze","cecil","cerier","check","congratulations","dontbesad","giveaway","habermacher","markdown","mastodon","menus","monday","obsidian","popclip","robot","soundsource","tableflip","textbuddy","twitter","werner","announce","answer","backblaze","background","bjango","brettterpstra","checking","class","confetti","contact","creating","details","didnt","easydns","editing","email","ended","frustrated","giveaway","giveaways","gtdandy","height","highlighter","https","istat","image","istatmenus","language","ldquo","loading","media","nojack","noscript","notifications","obsidian","original","picture","plaintext","popclip","purchasing","rdquo","received","retina","rogueamoeba","rouge","rsquo","series","sorry","soundsource","source","srcset","studio","subscribe","suggest","tableflip","tableflipapp","tables","terpstra","textbuddy","through","title","ttscoff","twitter","upcoming","uploads","using","width","winners","worth"]
	},{
		"title": "Marked 2.6.39 with Streaming Preview fixes",
		"url": "/2024/07/18/marked-2-dot-6-39-with-streaming-preview-fixes/",
		"tags": ["conductor","customization","markdown","marked","multimarkdown","scripting"],
		"date": "Jul 18<span>th</span>, 2024",
		"ts": "1721321100",
		"summary": "There&rsquo;s a new version of Marked 2 out (available on all channels) that adds some important fixes and a couple of new features. First off, I fixed the Streaming Preview for everybody. Every time I fixed it to work with The Archive, I broke it for Drafts, and so on. I&rsquo;m certain I&rsquo;ve solve the problem for both use cases now. I could be proven wrong, but extensive testing and confirmation from bug testers has me pretty sure. So now you can use the streaming feature of apps like The Archive and Drafts without issue. I also did some cleanup of the Preferences window while I was in there, but that&rsquo;s purely aesthetic. Someday (probably sooner than later) I&rsquo;ll revamp the whole preference system to use a sidebar for the pane selection like System Settings does on macOS these days. The new features I added are around custom processors, kind of. Previously, you could have any processor return just the string \"NOCUSTOM\" to skip using the custom processor and resort to using the default internal processor, either MultiMarkdown v5 or Discount (GFM). Now you can also return \"MULTIMARKDOWN\" (or MMD) or \"DISCOUNT\" (or GFM) to specify exactly which internal processor to use. The change makes it easy to develop custom processors that can still have different rendering without having to do any of the rendering using command line tools. It also makes it to handle processing using Conductor by simply using in a track. This allows per-document settings. In Conductor, you can create a preprocessor track that uses the filter: Or implement it in any way that works for you, even manually or as part of a TextExpander/Blaze snippet. The update is available now, so go get it! \"Check for Updates\" in the direct version, and Setapp and the Mac App Store should update you automatically. Look for version 2.6.39 or newer. If you&rsquo;ve been using Marked 2 for years, you may have noticed you&rsquo;ve never had to pay an upgrade fee for new features. Someday I&rsquo;ll put out a v3 and bill for it, or (heaven forbid) switch to subscriptions, but for now if you want to support development, feel free to donate or, better yet, become a supporter! By the way, if you&rsquo;re using Conductor make sure you have the latest version (1.0.24 as of this writing), there have been some important bugfixes in the last few days",
		"keywords": ["custom","discount","flavored","github","markdown","processor","programming","archive","blaze","check","conductor","custom","discount","discount","drafts","first","internal","multimarkdown","marked","multimarkdown","nocustom","preferences","preview","previously","processor","processors","setapp","settings","someday","store","streaming","system","textexpander","updates","added","aesthetic","allows","automatically","available","broke","bugfixes","certain","change","channels","cleanup","command","confirmation","couple","create","custom","default","develop","development","different","direct","document","donate","either","everybody","extensive","feature","features","filter","fixed","fixes","forbid","handle","having","heaven","important","internal","later","latest","macos","makes","manually","metadata","newer","noticed","preference","preprocessor","problem","processing","processor","processors","proven","purely","rendering","resort","return","revamp","rsquo","selection","settings","sidebar","simply","snippet","solve","sooner","specify","streaming","string","strings","subscriptions","support","supporter","switch","system","testers","testing","tools","track","upgrade","using","version","while","whole","window","works","writing","wrong","years"]
	},{
		"title": "TableFlip giveaway!",
		"url": "/2024/07/15/tableflip-giveaway/",
		"tags": ["giveaway","macos","markdown"],
		"date": "Jul 15<span>th</span>, 2024",
		"ts": "1721048400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($9.99 value each) for TableFlip. TableFlip makes Markdown tables from structured data like CSVs, allowing you to use a spreadsheet-like interface to edit tables, and providing plain text for your document. It seamlessly provides table editing within any editor. It&rsquo;s truly a missing link for Markdown writers. It’s simple: you change the Markdown file and the table will update; save the table in TableFlip and the Markdown file will be changed. It’s as seamless as it gets. Sign up below to enter. Winners will be randomly drawn on Friday, July 19, at 12pm Central. The drawing is for 3 licenses ($9.99 value each) for TableFlip, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["markdown","table","tableflip","brettterpstra","central","check","entries","friday","giveaway","giveaways","markdown","mastodon","robot","sorry","tableflip","upcoming","winners","allowing","among","appreciated","below","beyond","blockquote","brettterpstra","change","changed","class","codes","contact","cooperation","developer","document","drawing","easydns","editing","editor","ended","enter","excited","featured","first","generating","giveaway","giveaways","height","https","image","interface","license","licenses","loading","mailing","makes","maybe","media","missing","names","nojack","noscript","offer","original","picture","provides","providing","randomly","reading","robot","rsquo","screenshot","seamless","seamlessly","series","signups","simple","skipped","sorry","source","spreadsheet","srcset","strong","structured","subscribe","table","tableflip","tableflipapp","tables","through","title","truly","ttscoff","tuned","upcoming","uploads","value","vendors","visit","width","winner","within","writers"]
	},{
		"title": "The Dropzone giveaway winners!",
		"url": "/2024/07/12/the-dropzone-giveaway-winners/",
		"tags": ["dropzone","giveaway"],
		"date": "Jul 12<span>th</span>, 2024",
		"ts": "1720807200",
		"summary": "The Dropzone giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Dropzone is still worth checking out. You can still save 15% off your purchase of Dropzone using the coupon . It&rsquo;s amazingly useful! By the way, Dropzone is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is TableFlip . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["automation","dropzone","productivity","backblaze","check","congratulations","dropzone","landgraf","mastodon","menus","monday","popclip","setapp","simpson","soundsource","tableflip","textbuddy","twitter","amazing","amazingly","announce","available","checking","coupon","details","email","ended","giveaway","giveaways","hundreds","istat","notifications","received","rsquo","series","sorry","subscription","suggest","through","upcoming","useful","using","winners","worth"]
	},{
		"title": "Dropzone giveaway!",
		"url": "/2024/07/08/dropzone-giveaway/",
		"tags": ["dropzone","giveaway","macos"],
		"date": "Jul 8<span>th</span>, 2024",
		"ts": "1720449000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($35 value each) for Dropzone. Dropzone gives you a panel in your menu bar that can run all kinds of scripts and automations, from uploading files to an FTP or S3 server to optimizing images or filing documents. Dropzone is a productivity app for the Mac that makes it faster and easier to move and copy files, launch applications, upload to many different services, and much more. Sign up below to enter. Winners will be randomly drawn on Friday, July 12, at 12pm Central. The drawing is for 3 licenses ($35 value each) for Dropzone, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["automation","dropzone","productivity","central","check","dropzone","entries","friday","mastodon","sorry","winners","among","applications","appreciated","automations","below","beyond","brettterpstra","codes","cooperation","developer","different","documents","drawing","easier","ended","enter","excited","faster","featured","files","filing","first","generating","giveaway","giveaways","gives","images","kinds","launch","license","licenses","mailing","makes","maybe","names","offer","optimizing","panel","productivity","randomly","reading","robot","rsquo","scripts","series","server","services","signups","skipped","through","tuned","upload","uploading","value","vendors","visit","winner"]
	},{
		"title": "The Marked giveaway winners!",
		"url": "/2024/07/05/the-marked-giveaway-winners/",
		"tags": ["giveaway","marked"],
		"date": "Jul 5<span>th</span>, 2024",
		"ts": "1720202400",
		"summary": "The Marked giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Marked is still worth checking out. You can still save 10% off your purchase of Marked using the coupon (or enter at checkout). If you work in Markdown, you deserve the benefits Marked offers. By the way, Marked is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Dropzone . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["markdown","marked","preview","backblaze","check","chris","congratulations","denesha","dropzone","guillaume","holtzman","johan","kevin","kuster","markdown","marked","mastodon","monday","popclip","romin","setapp","slaven","soundsource","tableflip","textbuddy","twitter","amazing","announce","available","benefits","checking","checkout","coupon","deserve","details","email","ended","enter","giveaway","giveaways","hundreds","notifications","offers","received","rsquo","series","sorry","subscription","suggest","through","upcoming","using","winners","worth"]
	},{
		"title": "Marked giveaway!",
		"url": "/2024/07/01/marked-giveaway/",
		"tags": ["editor","giveaway","macos","markdown","marked"],
		"date": "Jul 1<span>st</span>, 2024",
		"ts": "1719838800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($13.99 value each) for Marked. Marked is a Markdown previewer (of my own design) that offers a live preview of Markdown while you edit in any text editor. It comes with a range of styles and you can add more from the gallery or by editing your own CSS. Beautiful PDF and HTML export, type-ahead Table of Contents navigation, full keyboard support, and a ton of writing tools make Marked a perfect companion to your favorite editor. Marked is a previewer for Markdown and other plain text markups. Use it with your favorite text editor and it updates every time you save. With robust features for previewing, reviewing, and exporting beautiful documents, you can work in plain text while reveling in rich formatting. Sign up below to enter. Winners will be randomly drawn on Friday, July 05, at 12pm Central. The drawing is for 5 licenses ($13.99 value each) for Marked, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["markdown","marked","preview","beautiful","central","check","contents","entries","friday","markdown","marked","mastodon","sorry","table","winners","ahead","among","appreciated","beautiful","below","beyond","brettterpstra","codes","comes","companion","cooperation","design","developer","documents","drawing","editing","editor","ended","enter","excited","export","exporting","favorite","featured","features","first","formatting","gallery","generating","giveaway","giveaways","keyboard","license","licenses","mailing","markups","maybe","names","navigation","offer","offers","preview","previewer","previewing","randomly","range","reading","reveling","reviewing","robot","robust","rsquo","series","signups","skipped","styles","support","through","tools","tuned","updates","value","vendors","visit","while","winner","writing"]
	},{
		"title": "The OmniOutliner giveaway winners!",
		"url": "/2024/06/28/the-omnioutliner-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jun 28<span>th</span>, 2024",
		"ts": "1719603600",
		"summary": "The OmniOutliner giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but OmniOutliner is still worth checking out. Next up is Marked . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["omnioutliner","outline","productivity","backblaze","check","congratulations","dechko","dropzone","jonathan","marked","mastodon","monday","omnioutliner","popclip","richard","robert","tableflip","textbuddy","twitter","williger","wingfield","announce","checking","details","email","ended","giveaway","giveaways","notifications","received","rsquo","series","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "Obsidian Callouts in Marked",
		"url": "/2024/06/27/obsidian-callouts-in-marked/",
		"tags": ["conductor","markdown","marked","obsidian","scripting"],
		"date": "Jun 27<span>th</span>, 2024",
		"ts": "1719533820",
		"summary": "I received a request a while back, shortly after my post about Marked 2 and Obsidian, asking me to support Obsidian callouts. I don&rsquo;t remember who made the request, but it got lodged in the back of my head. I had an hour today to knock out a solution. Rather than trying to incorporate this directly into Marked, I made it a script that can be included in a Conductor configuration. Easier, and less intrusive to Marked users who don&rsquo;t care about Obsidian. They can be made to fold, nested in each other, have a title only, or a title with content processed as Markdown. Here&rsquo;s how they look in Obsidian: And with the script, here&rsquo;s how they look in Marked: The output is just nested divs with classes, so a separate stylesheet is required to make them look correct. This stylesheet is injected by Conductor as well, and adapts pretty well to any Style in Marked. For example, here it is with the Manuscript style: I separated the script from the main Obsidian script so that, should you want to, you can run it on any content and make use of the Obsidian callout syntax irrespective of other syntax. The script is in my Conductor example config, along with the stylesheet document. You can see in the tracks.yaml file that the script and injection are defined as a : Note that this makes use of the insertCSS() filter, which I just added in conductor 1.0.16, so make sure you update. This filter compresses the CSS and injects it at the beginning of the document, after any existing metadata. The files you need are the script (placed in ) and the style (placed in ). Both of these are included if you just clone the example config repo. Then include a sequence like above for any given condition to start handling Obsidian callout syntax. This works best as a Preprocessor, but should still function fine as part of a Processor if you&rsquo;re also handling the Markdown conversion in a script",
		"keywords": ["callout","comment","obsidian","syntax","conductor","easier","manuscript","markdown","marked","obsidian","preprocessor","processor","rather","style","above","adapts","added","asking","beginning","block","callout","callouts","classes","clone","compresses","conductor","config","configuration","content","conversion","defined","directly","document","example","files","filter","function","handling","included","incorporate","injected","injection","injects","insertcss","intrusive","knock","lodged","looks","makes","metadata","nested","output","placed","processed","quote","received","remember","required","rsquo","script","separate","separated","sequence","shortly","solution","style","stylesheet","support","syntax","title","today","tracks","trying","users","while","works"]
	},{
		"title": "OmniOutliner giveaway!",
		"url": "/2024/06/24/omnioutliner-giveaway/",
		"tags": ["giveaway","macos","tools"],
		"date": "Jun 24<span>th</span>, 2024",
		"ts": "1719234000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 Standard licenses ($39.98 value each) for OmniOutliner. If you think well in outlines, OmniOutliner is the premier tool for doing just that. And it blends seamlessly with other Omni products like OmniGraffle and OmniFocus. This giveaway covers you for Mac ($19.99) and iOS ($19.99). OmniOutliner is a powerful tool for organizing (and reorganizing) information, so you can see the full picture and structure your information effortlessly. Organize, reorganize, and structure your big ideas—easily. Think, write, brainstorm, and create the perfect outline with this powerful, all-purpose, productivity tool. Sign up below to enter. Winners will be randomly drawn on Friday, June 28, at 12pm Central. The drawing is for 5 Standard licenses ($39.98 value each) for OmniOutliner, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["omnioutliner","outline","productivity","brettterpstra","central","check","entries","friday","giveaway","giveaways","mastodon","omnifocus","omnigraffle","omnioutliner","organize","robot","sorry","standard","think","upcoming","winners","among","appreciated","below","beyond","blends","blockquote","brainstorm","brettterpstra","class","codes","contact","cooperation","covers","create","developer","doing","drawing","easily","easydns","effortlessly","ended","enter","excited","featured","first","generating","giveaway","giveaways","height","https","ideas","image","information","license","licenses","loading","mailing","maybe","media","names","nojack","noscript","offer","omnigroup","omnioutliner","organizing","original","outline","outlines","picture","powerful","premier","productivity","products","randomly","reading","reorganize","reorganizing","robot","rsquo","screenshot","seamlessly","series","signups","skipped","sorry","source","srcset","strong","structure","subscribe","think","through","title","ttscoff","tuned","upcoming","uploads","value","vendors","visit","width","winner","write"]
	},{
		"title": "The Screens giveaway winners!",
		"url": "/2024/06/21/the-screens-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jun 21<span>st</span>, 2024",
		"ts": "1718997660",
		"summary": "The Screens giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Screens is still worth checking out. Screens is the ultimate tool for remote access. You can still save 20% off your first year using the App Store code . Note that the Mac App Store can&rsquo;t process offer codes &mdash; you&rsquo;ll need to redeem on iOS, but the purchase will apply to the macOS version as well. Next up is OmniOutliner . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["macos","remote","screen","screens","sharing","brett","backblaze","check","congratulations","dropzone","giveaway","marked","mastodon","monday","omnioutliner","peter","popclip","robert","robot","screens","store","tableflip","twitter","underhill","werner","access","announce","apply","aptonic","backblaze","background","brettterpstra","checking","class","codes","confetti","contact","details","didnt","easydns","edovia","email","ended","first","giveaway","giveaways","height","highlighter","https","image","language","loading","macos","marked","mdash","media","nojack","noscript","notifications","offer","omnigroup","omnioutliner","original","picture","plaintext","popclip","process","received","redeem","remote","rouge","rsquo","screens","series","sorry","source","srcset","subscribe","suggest","tableflipapp","terpstra","through","title","ttscoff","twitter","ultimate","upcoming","uploads","using","version","width","winners","worth"]
	},{
		"title": "Markdown Lipsum v2",
		"url": "/2024/06/17/markdown-lipsum-v2/",
		"tags": ["lipsum","markdown"],
		"date": "Jun 17<span>th</span>, 2024",
		"ts": "1718643840",
		"summary": "I know it&rsquo;s been less than a week since v1, but I made some major changes to md-lipsum that warrant a version 2. Basically, I incorporated all of the API options from Loripsum.net, meaning you can now specify how many paragraphs and what elements are included. You can still get a full Markdown document with all elements using https://brettterpstra.com/md-lipsum/api/2/all. You can include , , , or in the path to determine paragraph length (can be shortened to , , , ), and/or a number to determine the number of paragraphs. More paragraphs means more header levels, too. Example: If no parameters are given, e.g. the path is just , then all elements will be output with 5 paragraphs of medium length. You can also control exactly what elements are included using additional path parameters. These are detailed on the project page",
		"keywords": ["interfaces","ipsum","lorem","programming","example","loripsum","markdown","brettterpstra","changes","control","detailed","document","elements","header","https","included","incorporated","length","levels","lipsum","major","meaning","medium","options","output","paragraph","paragraphs","parameters","project","rsquo","shortened","since","specify","using","version","warrant"]
	},{
		"title": "Screens giveaway!",
		"url": "/2024/06/17/screens-giveaway/",
		"tags": ["desktop","giveaway","macos"],
		"date": "Jun 17<span>th</span>, 2024",
		"ts": "1718629200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 1-year subscriptions ($24.99 value each) for Screens. If you need a remote desktop, whether to control your own servers and remote Macs (or Linux, Windows, or even Raspberry Pis) or to do remote support for customers, friends, and family, Screens has you covered. It&rsquo;s the most elegant remote desktop software I&rsquo;ve used, and it&rsquo;s a Universal app, on Mac, iPhone, and iPad. Seamless clipboard sharing, file drag and drop, and a great interface for accessing all of your machines. Screens 5 VNC provides unparalleled remote desktop access with a seamless interface, allowing users to easily connect to their Mac or PC from an iPhone, iPad, Mac, or Vision Pro. It features Curtain Mode for privacy, multi-display support, and robust security for smooth, secure connections. Integration with iCloud and Tailscale enhances its versatility and ease of use. Whether for work or personal use, Screens 5 VNC is the ultimate tool for effortless and reliable remote desktop management. Sign up below to enter. Winners will be randomly drawn on Friday, June 21, at 12pm Central. The drawing is for 3 1-year subscriptions ($24.99 value each) for Screens, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["macos","remote","screen","screens","sharing","central","check","curtain","entries","friday","integration","linux","mastodon","raspberry","screens","seamless","sorry","tailscale","universal","vision","windows","winners","access","accessing","allowing","among","appreciated","below","beyond","brettterpstra","clipboard","codes","connect","connections","control","cooperation","covered","customers","desktop","developer","display","drawing","easily","effortless","elegant","ended","enhances","enter","excited","family","featured","features","first","friends","generating","giveaway","giveaways","great","icloud","iphone","interface","license","machines","mailing","management","maybe","multi","names","offer","personal","privacy","provides","randomly","reading","reliable","remote","robot","robust","rsquo","seamless","secure","security","series","servers","sharing","signups","skipped","smooth","software","subscriptions","support","through","tuned","ultimate","unparalleled","users","value","vendors","versatility","visit","winner"]
	},{
		"title": "Text Blaze shareable folders",
		"url": "/2024/06/15/text-blaze-shareable-folders/",
		"tags": ["lipsum","snippet","textblaze"],
		"date": "Jun 15<span>th</span>, 2024",
		"ts": "1718480100",
		"summary": "When I first tried it out, Text Blaze didn&rsquo;t make it easy to publicly share folders of snippets. They&rsquo;ve solved that, apparently, so now you can make folders publicly available from the Mac app. So I present&hellip; Apparently folder sharing is still an \"MVP\" feature, so I can share with you, but&hellip; Lipsum, a collection of random text generators for Text Blaze. These almost all make use of the command, which currently doesn&rsquo;t show up in the command palette and I&rsquo;m unclear as to whether they&rsquo;re available to lower-level accounts (I have a Business subscription). If you try them out and run into issues, let me know. This set includes a couple of snippets for inserting placeholder images into HTML/Markdown documents, which I use pretty frequently when designing. You&rsquo;ll also find snippets for Bacon Ipsum (I&rsquo;m pescatarian, but&hellip;) and Hipster Ipsum, for those who prefer a little change from the typical Lorem Ipsum. If you&rsquo;re trying out Text Blaze, check out the Lipsum folder. If nothing else, it offers some good examples for using in your own snippets. Standard (for now) PSA: You have to scroll all the way to the bottom of the Text Blaze page to find the Mac app. I don&rsquo;t know why they don&rsquo;t make their native apps more obvious&hellip",
		"keywords": ["blaze","ipsum","lorem","nonsense","placeholder","snippet","apparently","bacon","blaze","business","hipster","ipsum","lipsum","lorem","markdown","standard","accounts","almost","apparently","available","bottom","change","check","collection","command","couple","designing","documents","doesn","examples","feature","first","folder","folders","generators","hellip","images","includes","inserting","issues","level","little","lower","native","nothing","obvious","offers","palette","pescatarian","placeholder","prefer","publicly","random","rsquo","scroll","share","sharing","snippets","solved","subscription","tried","trying","typical","unclear","using"]
	},{
		"title": "The Audio Hijack giveaway winners!",
		"url": "/2024/06/14/the-audio-hijack-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jun 14<span>th</span>, 2024",
		"ts": "1718388000",
		"summary": "The Audio Hijack giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Audio Hijack is still worth checking out. You can&rsquo;t beat Audio Hijack for audio recording on the Mac. Whether you&rsquo;re podcasting or just recording audio from your web browser, it does it all. You can still save 15% on a purchase with the code . Next up is Screens . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["audio","hijack","recording","routing","andrew","audio","backblaze","brandon","check","congratulations","dropzone","eleff","ellery","hijack","marked","mastodon","monday","northern","omnioutliner","screens","tableflip","twitter","announce","audio","browser","checking","details","email","ended","giveaway","giveaways","notifications","podcasting","received","recording","rsquo","series","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "A Markdown Lorem Ipsum API",
		"url": "/2024/06/14/a-markdown-lorem-ipsum-api/",
		"tags": ["automation","lipsum","markdown","scripting","snippet"],
		"date": "Jun 14<span>th</span>, 2024",
		"ts": "1718387640",
		"summary": "I built a new little API for you. It generates Markdown Lorem Ipsum. First, a little background. As I&rsquo;ve mentioned elsewhere, I&rsquo;ve been playing with Text Blaze, a cool new app that might eventually replace TextExpander for me. One of the major things missing from Text Blaze, though, is script snippets, which I make use of a lot in TextExpander. What it does offer, though, is a command for fetching a REST API and processing the result. A lot of my script snippets are doing just that, so those are actually more convenient to build in Text Blaze. For the ones that need extra handling, I&rsquo;ve just been creating web endpoints that run my scripts for me. When you go to the Text Blaze home page it looks like it&rsquo;s just a Chrome extension. You have to go all the way to the bottom of the page to find the Mac app (beta). One such snippet I wanted back was my random Markdown generator, which I use frequently to test out styles for things like Marked, nvUltra, or MultiMarkdown Composer. There&rsquo;s an existing API called Lorem Markdownum, but it doesn&rsquo;t generate enough of the syntax consistently to be good for testing themes. So I built my own. \"MD-Lipsum\" uses Loripsum.net to generate a full set of HTML markup with random text, and then converts that HTML to basic Markdown. No tables, unfortunately, but it outputs a complete set of standard Markdown elements, including bold/italics, ordered and unordered lists, headers, block quotes, code blocks (fenced), and definition lists (MultiMarkdown syntax). To use the API, just point to . You can add or but it has minimal effect (a shortcoming of the loripsum.net API, I think). It just returns plain text, much like the TitleCase API I made a while back. To use it in Text Blaze, you&rsquo;d want a snippet like: There&rsquo;s a little page here but it just tells you what&rsquo;s in this post",
		"keywords": ["ipsum","lorem","snippet","blaze","chrome","composer","first","ipsum","lipsum","lorem","loripsum","markdown","markdownum","marked","multimarkdown","textexpander","titlecase","usage","background","basic","block","blocks","bottom","build","built","called","command","consistently","convenient","converts","creating","definition","doesn","doing","elements","elsewhere","endpoints","enough","eventually","extension","extra","fenced","fetching","generates","generator","handling","headers","including","italics","lists","little","looks","loripsum","major","markup","mentioned","minimal","missing","nvultra","offer","ordered","outputs","playing","point","processing","quotes","random","replace","returns","rsquo","script","scripts","shortcoming","snippet","snippets","standard","styles","syntax","tables","tells","testing","themes","think","unfortunately","unordered","wanted","while"]
	},{
		"title": "Web Excursions for June 12, 2024",
		"url": "/2024/06/12/web-excursions-for-june-12-2024/",
		"tags": ["bookmarks","popclip"],
		"date": "Jun 12<span>th</span>, 2024",
		"ts": "1718215920",
		"summary": "Whether you&rsquo;re a new user or a seasoned pro, ScreenCastsONLINE offers in-depth screencasts on a wide range of topics, from tutorials to app discovery. Check it out. jordanbaird/Ice: Powerful menu bar manager for macOS There&rsquo;s some question about the future of Bartender after a recent acquisition (and some concerns about new telemetry). This project looks like a solid up-and-coming replacement (and free). darrenburns/dunk: Prettier git diffs in the terminal 🎨 Prettier git diffs in the terminal An end to the climate emergency is in our grasp Climate anxiety keeping you awake? Here&rsquo;s some hopeful news. Obsidian — PopClip Extensions In the vein of cool Obsidian integrations, here’s one for PopClip that can save selected text to a specified file or to the Daily Note page. There’s a similar one for nvUltra in my PopClip Extensions. Want more great tips and apps? Check out ScreenCastsOnline",
		"keywords": ["bartender","climate","obsidian","bartender","brett","check","climate","daily","extensions","obsidian","popclip","powerful","prettier","screencastsonline","screencastsonline","acquisition","anxiety","awake","blockquote","bretts","brettterpstra","bterpstra","class","climate","coming","concerns","curve","darrenburns","depth","diffs","discovery","emergency","eventually","extensions","forever","github","grasp","great","height","holding","hopeful","https","image","integrations","jordanbaird","keeping","loading","looks","macos","manager","media","members","noscript","nvultra","offers","original","picture","pluralistic","popclip","project","projects","range","recent","replacement","rsquo","screencasts","screencastsonline","seasoned","selected","similar","solid","source","srcset","stops","telemetry","terminal","title","topics","tutorials","uploads","width"]
	},{
		"title": "Audio Hijack giveaway!",
		"url": "/2024/06/10/audio-hijack-giveaway/",
		"tags": ["giveaway","macos","recording"],
		"date": "Jun 10<span>th</span>, 2024",
		"ts": "1718024400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($64 value each) for Audio Hijack. When you need to route and record multiple audio sources, whether it&rsquo;s getting separate tracks out of a Skype call for a podcast or recording audio from your music apps, Audio Hijack has all the power you need. Drag and drop a configuration together, linking sources, effects, and outputs, then just hit record. Professional-Grade Recording and More. Save audio from any website, as well as any application running on your Mac. You can even record all the system audio at once! Whether you&rsquo;re recording in-studio with mics and mixers or remote VoIP conversations from services like Skype, Audio Hijack can power your podcast. Audio Hijack&rsquo;s abilities aren&rsquo;t limited to recording. Discover live streaming and internet broadcasting, audio adjustments for both mics and apps, and so much more. Sign up below to enter. Winners will be randomly drawn on Friday, June 14, at 12pm Central. The drawing is for 3 licenses ($64 value each) for Audio Hijack, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["audio","hijack","recording","routing","audio","central","check","discover","entries","friday","grade","hijack","mastodon","professional","recording","skype","sorry","winners","abilities","adjustments","among","appreciated","audio","below","beyond","brettterpstra","broadcasting","codes","configuration","conversations","cooperation","developer","drawing","effects","ended","enter","excited","featured","first","generating","getting","giveaway","giveaways","internet","license","licenses","limited","linking","mailing","maybe","mixers","multiple","music","names","offer","outputs","podcast","randomly","reading","record","recording","remote","robot","route","rsquo","running","separate","series","services","signups","skipped","sources","streaming","studio","system","through","together","tracks","tuned","value","vendors","visit","website","winner"]
	},{
		"title": "The RetroBatch Pro giveaway winners!",
		"url": "/2024/06/07/the-retrobatch-pro-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jun 7<span>th</span>, 2024",
		"ts": "1717783200",
		"summary": "The RetroBatch Pro giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but RetroBatch Pro is still worth checking out. Right now Retrobatch Pro is discounted and you can pick up a copy for just $39.99, and you can save an additional $5 by clicking here. Go get your image processing automated! Next up is Audio Hijack . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["automation","batch","image","manipulation","processing","retrobatch","andrew","audio","check","congratulations","dropzone","dvoracek","hanson","hijack","lowry","marked","mastodon","monday","omnioutliner","retrobatch","retrobatch","right","screens","stephen","tableflip","twitter","announce","automated","checking","clicking","details","discounted","email","ended","giveaway","giveaways","image","notifications","processing","received","rsquo","series","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "The Developer Nation Survey 27th Edition",
		"url": "/2024/06/05/the-developer-nation-survey-27th-edition/",
		"tags": ["developer","survey"],
		"date": "Jun 5<span>th</span>, 2024",
		"ts": "1717604700",
		"summary": "The 27th Developer Nation Survey is open until July 9th. Take the survey and get entered in a drawing for prizes, including a GoPro Hero12 Black, Laptop Screen Extender 14\", Samsung T7 Shield SSD 1TB, Raspberry Pi 5, AeroPress Coffee Maker, Udemy & Amazon gift cards, Developer Nation Swag and much more! Developer Nation community members are also eligible for an iPad Mini, Amazon gift cards and more. This is a global developer survey covering 13 areas, including: Web, Mobile, Desktop, Cloud, Industrial IoT, Consumer Electronics, Embedded software, AR & VR, Apps/extensions for 3rd-party ecosystems, Games, Machine Learning & AI, and Data science. It&rsquo;s open to all developers and no-code software creators. Share what you like and dislike about popular tools and platforms and make an impact on the ecosystem. As a thank you you&rsquo;ll get a \"goody bag\" with free coding resources, vouchers and learning material to support your career growth. Also, the more questions you answer the more chances you get to win the cool prizes listed above",
		"keywords": ["aeropress","aeropress","amazon","black","cloud","coffee","consumer","desktop","developer","electronics","embedded","extender","games","gopro","industrial","laptop","learning","machine","maker","mobile","nation","raspberry","samsung","screen","share","shield","survey","udemy","above","answer","areas","before","cards","career","chances","coding","community","covering","creators","developer","developers","dislike","drawing","ecosystem","ecosystems","entered","extensions","global","goody","growth","impact","including","learning","listed","members","party","platforms","popular","prizes","questions","resources","rsquo","science","software","support","survey","thank","tools","vouchers"]
	},{
		"title": "Retrobatch Pro giveaway!",
		"url": "/2024/06/03/retrobatch-pro-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Jun 3<span>rd</span>, 2024",
		"ts": "1717419600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 Pro licenses ($49.99 value each) for Retrobatch Pro. Retrobatch is the ultimate in image processing automation. Need to resize, crop, watermark, convert, or do anything else to a bunch of images? Or even one image at a time, but repeatedly? Retrobatch lets you define image processing workflows using a visual node-based editor that you can drag images onto and process in bulk. I use it all the time for turning templated blog post headers into web formats (JPG and WEBP) as well as creating cropped versions for social sharing. It saves me easily 10 minutes of time every time I create an image for a post. A node based batch image processor means you can mix, match, and combine different operations together to make the perfect workflow. A node for every operation, from changing DPI to rotation to Machine Learning to custom behaviors with AppleScript. Optimize your images for fast delivery over the Internet. Process one image or thousands of images, with support for reading and writing common file formats, creating multiple inputs and multiple outputs. Sign up below to enter. Winners will be randomly drawn on Friday, June 07, at 12pm Central. The drawing is for 2 Pro licenses ($49.99 value each) for Retrobatch Pro, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["automation","batch","image","manipulation","processing","retrobatch","applescript","central","check","entries","friday","internet","learning","machine","mastodon","optimize","process","retrobatch","sorry","winners","among","appreciated","automation","based","batch","behaviors","below","beyond","brettterpstra","bunch","changing","codes","common","convert","cooperation","create","creating","cropped","custom","define","delivery","developer","different","drawing","easily","editor","ended","enter","excited","featured","first","formats","generating","giveaway","giveaways","headers","image","images","inputs","license","licenses","mailing","match","maybe","minutes","multiple","names","offer","operation","operations","outputs","process","processing","processor","randomly","reading","repeatedly","resize","robot","rotation","rsquo","saves","series","sharing","signups","skipped","social","support","templated","thousands","through","together","tuned","turning","ultimate","using","value","vendors","versions","visit","visual","watermark","winner","workflow","workflows","writing"]
	},{
		"title": "Adding custom search shortcuts in Firefox",
		"url": "/2024/06/02/adding-custom-search-shortcuts-in-firefox/",
		"tags": ["browser","customization","firefox","quicktip","search"],
		"date": "Jun 2<span>nd</span>, 2024",
		"ts": "1717358460",
		"summary": "This might not be news to most people, but I thought I&rsquo;d point it out for any Firefox users that don&rsquo;t know about it: you can add a custom search shortcut for any site, allowing you to use a short keyword followed by search terms and execute the search without going to the site, clicking search, and entering terms. Go to the site you want to search and use its search field to run any search. On the results page, add a bookmark. You can edit the bookmark title to a generic in this step or in step 4. Open up the Bookmarks sidebar (⌘+B) (or open the Bookmarks manager with ⌥+⌘+O) and locate the new bookmark. Right click it and choose Edit Bookmark. Change the search term in the URL to . E.g., if you searched for , find in the URL and replace it. Add a short \"keyword\" and edit the title to a generic \"X Search\" if you didn&rsquo;t already. The keyword is the short text you&rsquo;ll use to access the search. It can be as short as one character. Save the edit. Now you can just focus the URL bar (⌘+L), type the keyword followed by a space and whatever search terms you want to use. The search page will be loaded directly with the results! Hope that&rsquo;s useful to some people. The same thing can be done in most browsers, I just happen to be using mostly Firefox these days. Feel free to add tips for your browser of choice in the comments",
		"keywords": ["bookmarklet","features","firefox","bookmark","bookmarks","change","command","customfirefoxsearch","firefox","right","search","access","allowing","bookmark","bottom","browser","browsers","character","choice","choose","class","click","clicking","codecs","combiner","comments","container","controls","custom","directly","entering","execute","field","figure","focus","followed","generic","going","happen","height","highlighter","keycombo","keyword","language","ldquo","loaded","manager","mostly","padding","people","plaintext","point","poster","preload","rdquo","replace","results","rouge","rsquo","search","searched","separated","short","shortcut","sidebar","source","space","strong","style","symbol","terms","theora","thought","title","uploads","useful","users","using","video","vorbis","whatever","width"]
	},{
		"title": "The DEVONthink giveaway winners!",
		"url": "/2024/05/31/the-devonthink-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "May 31<span>st</span>, 2024",
		"ts": "1717175100",
		"summary": "The DEVONthink giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but DEVONthink is still worth checking out. If you gather information for your job, your personal life, or for any reason, you can&rsquo;t beat DEVONthink for organizing it all. If you didn&rsquo;t win, you can still save 10% with the coupon . And to the winners, don&rsquo;t forget you have the option to upgrade your Standard license to Pro for just the difference in value. Next up is RetroBatch Pro . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["devonthink","knowledge","management","audio","charles","check","congratulations","devonthink","dropzone","hijack","louis","marked","mastodon","monday","omnioutliner","retrobatch","screens","standard","thomas","twitter","announce","checking","coupon","details","difference","email","ended","forget","gather","giveaway","giveaways","information","license","notifications","organizing","personal","received","rsquo","series","sorry","suggest","through","upcoming","upgrade","value","winners","worth"]
	},{
		"title": "DEVONthink giveaway!",
		"url": "/2024/05/27/devonthink-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "May 27<span>th</span>, 2024",
		"ts": "1716814800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 Standard licenses ($99 value each) for DEVONthink. DEVONthink is the ultimate in Knowledge Management, allowing you to collect all of your notes, documents, emails, and more, then analyze and draw connections between them automatically. Scan paper documents with OCR to make them searchable, archive emails, even download complete websites. This giveaway is for a Standard license, which can be upgraded to the powerful DEVONthink Pro for just the difference in value. Focus on your work and let DEVONthink remember all the details. Collect, organize, edit and annotate documents of any kind. Have them automatically analyzed, connected, and filed. Sync them between your Mac, iPhone, and iPad. Sign up below to enter. Winners will be randomly drawn on Friday, May 31, at 12pm Central. The drawing is for 3 Standard licenses ($99 value each) for DEVONthink, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["devonthink","knowledge","management","central","check","collect","devonthink","entries","focus","friday","knowledge","management","mastodon","sorry","standard","winners","allowing","among","analyze","analyzed","annotate","appreciated","archive","automatically","below","between","beyond","brettterpstra","codes","collect","connected","connections","cooperation","details","developer","difference","documents","download","drawing","emails","ended","enter","excited","featured","filed","first","generating","giveaway","giveaways","iphone","license","licenses","mailing","maybe","names","notes","offer","organize","paper","powerful","randomly","reading","remember","robot","rsquo","searchable","series","signups","skipped","through","tuned","ultimate","upgraded","value","vendors","visit","websites","winner"]
	},{
		"title": "Man, I should have started Conductor with filters",
		"url": "/2024/05/25/man-i-should-have-started-conductor-with-filters/",
		"tags": ["conductor","marked","scripting"],
		"date": "May 25<span>th</span>, 2024",
		"ts": "1716655320",
		"summary": "I added a few more (obvious) filters to Conductor this morning. I really should have started here, it makes configuration so convenient and alleviates the need for about 50% of what you would do with scripting. Now you can do it all from one YAML file. insert TOC (max=max levels, after=start, *h1, or h2) insert a file as Markdown at beginning or end of content insert a file as raw HTML at beginning or end of content insert a file as a code block at beginning or end of content These allow you to insert a table of contents and append or prepend files, raw HTML, or code blocks. Inserted files can be absolute paths or you can store templates in and just reference them by filename. Perfect for adding things like bios and disclaimers to your documents before outputing them (as PDF, HTML, or even as a new Markdown document). If you use after an in a , you&rsquo;d get a title inserted from metadata first, then a TOC inserted after it. (Then use the new filter to add Mermaid or a custom MathJax implementation. Sky&rsquo;s the limit, kind of.) These filters make some of the more basic tasks you&rsquo;d usually perform with a Custom Processor script as easy as one line in a config file",
		"keywords": ["markdown","mathjax","conductor","custom","inserted","markdown","mathjax","mermaid","processor","absolute","added","adding","alleviates","allow","append","basic","before","beginning","block","blocks","config","configuration","content","contents","convenient","custom","details","disclaimers","document","documents","filename","files","filter","filters","first","implementation","inserted","levels","limit","makes","metadata","morning","obvious","outputing","paths","prepend","project","rsquo","script","scripting","started","store","table","tasks","templates","title","usually"]
	},{
		"title": "I can't believe I forgot this Conductor filter",
		"url": "/2024/05/25/i-cant-believe-i-forgot-this-conductor-filter/",
		"tags": ["blogging","conductor","markdown","marked","scripting"],
		"date": "May 25<span>th</span>, 2024",
		"ts": "1716643080",
		"summary": "So yesterday I announced a new feature in Conductor called Filters. Little built-in commands for performing simple tasks without having to write whole scripts for them. In the process of writing the feature, I forgot what might be the most useful function of all: injecting JavaScripts. So I&rsquo;ve added as a filter. You can give it a full path to a JavaScript file, or you can create a directory at , add the file there, and then just reference it by name like (the is added automatically if needed). You can insert multiple scripts at once by separating the paths with commas, e.g. . I also added an filter that will attempt to pull a title out of metadata (YAML or MMD), and failing that use the filename, converting a slug into a titlecased title (e.g. becomes ), and insert it as an H1 at the beginning of the content (after any front matter/metadata). That config would require no scripting at all. The style would be set, an h1 title would be added, and two scripts would be injected before running through the default Marked processor. If you think of any more that would be useful, please let me know",
		"keywords": ["configuration","filter","conductor","filters","javascript","javascripts","little","marked","above","added","announced","assuming","automatically","becomes","before","beginning","built","called","commands","commas","config","content","converting","create","default","directory","example","exist","failing","feature","filename","filter","forgot","front","function","having","injected","injecting","metadata","multiple","needed","paths","performing","process","processor","rsquo","running","scripting","scripts","separating","simple","style","tasks","think","through","title","titlecased","useful","using","whole","write","writing","yesterday"]
	},{
		"title": "Conductor filters simplify basic operations",
		"url": "/2024/05/24/conductor-filters-simplify-basic-operations/",
		"tags": ["conductor","markdown","marked","scripting"],
		"date": "May 24<span>th</span>, 2024",
		"ts": "1716575820",
		"summary": "Last month I released Conductor, a tool for handling multiple Custom Processors in Marked. It allows you to use natural language conditions to determine which command or script to run, either as preprocessor or processor for Marked. But I found a lot of my scripts were just injecting metadata or performing other simple actions, so I added a new feature to Conductor called Filters. Filters are just shortcuts to avoid having to write simple (often 3 or 4 line) scripts. Like or actions, you can now just use to do things like setting a Marked Style, injecting or stripping metadata (YAML/MMD aware), or doing search and replaces on the content. These can be run in a to combine multiple filters. / &ndash; adds or updates a meta key, aware of YAML and MMD &ndash; strips all metadata (YAML or MMD) from the content &ndash; removes a specific key (YAML or MMD) &ndash; sets the Marked preview style to a preconfigured Style name / &ndash; performs a search and replace (global with ). If search is surrounded with forward slashes followed by optional flags (i for case-insensitive, m to make dot match newlines), e.g. , it will be interpreted as a regular expression. The replace value can include numeric capture groups, e.g. . Update to the latest version using (may vary depending on how you installed it originally) to get the new features, see the project page for details, and check out my config to see examples. If there are any simple procedures you&rsquo;re currently using scripts to handle that aren&rsquo;t covered by these, please let me know in the comments what filters you&rsquo;d like to see added! There&rsquo;s now a file in the repo called that makes it way easier to test configurations from the command line. Just run to process a file as if it were being opened in Marked. You can use to output only the STDERR response, which will show which conditions are being matched, and you can use to define the phase as either or to run as Preprocessor or Processor, respectively",
		"keywords": ["scripts","available","conductor","custom","filters","marked","preprocessor","processor","processors","stderr","style","actions","added","allows","available","avoid","aware","called","capture","check","command","comments","conditions","config","configurations","content","covered","define","depending","details","doing","easier","either","examples","expression","feature","features","filters","flags","followed","found","global","groups","handle","handling","having","injecting","insensitive","installed","interpreted","language","latest","makes","match","matched","metadata","multiple","natural","ndash","newlines","numeric","often","opened","optional","originally","output","performing","performs","phase","preconfigured","preprocessor","preview","procedures","process","processor","project","regular","released","removes","replace","replaces","respectively","response","rsquo","script","scripts","search","setting","shortcuts","simple","slashes","specific","stripping","strips","style","surrounded","testing","updates","using","value","version","write"]
	},{
		"title": "The OmniGraffle giveaway winners!",
		"url": "/2024/05/24/the-omnigraffle-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "May 24<span>th</span>, 2024",
		"ts": "1716573600",
		"summary": "The OmniGraffle giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but OmniGraffle is still worth checking out. You can&rsquo;t beat OmniGraffle for all of your visual communication and brainstorming. Next up is DEVONthink . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["diagram","omnigraffle","prototype","audio","brian","check","congratulations","devonthink","giveaway","hijack","marked","mastodon","monday","omnigraffle","omnioutliner","petran","retrobatch","robot","screens","twitter","announce","audiohijack","background","brainstorming","brettterpstra","checking","class","communication","confetti","contact","details","devontechnologies","devonthink","didnt","easydns","edovia","email","ended","flyingmeat","giveaway","giveaways","height","https","image","loading","marked","media","nojack","noscript","notifications","omnigraffle","omnigroup","omnioutliner","original","picture","received","retrobatch","rling","rogueamoeba","rsquo","screens","series","sorry","source","srcset","subscribe","suggest","through","title","ttscoff","twitter","upcoming","uploads","visual","width","winners","worth"]
	},{
		"title": "OmniGraffle giveaway!",
		"url": "/2024/05/20/omnigraffle-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "May 20<span>th</span>, 2024",
		"ts": "1716210000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 Standard licenses ($209.98 value each) for OmniGraffle, including both iOS and Mac licenses. OmniGraffle is the premier application for visual communication of ideas. Omni makes great software, and OmniGraffle is evidence of that. This giveaway gets you licenses for both Mac ($149.99) and iOS ($59.99). With the power to diagram, rapid-prototype, and design, OmniGraffle was made for professionals who need to organize or communicate visually &mdash; beautifully. Sign up below to enter. Winners will be randomly drawn on Friday, May 24, at 12pm Central. The drawing is for 2 Standard licenses ($209.98 value each) for OmniGraffle (iOS and iPad), one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["diagram","omnigraffle","prototype","central","check","entries","friday","mastodon","omnigraffle","sorry","standard","winners","among","appreciated","beautifully","below","beyond","brettterpstra","codes","communication","cooperation","design","developer","diagram","drawing","ended","enter","evidence","excited","featured","first","generating","giveaway","giveaways","great","ideas","including","license","licenses","mailing","makes","maybe","mdash","names","offer","organize","premier","professionals","prototype","randomly","rapid","reading","robot","rsquo","series","signups","skipped","software","through","tuned","value","vendors","visit","visual","visually","winner"]
	},{
		"title": "The MacUpdater giveaway winners!",
		"url": "/2024/05/17/the-macupdater-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "May 17<span>th</span>, 2024",
		"ts": "1715968800",
		"summary": "The MacUpdater giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but MacUpdater is still worth checking out. There&rsquo;s no better solution for keeping all of the apps on your Mac up to date. You can still save 20% on a license with the code at checkout. I use this app every day and highly recommend it. Next up is OmniGraffle . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["macos","macupdater","software","aaron","audio","brett","beard","check","congratulations","devonthink","daniel","david","gibbs","giveaway","goldberg","hijack","jacob","joseph","loeffler","macupdater","mastodon","monday","omnigraffle","omnioutliner","patterson","retrobatch","revell","robot","screens","twitter","wasserman","announce","audiohijack","background","brettterpstra","checking","checkout","class","confetti","contact","corecode","details","devontechnologies","devonthink","didnt","easydns","edovia","email","ended","flyingmeat","giveaway","giveaways","height","highlighter","highly","https","idahl","image","keeping","language","license","loading","macupdater","media","nojack","noscript","notifications","omnigraffle","omnigroup","omnioutliner","original","picture","plaintext","received","recommend","retrobatch","rogueamoeba","rouge","rsquo","screens","series","solution","sorry","source","srcset","subscribe","suggest","through","title","ttscoff","twitter","upcoming","uploads","width","winners","worth"]
	},{
		"title": "Marked 2 and Obsidian",
		"url": "/2024/05/16/marked-2-and-obsidian/",
		"tags": ["markdown","marked","obsidian","plugin","productivity"],
		"date": "May 16<span>th</span>, 2024",
		"ts": "1715882160",
		"summary": "I&rsquo;m not going to lie, Obsidian is really cool. It&rsquo;s a Markdown-based note system that has a ton of cool features, and even more with its healthy plugin community. I don&rsquo;t see Obsidian as direct competition for nvUltra1, where the main focus is rapid note-taking and full text search, which nvUltra does a superior job of. I actually open my main nvUltra Notebook in Obsidian as a Vault (both of which are just folders on your drive) and love the ease of using both apps together. Obsidian Basics from Lee, giving a full tutorial for getting started with Obsidian Obsidian Plugins Starter Kit from Mike, offering an overview of some great core and community plugins, with tips that will also serve you well for getting used to using plugins in general (I have an affiliate arrangement with SCO that gives me a little income if you subscribe. They make amazing videos so I&rsquo;m very happy to partner with them!) The point of this post is not to get you to use Obsidian. It&rsquo;s about integrating Marked 2 with Obsidian for those who already use it. Obsidian plugins offer some great Markdown preview features, but lack all of the writing and customization tools that Marked offers. Marked works perfectly with Obsidian. You just have to open the current note in Marked and changes show up with about a two-second delay in Marked as you edit (based on the rate that Obsidian autosaves). You can also open your entire Vault folder in Marked and it will always show you the note you&rsquo;re currently editing. It&rsquo;s just a bit of a pain to get these to Marked without revealing in Finder and dragging. So I made a plugin. Eventually I&rsquo;d like to have this plugin available in Obsidian&rsquo;s Community Plugins, but the process of getting it accepted has been slow. If and when it is eventually merged, I&rsquo;ll update these instructions as the process will become much easier. In the meantime, you have two options to install: Use the B.R.A.T. Plugin Open the folder in your Vault. The easiest way to get there is to open Obsidian Preferences, navigate to Community Plugins, then click the folder icon next to Installed Plugins. Create a folder called in the plugins folder. Go to the latest release of the Marked 2 plugin and download the and files to the folder. Return to Obsidian Preferences -> Community Plugins and you should now see the Marked plugin available. Enable it by clicking the&hellip;",
		"keywords": ["links","basics","check","community","conductor","create","custom","eventually","finder","garrett","handling","however","install","installed","integrating","introducing","manually","markdown","marked","mason","multimarkdown","notebook","obsidian","phillips","plugin","plugins","preferences","preprocessor","readme","return","schmitz","screencastsonline","searchable","sharpen","smarter","starter","syntax","tfthacker","thanks","vault","accepted","affiliate","amazing","arrangement","autosaves","available","backlink","based","basics","benefit","block","blockquote","brettterpstra","browse","bterpstra","button","called","changes","class","click","clicking","coming","commands","comment","community","competition","conductor","config","configuration","contacting","converting","converts","creating","customization","default","details","development","differently","direct","documents","download","dragging","drive","easier","easiest","editing","email","emojis","endnotes","entire","eventually","feature","features","files","filter","first","fnref","focus","folder","folders","footnote","footnotes","formatting","general","getting","github","giveaway","giveaways","gives","giving","going","great","handles","handling","handy","happy","header","healthy","height","highlight","highlighter","https","icons","image","includes","income","install","instructions","integrating","interest","language","later","latest","ldquo","lined","linked","links","little","loading","manifest","manually","marked","markup","mastodon","meantime","media","members","merged","navigate","neutral","newsletter","noscript","noteref","notes","nvultra","nvultra","obsidian","offer","offering","offers","opening","options","original","overview","palette","partner","people","perfectly","permalink","phillipsmn","picture","plaintext","plugin","plugins","point","pointing","portable","preview","process","productivity","projects","radekkozak","rapid","rdquo","recently","regular","regularly","release","releases","replacing","revealing","reversefootnote","rouge","rsquo","rules","sample","screencastsonline","search","second","serve","serves"]
	},{
		"title": "MacUpdater giveaway!",
		"url": "/2024/05/13/macupdater-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "May 13<span>th</span>, 2024",
		"ts": "1715605200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 10 licenses ($14.99 value each) for MacUpdater. I run MacUpdater every day to keep all of my software up to date. It keeps track of every update released for hundreds of Mac Apps, including Mac App Store apps. You can ignore individual updates or entire apps, so it only acts on the apps you want updated. It makes installing all available updates a one-click affair in most cases. Keeping your apps updated makes sure you always have the latest security and newest features, and you can check the release notes for any update before you install it (or even while it&rsquo;s installing). Updating apps could not be simpler - just click the \"Update\" button next to any outdated app and MacUpdater will update the app to the current version automatically. MacUpdater can silently run in the back-ground, check your apps for updates every day and let you know about new updates with notifications. Sign up below to enter. Winners will be randomly drawn on Friday, May 17, at 12pm Central. The drawing is for 10 licenses ($14.99 value each) for MacUpdater, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["macos","macupdater","software","central","check","entries","friday","keeping","macupdater","mastodon","sorry","store","updating","winners","affair","among","appreciated","automatically","available","before","below","beyond","brettterpstra","button","check","click","codes","cooperation","developer","drawing","ended","enter","entire","excited","featured","features","first","generating","giveaway","giveaways","ground","hundreds","ignore","including","individual","install","installing","keeps","latest","license","licenses","mailing","makes","maybe","names","newest","notes","notifications","offer","outdated","randomly","reading","release","released","robot","rsquo","security","series","signups","silently","simpler","skipped","software","through","track","tuned","updated","updates","value","vendors","version","visit","while","winner"]
	},{
		"title": "The BBEdit giveaway winners!",
		"url": "/2024/05/12/the-bbedit-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "May 12<span>th</span>, 2024",
		"ts": "1715540940",
		"summary": "The BBEdit giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but BBEdit is still worth checking out. Version 15 is fantastic. Next up is MacUpdater . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["barebones","bbedit","editor","audio","bbedit","check","congratulations","devonthink","focke","hijack","jacob","macupdater","mastodon","monday","omnigraffle","retrobatch","screens","silver","twitter","vantaggi","version","announce","checking","details","email","ended","fantastic","giveaway","giveaways","notifications","received","rsquo","series","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "BBEdit giveaway!",
		"url": "/2024/05/06/bbedit-giveaway/",
		"tags": ["developer","giveaway","macos"],
		"date": "May 6<span>th</span>, 2024",
		"ts": "1715000400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($59.99 value each) for BBEdit. BBEdit is the longest-running text editor on the Mac, and it&rsquo;s only gotten better through the years. With amazing extensibility using AppleScript, a notebook manager, Anaconda Virtual Environments, regex pattern playgrounds, and much, much more, it&rsquo;s the best solution out there for native text editing on the Mac. Version 15 adds a minimap, expandable \"cheat sheets,\" ChatGPT Worksheets, a new interface for Text Factories, and more. If you&rsquo;re writing Markdown or HTML, developing software, or manipulating text in any way, you should definitely check it out. BBEdit is the leading professional HTML and text editor for macOS. This award-winning product has been crafted to serve the needs of writers, Web authors and software developers, and provides an abundance of features for editing, searching, and manipulation of prose, source code, and textual data. Sign up below to enter. Winners will be randomly drawn on Friday, May 10, at 12pm Central. The drawing is for 3 licenses ($59.99 value each) for BBEdit, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["barebones","bbedit","editor","anaconda","applescript","bbedit","central","chatgpt","check","entries","environments","factories","friday","markdown","mastodon","sorry","version","virtual","winners","worksheets","amazing","among","appreciated","authors","award","below","beyond","brettterpstra","cheat","check","codes","cooperation","crafted","definitely","developer","developers","developing","drawing","editing","editor","ended","enter","excited","expandable","extensibility","featured","features","first","generating","giveaway","giveaways","gotten","interface","leading","license","licenses","longest","macos","mailing","manager","manipulating","manipulation","maybe","minimap","names","native","needs","notebook","offer","pattern","playgrounds","product","professional","prose","provides","randomly","reading","regex","robot","rsquo","running","searching","series","serve","sheets","signups","skipped","software","solution","source","textual","through","tuned","using","value","vendors","visit","winner","winning","writers","writing","years"]
	},{
		"title": "The Acorn giveaway winners!",
		"url": "/2024/05/03/the-acorn-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "May 3<span>rd</span>, 2024",
		"ts": "1714756800",
		"summary": "The Acorn giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Acorn is still worth checking out. Right now Acorn is discounted and you can pick up a copy for just $29.99, and you can save an additional $5 by clicking here. All the image editing power you need in a fast, elegant package! Next up is BBEdit . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["acorn","editing","image","photoshop","acorn","audio","bbedit","check","congratulations","devonthink","gutierrez","hijack","macupdater","mastodon","monday","omnigraffle","retrobatch","right","steve","thevenot","twitter","announce","checking","clicking","details","discounted","editing","elegant","email","ended","giveaway","giveaways","image","notifications","package","received","rsquo","series","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "WriteMapper - writing with mind maps",
		"url": "/2024/05/02/writemapper-writing-with-mind-maps/",
		"tags": ["editor","markdown","marked","mindmapping","writing"],
		"date": "May 2<span>nd</span>, 2024",
		"ts": "1714680780",
		"summary": "One of the major things I use mind maps for is developing longer-form writing. I do best spitting out all of my ideas for topics and chapters into a mind map, then editing the nodes into chapters and paragraphs. I’ve always done this with iThoughts, which has great keyboard shortcuts for navigating and switching between node and notes panels. Then I would view the piece as it came together using Marked’s iThoughts integration, and when it was in a mostly gelled state, I would export Markdown and continue editing in MultiMarkdown Composer. I’m going to continue using iThoughts for as long as it survives (in case you missed it, it was announced recently that support and development has been discontinued). As I mentioned in a previous post, I’m going to trust MindNode to fill in the gap left behind when the time comes. But for writing, I’ve been playing with a new app called WriteMapper (which I mentioned previously in a Web Excursions post). WriteMapper is specifically designed for the above use case. It&rsquo;s developed by a solo indie dev (Guan), who&rsquo;s built it out into a very polished app. Writing in mind map form makes it really easy to organize (and reorganize) content as you write, and to pop between topics as inspiration hits. You can write very specific pieces in each node, and easily arrange them in a way that makes sense, without having to plan far in advance. Sure, you can do the same thing with copy/paste in your editor, but I work best with the map layout. As a side note, MultiMarkdown Composer has a great feature where you can open the Table of Contents view and drag sections around (based on headers) to reorganize the document. It reminds me of an old iOS app called Paragraphs, which I loved but I don’t think it stood the test of time. I&rsquo;m writing this post in WriteMapper right now, and I&rsquo;m finding it very enjoyable. WriteMapper has a great editor built in. It&rsquo;s a much more polished editing experience than writing in iThoughts was. It gives you all your standard shortcuts for bold, italics, and ⌘+K for links, and it’s easy to add headlines, though most of those will be added using the node titles. The editor is your basic plain text editor with a rich text overlay, a la IA Writer or to some extent Ulysses, but closer to a WYSYWIG editor in a platform like WordPress. It&rsquo;s slick and comfortable to work in, though you can&rsquo;t see a Markdown view, which I miss from some Markdown-based editors&hellip;",
		"keywords": ["keyboard","microsoft","shortcut","shortcuts","autosave","check","command","composer","contents","dictionary","document","double","editor","escape","excursions","features","hitting","however","inserting","jekyll","keyboard","learn","liquid","markdown","marked","mindnode","multimarkdown","openai","paragraphs","pasting","preferences","shortcuts","software","table","ulysses","wysywig","while","wordpress","wrapping","writemapper","writer","writing","above","accept","added","again","alleviates","angling","announced","another","anyway","appear","arrange","array","asterisks","autocorrect","available","backticks","balance","based","basic","behaves","behind","between","block","blockquote","blocks","blogging","brainstorm","brettterpstra","built","bullet","bulleted","bullets","called","capable","change","changes","chapters","character","cheap","check","child","chokes","choose","class","click","closer","combinations","combiner","comes","comfortable","compatibility","consider","considerations","construct","contacted","content","continue","continued","convert","copying","count","crash","custom","customize","designed","developed","developer","developers","developing","development","different","directly","discontinued","display","document","documents","doesn","easily","editing","editor","editors","either","enjoyable","enough","entering","entirely","essential","everything","excursions","experience","export","extensions","feasible","feature","features","figuring","finding","format","formats","formatted","frequency","front","fully","gelled","gives","going","gotten","grammar","great","handling","happy","haven","having","header","headers","headlines","height","helped","highlighted","horizontal","however","https","ithoughts","ideas","image","images","implementation","implements","important","improve","indenting","indie","inline","inspiration","integrating","integration","irrelevant","issues","italic","italics","ithoughts","keyboard","keycombo","layout","ldquo","license","linear","links","lists","loading","longer","loved","macos","maintain","major","makes","manually","marked","mdash","meant","media","mentioned"]
	},{
		"title": "Conductor fixes and improvements",
		"url": "/2024/04/29/conductor-fixes-and-improvements/",
		"tags": ["conductor","customization","markdown","marked","plugin","scripting"],
		"date": "Apr 29<span>th</span>, 2024",
		"ts": "1714410000",
		"summary": "I&rsquo;ve made some important fixes and handy improvements to the Marked Conductor since it was first published. I&rsquo;ve made my own config available as an example. Not all of the scripts are polished, but it&rsquo;s complete enough to show how I&rsquo;m using it. I still need to finish breaking my Jekyll preprocessor script into more manageable chunks, which is complicated because every little method has conditionals, but that&rsquo;s coming. In the meantime, you can find my work in progress here. Here&rsquo;s the rundown. Conductor now outputs more helpful information to STDERR, which you can view in Marked using Help->Show Custom Processor Log. It will display a list of conditions met for the current document, along with any errors. You can also now add a key to any track, and it will be used in the STDERR output instead of the full condition, which is handy for long conditions with lots of booleans. So instead of: Conductor can now run multiple scripts in sequence. There are two ways to do this. Instead of a or , you can use . Then in an array list, you can define a series of and type lines and they&rsquo;ll be run in order, with the output of one being passed to the next, getting the final output from the last script/command in the list. You can add to any track or block. Normally, Conductor stops processing when a condition is met. With , it will continue matching conditions after processing the one with the key, again passing the output of each one to the next. This allows you to, for example, run a preprocessor on a narrow selection of documents, and then run those through a more generalized processor that catches more documents than the narrow selection does. Here&rsquo;s the full changelog since release. Test for pandoc metadata (%%) with or Add key to allow running a series of scripts/commands, each piping to the next Add for tracks to allow processing to continue after a script/command is successful key for comparing to just filename (instead of full path) Add tests for , , , and Tracks in YAML config can have a title key that will be shown in STDERR &lsquo;Conditions met:&rsquo; output Add handling for string and metadata comparisons Added test for MMD metadata, either for presence of meta or for specific keys or key values Allow or (MultiMarkdown) as conditions Return NOCUSTOM if changes are not made by scripts/commands, even though condition was matched Use YAML.load instead of .safe_load to allow&hellip;",
		"keywords": ["github","pandoc","added","allow","changelog","check","conditions","conductor","custom","encoding","fixed","first","frozen","improved","jekyll","marked","multimarkdown","multiple","nocustom","normally","output","processor","return","stderr","stdin","string","titles","tracks","again","allow","allowing","allows","array","available","because","between","block","booleans","breaking","catches","changelog","changes","chunks","coming","command","commands","comparing","comparisons","complicated","conditionals","conditions","config","contains","continue","crash","creating","define","details","directory","display","document","documents","either","encoding","enough","errors","example","filename","finish","first","fixes","flexibility","generalized","getting","gracefully","handling","handy","helpful","important","improvements","information","input","itself","little","lsquo","manageable","matched","matching","meantime","metadata","method","methods","multiple","narrow","output","outputs","pandoc","passed","passing","piping","polished","possible","preprocessor","presence","processing","processor","project","published","reading","release","returning","rsquo","rundown","running","script","scripts","selection","sequence","series","shown","since","specific","stops","string","successful","tests","through","title","track","tracks","using","values"]
	},{
		"title": "Acorn giveaway!",
		"url": "/2024/04/29/acorn-giveaway/",
		"tags": ["giveaway","macos","tools"],
		"date": "Apr 29<span>th</span>, 2024",
		"ts": "1714395600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 licenses ($39.99 value each) for Acorn. If you don&rsquo;t need the bulk of Photoshop but want all of the image editing power, check out Acorn. It loads up in seconds and offers all the image editing tools and flexible image processing you need. I absolutely love Acorn. In addition to standard image editing tools, it has capabilities for text on a path, photo effects, non-destructive filters, and the vector tools you need for design work. Use non-destructive curves, levels, and filters. The GPU power of Metal 2. Add layer masks and selections to touch up your images or make something entirely new. Remove backgrounds, combine images, perform color correction, resize, transform, crop, and much much more. Sign up below to enter. Winners will be randomly drawn on Friday, May 03, at 12pm Central. The drawing is for 2 licenses ($39.99 value each) for Acorn, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["acorn","editing","image","photoshop","acorn","central","check","entries","friday","mastodon","metal","photoshop","remove","sorry","winners","among","appreciated","backgrounds","below","beyond","brettterpstra","capabilities","check","codes","color","cooperation","correction","curves","design","destructive","developer","drawing","editing","effects","ended","enter","entirely","excited","featured","filters","first","flexible","generating","giveaway","giveaways","image","images","layer","levels","license","licenses","loads","mailing","masks","maybe","names","offer","offers","photo","processing","randomly","reading","resize","robot","rsquo","seconds","selections","series","signups","skipped","standard","through","tools","touch","transform","tuned","value","vector","vendors","visit","winner"]
	},{
		"title": "Life after iThoughts",
		"url": "/2024/04/28/life-after-ithoughts/",
		"tags": ["appreview","markdown","marked","mindmapping","plugin"],
		"date": "Apr 28<span>th</span>, 2024",
		"ts": "1714343700",
		"summary": "So a lot of us are wondering what to do now that Toketaware has announced the sunsetting of the iThoughts mind mapping app for Mac and iOS. It&rsquo;s very sad to see it go, but I expect the current version to continue working for a few years to come. That said, I tend to favor software that has at least somewhat of a future. So I&rsquo;ve been testing the waters with some other contenders. The short story is I&rsquo;m moving over to MindNode. I&rsquo;ve always appreciated MindNode (and even added support for it to Marked), but there were some things that made me prefer iThoughts over MindNode. After testing the latest version of MindNode, I can no longer remember what those things were. It&rsquo;s not as feature rich as iThoughts, but for 90% of my mind map purposes, it looks like MindNode will do just fine. I think the last time I made the comparison, MindNode was lacking some of the features it has these days. I&rsquo;ll miss Presentation mode, boundaries and grouping, and things like task completion and priority, but MindNode will work. I&rsquo;m not going into nearly the depth that Allison Sheridan did over on Podfeet with her mind map comparison, but I&rsquo;ll list some of the pros of MindNode for my purposes: Looks great Actively developed Mac and iOS versions Opens iThoughts () files, so I don&rsquo;t have to fret about losing old mind maps Imports Markdown files Can create tasks from nodes (can&rsquo;t do much with them other than check them off, but it&rsquo;s handy for packing lists) Exports Markdown and OPML, among other formats Outline mode Works with Marked (File->Advanced->Preview in Marked) Good keyboard navigation with some customization options Quick entry from tool bar It&rsquo;s on Setapp If you&rsquo;re an Obsidian user, there are some mind mapping plugins available. The \"Enhancing Mind Maps\" plugin is a decent option if you&rsquo;re in Obsidian all the time anyway: Built into obsidian Basic keyboard navigation Transparent layer over plain Markdown files, easily portable and future-proof Works great with Marked using the obsidian-md-filter processor (via Conductor!), and you can easily connect the two with my plugin (which is still waiting for acceptance into the Community Plugins&hellip;) I would also point out that the mind mapping built into Curio is pretty good, and has the benefit of fitting into the crazy cool integrations that Curio provides, linking to other notes and objects, and&hellip;",
		"keywords": ["ithoughts","mapping","mindnode","actively","advanced","allison","basic","built","community","conductor","curio","enhancing","exports","imports","lacks","looks","markdown","marked","mindnode","obsidian","opens","outline","plugins","podfeet","presentation","preview","quick","setapp","sheridan","toketaware","transparent","works","acceptance","added","among","announced","anyway","appreciated","available","benefit","boundaries","built","check","compared","comparison","connect","contenders","continue","crazy","create","customization","decent","depth","developed","easily","entry","expect","favor","feature","features","files","filter","fitting","formats","going","great","grouping","handy","hellip","ithoughts","integrations","keyboard","lacking","latest","layer","linking","lists","longer","looks","losing","management","mapping","moving","navigation","nearly","nodes","notes","objects","obsidian","options","overall","packing","plugin","plugins","point","portable","prefer","priority","processor","project","proof","provides","remember","rsquo","short","software","somewhat","story","sunsetting","support","system","tasks","testing","think","using","version","versions","waiting","waters","wondering","working","years"]
	},{
		"title": "Introducing the Marked Conductor",
		"url": "/2024/04/25/introducing-the-marked-conductor/",
		"tags": ["conductor","customization","markdown","marked","plugin","scripting"],
		"date": "Apr 25<span>th</span>, 2024",
		"ts": "1714069620",
		"summary": "I&rsquo;ve completed my latest side project, the Marked Conductor. Here&rsquo;s the backstory: Marked 2 offers the option to use Custom Processors (and Preprocessors) which allow you use Markdown (and other) flavors with your own commands to convert them to HTML. This is commonly used for processing with Pandoc. Personally, I use it to process my blog posts (and Bunch and other Jekyll help docs) with Kramdown and a bunch of special handlers for previewing the custom Liquid tags and plugins I&rsquo;ve built, process TaskPaper files with their own functions, and process everything else with Marked&rsquo;s built-in processors. In those scripts, you can use environment variables like (the file&rsquo;s extension) or (the file&rsquo;s path) to fork the script and process differently based on things like file type or location. But my custom processor script was getting unwieldy with all of the conditions I was creating, and for people with limited scripting knowledge, it meant having to turn custom processors on and off based on the needs for the current document. Enter Conductor. It&rsquo;s a command line utility that can be set as the custom processor in Marked. It reads from a YAML configuration file where conditions are written in natural language (e.g. tree contains .obsidian) and trigger either a script or a command. Conditions can be booleans (extension is md AND tree contains .obsidian) or they can be nested infinitely to create forked \"tracks\" for handling any type of document. It offers ways of matching YAML frontmatter keys, matching content with strings or regular expressions, detecting whether a file or directory exists anywhere in the parent folders of the file, and more. I won&rsquo;t go into all of the features in this post, but they&rsquo;re all detailed on the project page. The entire project is available on GitHub, but it&rsquo;s published as a gem, so installation is as easy as running . Running once from the command line will build out all of the configuration directories and files. Then it&rsquo;s just a matter of setting up your own tracks and actions. I think this project will be of great interest to anyone using Custom Processors in Marked. Whether you&rsquo;re an avid scripter who&rsquo;s extended it in interesting ways, or just someone who might want Pandoc for documents in your \"Work\" folder, but Kramdown for documents in your \"Blogging\" folder, this project makes it very easy to run Custom Processors&hellip;",
		"keywords": ["github","pandoc","blogging","bunch","community","conditions","conductor","custom","enter","github","jekyll","kramdown","liquid","markdown","marked","obsidian","pandoc","personally","plugins","preprocessors","processors","running","taskpaper","accepted","actions","allow","anyone","anywhere","available","backstory","based","booleans","build","built","bunch","command","commands","commonly","completed","conditionally","conditions","configuration","contains","content","convert","create","creating","custom","detailed","detecting","differently","directories","directory","document","documents","either","entire","environment","everything","exists","expressions","extended","extension","features","files","flavors","folder","folders","forked","frontmatter","functions","getting","great","handlers","handling","happens","having","infinitely","installation","interest","interesting","knowledge","language","latest","limited","location","makes","matching","meant","natural","needs","nested","obsidian","offers","parent","people","plugin","plugins","posts","previewing","process","processing","processor","processors","project","published","reads","regular","rsquo","running","script","scripter","scripting","scripts","setting","special","strings","think","tracks","trigger","tuned","unwieldy","users","using","utility","variables","waiting","where","written"]
	},{
		"title": "The Bear giveaway winners!",
		"url": "/2024/04/25/the-bear-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Apr 25<span>th</span>, 2024",
		"ts": "1714065000",
		"summary": "The Bear giveaway has ended, and I have winners to announce! I&rsquo;m really sorry I accidentally mixed up days and ended the giveaway a day early, but hopefully everyone who was going to sign up already has! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Bear is still worth checking out. If you&rsquo;re journaling, taking notes, or organizing information and love Markdown, you should check it out. Next up is Acorn . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["journaling","taking","acorn","bbedit","check","chris","congratulations","devonthink","dillon","leibowitz","macupdater","markdown","mastodon","matthew","monday","omnigraffle","turner","twitter","accidentally","announce","check","checking","details","email","ended","everyone","giveaway","giveaways","going","hopefully","ithoughtsx","information","journaling","mixed","notes","notifications","organizing","received","rsquo","series","sorry","suggest","taking","through","upcoming","winners","worth"]
	},{
		"title": "Web Excursions for April 22, 2024",
		"url": "/2024/04/22/web-excursions-for-april-22-2024/",
		"tags": ["bookmarks","google","marked"],
		"date": "Apr 22<span>nd</span>, 2024",
		"ts": "1713801600",
		"summary": "Web excursions brought to you in partnership with Fabric, the best way to organize your notes, tasks, and projects in one place. Google Graveyard - Killed by Google Killed by Google is the Google Graveyard. A full list of dead products killed by Google in the Google Cemetery. Up-to-date and shocking in scope. I bet there are a few on here you&rsquo;d never even realized were a thing. xero/figlet-fonts A huge collection of figlet/toilet ascii art fonts from xero. btt.js BetterTouchTool MacOS automation in JS. I haven&rsquo;t played with this yet but it looks really fun. Let me know if you take it for a spin. ttscoff/Marked2-obsidian I made a Marked plugin for Obsidian. It&rsquo;s my first try and I really don&rsquo;t know what I&rsquo;m doing, but it seems to work perfectly. Waiting for it to be included in the Community Plugins for easy install (which could have happened by the time this goes live), but you can install from the source if you&rsquo;re anxious. Let Fabric be your second brain, with an all-in-one AI workspace and smart organizer for all your projects, ideas, notes & links. Check it out today",
		"keywords": ["figlet","fonts","google","javascript","marked","obsidian","bettertouchtool","cemetery","check","community","fabric","google","graveyard","killed","macos","marked","obsidian","plugins","waiting","anxious","ascii","automation","brain","brought","collection","doing","excursions","figlet","first","fonts","happened","haven","ideas","included","install","killed","links","looks","notes","obsidian","organize","organizer","partnership","perfectly","played","plugin","products","projects","realized","rsquo","scope","second","seems","shocking","smart","source","tasks","today","toilet","ttscoff","workspace"]
	},{
		"title": "Bear giveaway!",
		"url": "/2024/04/22/bear-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Apr 22<span>nd</span>, 2024",
		"ts": "1713790800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 1-year subscriptions to Bear Pro ($29.99 value each) for Bear. Bear is a great app for note taking, journaling, and organizing information with Markdown support. It&rsquo;s gorgeous to work with, elegant in its functionality, and works great with Marked for all of your export needs. Powerful tools to take notes, plan your week, write a book, or even build a wiki, fast, native apps that keep pace with your imagination, online and off, and send notes to others, export to many formats, and share ideas with the world&ndash;if you want. Sign up below to enter. Winners will be randomly drawn on Friday, April 26, at 12pm Central. The drawing is for 3 1-year subscriptions to Bear Pro ($29.99 value each) for Bear, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["journaling","taking","central","check","entries","friday","markdown","marked","mastodon","powerful","sorry","winners","among","appreciated","below","beyond","brettterpstra","build","codes","cooperation","developer","drawing","elegant","ended","enter","excited","export","featured","first","formats","functionality","generating","giveaway","giveaways","gorgeous","great","ideas","imagination","information","journaling","license","mailing","maybe","names","native","ndash","needs","notes","offer","online","organizing","others","randomly","reading","robot","rsquo","series","share","signups","skipped","subscriptions","support","taking","through","tools","tuned","value","vendors","visit","winner","works","world","write"]
	},{
		"title": "A plea to nvALT users",
		"url": "/2024/04/20/a-plea-to-nvalt-users/",
		"tags": ["markdown","nvalt","nvultra","writing"],
		"date": "Apr 20<span>th</span>, 2024",
		"ts": "1713624240",
		"summary": "I&rsquo;ve said this before, but I need to keep repeating it based on the number of queries I get. nvALT is at end of life, unless someone picks up the reigns and modernizes the (open source) code base. As it stands now, nvALT barely functions on modern OSs. Fletcher Penney and I have designed nvALT&rsquo;s successor, nvUltra, to work only with a folder full of Markdown files, which is the only way I recommend using nvALT. If your nvALT files are stored as individual Markdown files, switching to nvUltra is no problem, nor is switching to any other Notational-Velocity-like system. It will even work in Obsidian. But if you store your notes as a database only, you&rsquo;re screwed when nvALT stops working for you. So please, if nvALT is still running for you, go into Preferences->Notes->Storage and change \"Store and read notes on disk as\" to \"Plain Text Files.\" If your previous storage method was database, all of your notes will be immediately written out as plain text files, safe and secure and easy to port to a new (working) notes system. The files will now be in the same folder nvALT shows in the folder selector at the top of the Notes preference pane. If your notes are stored as Rich Text Files (RTF), you&rsquo;ll need to convert them to Markdown to make use of other apps like nvUltra, The Archive, or Obsidian. If you don&rsquo;t know Markdown, don&rsquo;t sweat it. It&rsquo;s very easy to learn and it&rsquo;s really just plain text, so as long as you know how to write, you&rsquo;re already kind of writing Markdown. It&rsquo;s only necessary to learn any syntax if you need to do things like create bulleted/numbered lists, add bold or italics, or create links. So, again, please immediately switch your storage method to plain text files. The nvALT database format has no easy out for people ready to switch. I may try to write an importer for nvUltra (or generally to output Markdown), but I have not done so yet. If you want on the nvUltra beta, email me through the contact link on nvultra.com",
		"keywords": ["obsidian","software","taking","archive","files","fletcher","markdown","notational","notes","obsidian","penney","preferences","storage","store","velocity","again","barely","based","before","bulleted","change","contact","convert","create","database","designed","email","files","folder","format","functions","generally","importer","individual","italics","learn","links","lists","method","modern","modernizes","necessary","notes","numbered","nvalt","nvultra","nvultra","output","people","picks","preference","problem","queries","ready","recommend","reigns","repeating","rsquo","running","screwed","secure","selector","shows","source","stands","stops","storage","store","stored","successor","sweat","switch","switching","syntax","system","through","using","working","write","writing","written"]
	},{
		"title": "The Unite 5 giveaway winners!",
		"url": "/2024/04/19/the-unite-5-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Apr 19<span>th</span>, 2024",
		"ts": "1713549600",
		"summary": "The Unite 5 giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Unite 5 is still worth checking out. If you want to turn your most-used websites into powerful standalone apps, Unite is the best way to do it. You can use the link www.bzgapps.com/pstra for 20% off Unite 5 for a limited time. By the way, Unite 5 is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Bear . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["browser","single","unite","acorn","angelo","bbedit","check","congratulations","devonthink","denton","jacobs","macupdater","machils","mastodon","monday","omnigraffle","robert","setapp","shaffer","twitter","unite","williger","amazing","announce","available","bzgapps","checking","details","email","ended","giveaway","giveaways","hundreds","limited","notifications","powerful","pstra","received","rsquo","series","sorry","standalone","subscription","suggest","through","upcoming","websites","winners","worth"]
	},{
		"title": "Unite 5 giveaway!",
		"url": "/2024/04/15/unite-5-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Apr 15<span>th</span>, 2024",
		"ts": "1713186000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($49.99 value each) for Unite 5. Unite creates Single Site Browsers, self-contained apps designed to work with a specific website. You can create an SSB for Facebook, one for Slack, one for any tool you use that has a website. Keep your data separate, customize behaviors, and see the interface the way you want to. Getting started with Unite is simple. Just input a URL, or choose a site from our extensive app library. In just a few clicks, you&rsquo;ll have your very own macOS app, designed by you, for you. Sign up below to enter. Winners will be randomly drawn on Friday, April 19, at 12pm Central. The drawing is for 5 licenses ($49.99 value each) for Unite 5, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["browser","single","unite","browsers","central","check","entries","facebook","friday","getting","mastodon","single","slack","sorry","unite","winners","among","appreciated","behaviors","below","beyond","brettterpstra","choose","clicks","codes","contained","cooperation","create","creates","customize","designed","developer","drawing","ended","enter","excited","extensive","featured","first","generating","giveaway","giveaways","input","interface","library","license","licenses","macos","mailing","maybe","names","offer","randomly","reading","robot","rsquo","separate","series","signups","simple","skipped","specific","started","through","tuned","value","vendors","visit","website","winner"]
	},{
		"title": "The Photos Workbench giveaway winners!",
		"url": "/2024/04/12/the-photos-workbench-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Apr 12<span>th</span>, 2024",
		"ts": "1712943000",
		"summary": "The Photos Workbench giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Photos Workbench is still worth checking out. Make your photo management and organization life easier. Photos Workbench is a complete set of tools to that you&rsquo;ll really appreciate if you have a sizeable photo collection (and who doesn&rsquo;t these days?). You can still save 20% using this link or entering code at checkout. Next up is Unite 5 . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["apple","editing","photo","photos","workbench","acorn","bbedit","check","christopher","congratulations","gilmore","giveaway","hagen","macupdater","marshall","mastodon","monday","omnigraffle","pwterpstra","photos","robert","robot","stuart","thijs","twitter","unite","workbench","yinan","acorn","announce","appreciate","background","barebones","bbedit","brettterpstra","bzgapps","checking","checkout","class","collection","confetti","contact","corecode","coupon","details","didnt","doesn","easier","easydns","email","ended","entering","flyingmeat","giveaway","giveaways","height","highlighter","houdah","https","image","language","loading","macupdater","management","media","nojack","noscript","notifications","omnigraffle","omnigroup","organization","original","photo","photosworkbench","photosworkbench","picture","plaintext","products","received","rouge","rsquo","series","sizeable","sorry","source","srcset","subscribe","suggest","through","title","tools","ttscoff","twitter","unite","upcoming","uploads","using","width","winners","worth"]
	},{
		"title": "Photos Workbench giveaway!",
		"url": "/2024/04/08/photos-workbench-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Apr 8<span>th</span>, 2024",
		"ts": "1712581200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($29 value each) for Photos Workbench. If you&rsquo;ve had an iPhone or any digital camera for a while, Apple Photos is probably chock full of pictures. And you probably haven&rsquo;t named, tagged, geocoded, or rated most of them. Photos Workbench works with Apple Photos to make all of these operations as simple as possible. Take the pain out of organizing your photos! Photos Workbench works with Apple Photos to help you organize, name, and compare your photos. Batch change titles. Drag and drop photos onto a large map to add locations. One-click apply keywords using keyword palettes. Use ★★★★★ ratings to mark and find your best shots. Compare photos and find the images worth editing, printing, or sharing. Sign up below to enter. Winners will be randomly drawn on Friday, April 12, at 12pm Central. The drawing is for 5 licenses ($29 value each) for Photos Workbench, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["apple","editing","photo","photos","workbench","apple","batch","brettterpstra","central","check","compare","entries","friday","giveaway","giveaways","mastodon","photos","robot","sorry","upcoming","winners","workbench","among","apply","appreciated","below","beyond","blockquote","brettterpstra","camera","change","chock","class","click","codes","compare","contact","cooperation","developer","digital","drawing","easydns","editing","ended","enter","excited","featured","first","generating","geocoded","giveaway","giveaways","haven","height","houdah","https","iphone","image","images","keyword","keywords","license","licenses","loading","locations","mailing","maybe","media","named","names","nojack","noscript","offer","operations","organize","organizing","original","palettes","photos","photosworkbench","photosworkbench","picture","pictures","possible","printing","randomly","rated","ratings","reading","robot","rsquo","screenshot","series","sharing","shots","signups","simple","skipped","sorry","source","srcset","strong","subscribe","tagged","through","title","titles","ttscoff","tuned","upcoming","uploads","using","value","vendors","visit","while","width","winner","workbench","works","worth"]
	},{
		"title": "Back in my day... some thoughts on blogging then and now",
		"url": "/2024/04/05/back-in-my-day-dot-dot-dot-some-thoughts-on-blogging-then-and-now/",
		"tags": ["blogging","personal","social"],
		"date": "Apr 5<span>th</span>, 2024",
		"ts": "1712349960",
		"summary": "I&rsquo;ve been blogging for over 20 years now, making websites for 28 years, and before all of that I was running a BBS that had users from all over the U.S. (but only one phone line/modem, so it was slow communication). And I&rsquo;ve seen an unsettling shift over the last 10 years that I feel like writing about. It used to be (10, 20 years ago) that birds of a feather in the blogging world would share each other&rsquo;s work and sustainably build audiences together. I was part of an informal \"network\" of blogs that frequently shared each other&rsquo;s posts, when they were noteworthy, and getting \"seen\" was as easy as making good content. Getting mentioned on a larger site meant measurable traffic and often new subscribers to your work, and it was a meaningful way of building an audience. The audience I currently have is largely a product of those days. My larger projects brought in new readers. 20 years ago MoodBlast was my starting point, then the Blogsmith Bundle got attention from Merlin Man, Marked got attention from Daring Fireball, and all of that netted new traffic and more followers. These days, it&rsquo;s a lot harder, and the attention of major players has much less impact. Bunch got a fair amount of press. Write-ups in major online media outlets, features from creators like David Sparks, and even some print publications worldwide. And I saw a swell in the number of downloads every time, but none of it filtered back to building my readership. Not the way MoodBlast or Marked did a decade ago. I think I&rsquo;m doing better work than ever, and it is getting noticed, it just doesn&rsquo;t tip the needle anymore. I&rsquo;m not suffering for traffic, but \"new\" traffic is definitely coming from unusual and unpredictable places that are nearly impossible to capitalize on. Even getting linked on Hacker News doesn&rsquo;t tip the needle the way it used to (or the way getting Dugg used to. IYKYN.). Gone are the days, seemingly, when I could make something new and have \"major\" bloggers notice my work, and thus increase readership. I don&rsquo;t even know how to scratch the surface of the largest blogs anymore, and many of the independent blogs that I could count on have gone the way of the Dodo. And I, at the age of 45, do not have the energy and \"hustle\" required to make it on new platforms. I will continue doing what I&rsquo;m doing, and will probably eventually follow my peers into digital obscurity. It&rsquo;s not that I steadfastly refuse to&hellip;",
		"keywords": ["media","algorithm","blogsmith","bunch","bundle","creation","daring","david","engine","excursions","fewer","fireball","getting","google","hacker","iykyn","marked","media","medium","merlin","microsoft","moodblast","original","search","social","sparks","substack","write","actively","adapt","advertising","again","allowed","amount","anymore","article","audience","audiences","available","because","becomes","before","behavior","benefit","benefits","between","birds","bloggers","blogging","blogs","boats","brought","build","building","capitalize","chance","changed","charge","click","coming","communication","companies","contact","content","continue","corporation","count","couple","create","creating","creators","cropped","decade","definitely","designed","detritus","digital","disheartening","doesn","doing","downloads","dying","economy","energy","engines","eventually","everything","feather","features","feedback","fewer","filtered","flooded","followers","general","generated","generous","getting","going","gotten","hackers","halcyon","happy","harder","hesitant","honestly","hostile","hustle","impact","impossible","increase","independent","informal","intense","invested","involved","keeping","knock","knowledge","largely","larger","largest","lifts","linked","links","little","major","making","meaningful","meant","measurable","media","mentioned","metric","metrics","modem","money","morass","nearly","needle","netted","network","networks","noteworthy","noticed","obscurity","often","online","original","outlets","output","owning","party","peers","phone","places","platform","platforms","players","point","posts","press","primarily","print","product","profitable","project","projects","provider","publications","quell","readers","readership","reasonable","recognize","refuse","regardless","required","results","reticent","returns","reviews","reward","rewarded","rising","rsquo","running","sales","scratch","seeing","seemingly","sending","share","shared","sharing","shift","sites","social","spend","sponsor","sponsored"]
	},{
		"title": "The The Archive giveaway winners!",
		"url": "/2024/04/05/the-the-archive-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Apr 5<span>th</span>, 2024",
		"ts": "1712337900",
		"summary": "The The Archive giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but The Archive is still worth checking out. If you loved nvALT, The Archive is a great notetaking app that shines in its place. You can still save 33% on your purchase using the code when purchasing. Next up is Photos Workbench . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["archive","notes","taking","acorn","archive","check","congratulations","devon","greene","justin","litke","macupdater","mastodon","michalis","monday","omnigraffle","photos","tomich","twitter","unite","workbench","announce","checking","details","email","ended","giveaway","giveaways","great","loved","notetaking","notifications","nvalt","purchasing","received","rsquo","series","shines","sorry","suggest","through","upcoming","using","winners","worth"]
	},{
		"title": "CurlyQ and automated JavaScript execution",
		"url": "/2024/04/04/curlyq-and-automated-javascript-execution/",
		"tags": ["automator","curlyq","niftymenu","screenshot","scripting","webdesign"],
		"date": "Apr 4<span>th</span>, 2024",
		"ts": "1712255040",
		"summary": "I&rsquo;ve been wanting to add JavaScript execution to CurlyQ for a while and finally got around to it. In case you&rsquo;ve missed it, CurlyQ is my command-line web automation tool for fetching, parsing, and responding to web page content, designed to be used as part of a *NIX pipeline. It can grab titles, links, metadata, and more from any web page. As part of its functionality, it can also use Firefox or Chrome to save screenshots, and that&rsquo;s part of what I&rsquo;ve improved. The command now accepts a parameter. This can be a JavaScript string, or to read from STDIN, or a path to a file which will be read and executed before taking a screenshot. You can also now define an element ID to wait for before taking the screenshot (or executing the script) using . As long as the ID is a valid element on the page, the screenshot will trigger once that element is loaded (via HTML or dynamically), with a timeout of 10 seconds. You can also define a flag in the command to wait for a specified number of seconds after executing a script before the screenshot is taken. Further, I&rsquo;ve added a new subcommand, , that has the same parameters as above and simply allows you to load a page in the browser and execute a script on it. I really wanted this because it&rsquo;s the easiest way to automate NiftyMenu: That command will save a screenshot of the File->Save menu item for me, allowing me to fully automate menu screenshots for any of my apps. I can have NiftyMenu generate an up-to-date view of the app&rsquo;s menu bar, with styling for the current OS, and output detailed screenshots with callouts automatically. This will be a huge timesaver when it comes to documentation. You can update/install the latest version of CurlyQ with . The improvements in this post are available as of version 0.0.12. Enjoy",
		"keywords": ["chrome","google","javascript","chrome","curlyq","enjoy","firefox","javascript","niftymenu","stdin","above","accepts","added","allowing","allows","automate","automatically","automation","available","because","before","browser","callouts","comes","command","content","define","designed","detailed","dynamically","easiest","element","execute","executed","executing","execution","fetching","finally","fully","functionality","improved","improvements","install","latest","links","loaded","metadata","missed","output","parameter","parameters","parsing","pipeline","responding","rsquo","screenshot","screenshots","script","seconds","simply","string","styling","subcommand","taken","taking","timeout","timesaver","titles","trigger","using","valid","version","wanted","wanting","while"]
	},{
		"title": "On using a CDN",
		"url": "/2024/04/02/on-using-a-cdn/",
		"tags": ["server"],
		"date": "Apr 2<span>nd</span>, 2024",
		"ts": "1712091780",
		"summary": "If you run a website and aren&rsquo;t serving your assets from a CDN, I want to highly recommend that you do so. I&rsquo;ve seen significant performance improvements simply by redirecting my image, CSS, and JS requests to a CDN instead of serving them from a server like DreamHost. I like DreamHost just fine, but the time it takes to serve a file and the download speeds it offers are not&hellip; optimal. The idea behind a CDN is that your assets are served from a speed-tuned network of servers that can deliver the fastest speeds using servers located as close as possible to the end user. I can serve up a 1MB image file in about 1/2 the time using a CDN versus serving directly from DreamHost. I&rsquo;ve found CloudFront (Amazon Web Services) to be the easiest to set up and the most affordable option. There are a few good options to explore, though. I haven&rsquo;t done head-to-head testing of all available options, I just know that CloudFront offers some of the highest speeds and one of the most generous free-tier options. I can serve all of my sites&rsquo; assets (Bunch, Marked 2, Dimspire.me, BrettTerpstra.com, and sundry others), including DMGs, zips, images, CSS/JS files, and more, from AWS for about $2/mo. My total AWS bill is $13/mo, and that includes my Glacier backups and S3 storage. Compared to $20/mo for CloudFlare, it&rsquo;s a pretty easy decision for me. Some of the \"fancier\" CDNs can do things like serving different image formats and sizes based on path/query strings, but I haven&rsquo;t been willing to shell out the cash for those. I&rsquo;m not going to do a full tutorial on setting up a CloudFront deployment for a website, but the basic steps are: Most of the other options can be left to their defaults. Here&rsquo;s a more in-depth tutorial. Total setup time is about 30 minutes, including waiting for DNS verification and spin-up time. Of course, then you have to modify your site to make use of the CDN. I have solutions for Jekyll and other SSG generators, if you care to ask. There are multiple WordPress plugins for handling this kind of thing as well. Files served from the CDN are heavily cached, meaning if you want to serve up a new version of a file, updated CSS for example, you need to \"bust\" the cache. This can be done by adding a query string, e.g. to the file url, but it&rsquo;s preferable to use filename versioning. If you&rsquo;re using Apache, you can just include this in your : That will allow you to request and it&hellip;",
		"keywords": ["amazon","cache","cloudfront","dreamhost","services","amazon","apache","brettterpstra","bunch","cname","cloudflare","cloudfront","compared","create","dimspirations","dimspire","doing","dreamhost","files","glacier","javascript","jekyll","marked","navigate","priming","rakefile","services","versioning","wordpress","above","account","adding","affordable","again","allow","anybody","asset","assets","available","avoid","backups","based","basic","behind","bumped","bumping","cache","cached","cause","certificate","change","close","combination","continue","decision","defaults","defined","deliver","deployment","depth","determines","different","directly","distribution","doesn","download","downloading","easiest","example","experience","explore","fancier","fastest","filename","files","first","formats","found","generators","generous","going","handling","happy","haven","having","headers","heavily","hellip","highest","highly","image","images","important","improvements","includes","including","ingest","instantly","latest","loaded","loads","located","logic","meaning","minutes","modify","multiple","needed","network","nobody","offers","optimal","options","origin","others","ownership","performance","plugins","possible","preferable","production","query","recommend","redirecting","region","rendering","requests","requires","revved","rsquo","running","serve","served","server","servers","serves","serving","setting","setup","share","shell","significant","silly","simple","simply","single","sites","sizes","solutions","speed","speeds","steps","storage","string","strings","substitutes","sundry","syncing","takes","templates","testing","through","tuned","tutorial","under","updated","using","verification","version","versioning","versions","versus","waiting","wallpapers","website","whole","willing","written"]
	},{
		"title": "Automating the Dimspirations workflow",
		"url": "/2024/04/01/automating-the-dimspirations-workflow/",
		"tags": ["bunch","desktop","dimspirations","hazel","howzit","markdown","wallpaper"],
		"date": "Apr 1<span>st</span>, 2024",
		"ts": "1712001180",
		"summary": "First, there seems to be a misconception that Dimspirations are generated with AI or some other such trickery. I want to assure you that, while the entire process of posting them is automated, each Dimspiration is lovingly crafted by me in Affinity Photo1. I wanted to detail the automation though, partially for my own reference, and partially just because I&rsquo;m pretty proud of the system. First, I have a template I load up in Affinity Photo. It has guides for all of the various formats that will be produced from the single output file. All I have to do is make sure that the text and necessary parts of background images fit into the smallest guide rectangle, and that the rest of the space is filled with a reasonable amount of background image or matching color. The tallest output is the iPhone version, which on occasion just gets filled with a background color, but I can usually make a background pattern or image fit nicely for iPhone and still look good for all of the other formats. I have a Dimspirations Bunch that opens the template in Affinity Photo, loads up the Desktop and Dimspirations folder in Finder tabs (for keeping track of the rest of the process below), and opens up Adobe Stock in my browser for grabbing those sweet, sweet background images. So to get started on a Dimspiration, I just hit (my assigned shortcuts in Bunch). The new Dimspiration gets saved-as with a slugified version of the title I want it to have on the site, e.g. \"The end of the world\" gets saved as . Then I output a JPEG of the whole image with the same slug (populated by default), tag it with in the save panel, and save it to the Desktop. Hazel watches the Desktop for JPEGS, removes the tag, and automatically opens the image in a RetroBatch applet called \"Dimspiration.\" The RetroBatch applet saves various formats with suffix (3 desktop wallpapers, 1 iPhone wallpaper, Twitter and Facebook preview images, an Instagram-ready version, and the 1x and 2x versions of the square image for the website). Upon writing the files, they then get sent to ImageOptim for optimization. The optimized files get saved to a new \"Dimspirations\" folder. Hazel watches the \"Dimspirations\" folder and copies wallpaper formats to an upload folder, where Hazel (again) uploads those images to Flickr as screenshots in a DimPapers album, then deletes the copied files. Hazel then moves all of the image files to the Dimspire.me website assets folder. I then open up iTerm (visor mode&hellip;",
		"keywords": ["iphone","tagging","adobe","affinity","apple","bunch","canva","click","composer","control","desktop","dimpapers","dimspiration","dimspirations","dimspire","facebook","finder","first","flickr","flying","hazel","howzit","hyper","imageoptim","imageoption","instagram","jpegs","jpegs","jekyll","lovingly","markdown","multimarkdown","photo","rakefile","retrobatch","retrobatch","shift","stock","store","template","twitter","whenever","acquired","added","adding","affinity","afphoto","again","album","aliases","amount","animal","applet","assets","assigned","assure","automated","automatically","automation","avoid","background","backlink","batch","because","becomes","before","below","betting","brettterpstra","browser","build","buildnotes","built","buldnotes","bunchapp","burden","cache","called","calls","caption","changes","check","checked","class","clearing","color","combiner","content","copied","copies","craft","crafted","created","creating","creation","custom","default","deletes","deploy","deploying","desktop","detail","dimspiration","dimspirations","dimspire","directory","display","double","download","downloads","endnotes","entire","execute","extract","extracts","extrapolate","extrapolated","figcaption","figure","filename","files","filled","filling","flyingmeat","fnref","folder","footnote","footnotes","formats","forum","freedmand","frontmatter","fuzzy","generated","generates","getting","github","grabbing","grows","guide","guides","haven","hazel","height","highlighter","history","howzit","https","iphone","iterm","image","imageoptim","images","implementing","increasingly","incremental","interested","keeping","keycombo","language","latest","layout","ldquo","loading","loads","longer","looks","lovingly","making","manifest","manual","matching","media","minute","misconception","missing","moves","multimarkdown","necessary","nicely","noscript","noteref","opens","optimization","optimized","original","output","outputs","panel","parts","pattern","picture","pieces","plaintext","point","populated","posting","posts","preview","previewing","pricing","process"]
	},{
		"title": "The Archive giveaway!",
		"url": "/2024/04/01/the-archive-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Apr 1<span>st</span>, 2024",
		"ts": "1711976400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($19.99 value each) for The Archive. While everyone is waiting for nvUltra to finally be released, The Archive stepped in quite a while ago to fill the gap left as nvALT (and Notational Velocity) get long in the tooth. If you&rsquo;re a fan of the modal note taking of NV, you&rsquo;ll love The Archive. A tool should serve you, not the other way around. Use The Archive your own way and don’t be forced into unnatural habits. Note-taking, Getting Things Done, a thinking environment, or even as a database for entomology (scientific study of insects) – The Archive will do the job. Sign up below to enter. Winners will be randomly drawn on Friday, April 05, at 12pm Central. The drawing is for 3 licenses ($19.99 value each) for The Archive, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["archive","notes","taking","archive","brettterpstra","central","check","entries","fools","friday","getting","giveaway","giveaways","mastodon","notational","robot","sorry","upcoming","velocity","while","winners","among","appreciated","archive","below","beyond","blockquote","brettterpstra","class","codes","contact","cooperation","database","developer","drawing","easydns","ended","enter","entomology","environment","everyone","excited","featured","finally","first","forced","generating","giveaway","giveaways","habits","height","https","image","insects","license","licenses","loading","mailing","maybe","media","modal","names","nojack","noscript","nvalt","nvultra","offer","original","picture","randomly","reading","released","robot","rsquo","scientific","screenshot","series","serve","signups","skipped","sorry","source","srcset","stepped","strong","study","subscribe","taking","thearchive","thinking","through","title","tooth","ttscoff","tuned","unnatural","upcoming","uploads","value","vendors","visit","waiting","while","width","winner","zettelkasten"]
	},{
		"title": "The EagleFiler giveaway winners!",
		"url": "/2024/03/29/the-eaglefiler-giveaway-winners/",
		"tags": ["email","giveaway"],
		"date": "Mar 29<span>th</span>, 2024",
		"ts": "1711735200",
		"summary": "The EagleFiler giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but EagleFiler is still worth checking out. Capture web pages, emails, Evernote items, or any file on your Mac and make them easily searchable and trackable. You can still save 20% on your purchase with the code at the C-Command store. Next up is The Archive . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["eaglefiler","filing","productivity","acorn","archive","ashley","capture","check","command","congratulations","eaglefiler","evernote","hanley","mastodon","monday","olivia","omnigraffle","photos","stewart","twitter","unite","workbench","announce","checking","details","easily","email","emails","ended","giveaway","giveaways","items","notifications","pages","received","rsquo","searchable","series","sorry","store","suggest","through","trackable","upcoming","winners","worth"]
	},{
		"title": "Web Excursions for March 29, 2024",
		"url": "/2024/03/29/web-excursions-for-march-29-2024/",
		"tags": ["bookmarks","keycaps"],
		"date": "Mar 29<span>th</span>, 2024",
		"ts": "1711732200",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. N₁₀ - Attention Management App for Mac A simple, elegant Mac app that allows you to set an intention, define how much time you plan to put into it, and then just sit, quietly reminding you of what you want to be working on with subtle but all-encompassing animations. Perfect for those of us who say \"OK, now I&rsquo;m really going to work on this\" and then find ourselves doing something entirely different within five minutes H/T Jason Rhemus and props to props to developer Sam Stephenson. Again with man pages and BBEdit - All this Really nice trick for Terminal junkies who use BBEdit. I have a similar trick for sublime, and one that opens man pages in Preview, but this one provides additional navigation that none of mine have. Mimestream \"A native macOS email client for Gmail.\" This looks so good, especially considering MailPlane is dead. If only I didn&rsquo;t have iCloud and Exchange email accounts I need to deal with, too. Interstellar Resin Keycap I ordered this keycap to replace my custom rocket keycap that I use for my hyper key. Available in 2.25u (Enter) size. It should arrive today and I&rsquo;m very excited. I&rsquo;ll post pictures once I&rsquo;ve installed it",
		"keywords": ["apple","bbedit","gmail","icloud","mailplane","again","available","bbedit","brett","cleanmymac","enter","exchange","gmail","interstellar","jason","keycap","mailplane","management","mimestream","preview","resin","rhemus","stephenson","terminal","absolute","accounts","again","allows","animations","arrive","bbedit","border","brettterpstra","brought","class","click","client","considering","custom","define","developer","different","display","doing","elegant","email","encompassing","entirely","especially","excited","excursions","going","height","hidden","holding","https","hyper","icloud","image","impactradius","installed","intention","interstellar","jason","junkies","keycap","ldquo","leancrew","listing","loading","looks","macos","macpaw","mastodon","media","mimestream","minutes","native","navigation","noscript","opens","ordered","original","ourselves","pages","partnership","picture","pictures","position","props","provides","quietly","rdquo","reminding","replace","resin","rocket","rsquo","similar","simple","social","source","speed","srcset","sstephenson","style","sublime","subtle","title","today","tools","trick","uploads","visibility","width","within","working"]
	},{
		"title": "EagleFiler giveaway!",
		"url": "/2024/03/25/eaglefiler-giveaway/",
		"tags": ["giveaway","macos","search"],
		"date": "Mar 25<span>th</span>, 2024",
		"ts": "1711379400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 licenses ($59.99 value each) for EagleFiler. EagleFiler is an amazing tool for cataloging and searching all of your information, from web pages to emails and every kind of file you need to keep track of. It gives you a Mail-like interface for viewing all of your data, supports tagging and notes, and offers AES encryption. Organize files, archive e-mails, save Web pages and notes, search everything. The live search is faster than Spotlight, and you can also set up smart folders and smart folder actions. Search all your files and e-mail attachments, and see the matches highlighted. Sign up below to enter. Winners will be randomly drawn on Friday, March 29, at 12pm Central. The drawing is for 2 licenses ($59.99 value each) for EagleFiler, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["eaglefiler","filing","productivity","central","check","eaglefiler","entries","friday","mastodon","organize","search","sorry","spotlight","winners","actions","amazing","among","appreciated","archive","attachments","below","beyond","brettterpstra","cataloging","codes","cooperation","developer","drawing","emails","encryption","ended","enter","everything","excited","faster","featured","files","first","folder","folders","generating","giveaway","giveaways","gives","highlighted","information","interface","license","licenses","mailing","mails","matches","maybe","names","notes","offer","offers","pages","randomly","reading","robot","rsquo","search","searching","series","signups","skipped","smart","supports","tagging","through","track","tuned","value","vendors","viewing","visit","winner"]
	},{
		"title": "The Flexibits Premium giveaway winners!",
		"url": "/2024/03/22/the-flexibits-premium-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Mar 22<span>nd</span>, 2024",
		"ts": "1711127400",
		"summary": "The Flexibits Premium giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Flexibits Premium is still worth checking out. Get all of Flexibits apps for one low monthly fee. That&rsquo;s the excellent Fantastical calendar, the uber-handy Scheduling, and the indispensable Cardhop. Check it out! Next up is EagleFiler . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["calendar","cardhop","contacts","fantastical","acorn","archive","ashish","bhateja","cardhop","check","clemmensen","congratulations","derek","eaglefiler","fantastical","flexibits","focke","giveaway","goring","hawker","johan","lubberts","lucas","mastodon","monday","norman","pedro","photos","premium","robot","romin","scheduling","silva","simon","twitter","unite","workbench","acorn","announce","archive","background","brettterpstra","bzgapps","calendar","checking","class","command","confetti","contact","details","didnt","eaglefiler","easydns","email","ended","excellent","flexibits","flyingmeat","giveaway","giveaways","handy","height","houdah","https","image","indispensable","loading","media","monthly","nojack","noscript","notifications","original","photosworkbench","picture","pricing","received","rsquo","series","sorry","source","srcset","subscribe","suggest","through","title","ttscoff","twitter","unite","upcoming","uploads","width","winners","worth","zettelkasten"]
	},{
		"title": "Revisiting TagFiler and Vitag",
		"url": "/2024/03/22/revisiting-tagfiler-and-vitag/",
		"tags": ["finder","hazel","search","spotlight","tagfiler","tagging","tools","vitag"],
		"date": "Mar 22<span>nd</span>, 2024",
		"ts": "1711125540",
		"summary": "I haven&rsquo;t mentioned this setup for a while and thought I&rsquo;d remind everyone, especially newer readers, about a rabbit hole they might choose to go down. I haven&rsquo;t updated or changed any of these scripts since posting, and they&rsquo;re all still working well. First up, I&rsquo;ll mention TagFiler. This is a single script that runs via Hazel, sorting files into a shallow filesystem using Finder tags. You set up \"context\" folders which are tagged with , e.g. or . Then you create a shallow system of subfolders tagged with relevant keywords, preceded with , e.g. or . You can nest those folders as deep as you like, but the idea is to make it easy to target them. Then you tag individual files with , and subtopics can be nested like to file in . The nice thing about these tags with punctuation is they create something like nested tagging, which Finder lacks. When searching with Spotlight (or HoudahSpot), you can search any part of a colon-separated tag (this works for any punctuation, TagFiler just uses colons). So with the above example, I can search for and get the tagged file as a result. Then, when tagging files in Finder (or, again, HoudahSpot as it has great autocompletion for tagging), the tags will autocomplete as if they were nested, and just typing will bring up all of the colon-separated versions of the tag. This tagging system has been working perfectly for me for years now. I collect all my files throughout the day on my Desktop and in my Downloads folder. Hazel tags new files with , and then at the end of the day (or the beginning of the next one) I open up a saved search in HoudahSpot that shows me all files in my main \"inbox\" folders. I can then use HoudahSpot&rsquo;s autocompletion to tag the files appropriately, and Hazel just whisks them off to their target folder. This saved search could also just be a Smart Folder in Finder, but Smart Folders can&rsquo;t narrow down to multiple specific directories. In HoudahSpot this can be accomplished using saved searches and filtering. The nice thing about this system is that I can also find any TagFiler-tagged file using Spotlight without digging through the folders. But if anything ever happened to my tags (a metadata disaster&hellip;), I&rsquo;d still have a reasonable folder structure for finding all of my files. It&rsquo;s also nice when archiving projects to a NAS or other storage system that doesn&rsquo;t have Spotlight searching. I have a little Bash function called cdt&hellip;",
		"keywords": ["files","finder","shortcut","trash","&#39;subl","bbedit","command","context","desktop","downloads","finder","first","folder","folders","hazel","houdahspot","neovim","personal","powerful","projects","purple","search","simply","smart","software","spotlight","sublime","tagfiler","terminal","textexpander","trash","unlike","useful","vidir","vitag","ability","above","accessible","accomplished","again","although","appropriately","archiving","autocomplete","autocompletion","batch","because","before","beginning","blockquote","bracketed","brettterpstra","bring","called","changed","choice","choose","class","cleanup","close","collect","colon","colons","combiner","command","common","companion","contain","containing","context","contexts","couple","create","custom","deals","default","deletes","deleting","dialog","digging","dimspirations","directories","directory","disaster","doesn","doing","easily","editor","element","especially","everyone","example","faced","figcaption","figure","filed","filename","filer","files","filesystem","filtering","finder","finding","first","folder","folders","function","functions","fuzzy","general","github","great","happened","haven","hazelscreenshot","height","hellip","helps","highlighter","highlighting","houdah","houdahspot","https","image","inbox","inboxes","individual","innovations","issues","keyboard","keycombo","keywords","lacks","language","ldquo","little","loading","loads","marketing","master","mdash","media","mention","mentioned","metadata","modifying","moves","multiple","narrow","navigating","navigation","needed","nested","newer","noodlesoft","noscript","nothing","nvultra","optionally","original","outright","package","paste","perfectly","picture","plaintext","popping","posting","preceded","projects","provides","punctuation","quickly","rabbit","rather","rdquo","readers","reading","reasonable","relate","relevant","remains","remind","remove","results","rouge","rsquo","saved","screenshot","script","scripts","search","searches","searching","separated","setup","shallow","share","shared","shortcut","shortcuts","showing","shows","since"]
	},{
		"title": "Web Excursions for March 19, 2024",
		"url": "/2024/03/19/web-excursions-for-march-19-2024/",
		"tags": ["bookmarks"],
		"date": "Mar 19<span>th</span>, 2024",
		"ts": "1710862380",
		"summary": "Web excursions brought to you in partnership with CleanShot X, the absolute, hands-down best app for Mac screenshots. Get one of my all-time favorite apps here. Deckset on the App Store Just when I thought Deckset was dead, an iOS version is announced. Create presentations using Markdown, now on your iPhone/iPad. iA Presenter A newer option for Markdown-based presentations (from the creators of iA Writer and based on the same engine) that I think this might be even better than Deckset. Going to give it a test run for a while, but off the bat it looks really slick. freedmand/textra macOS 13+ only, a simple command line interface to the OS&rsquo;s built-in OCR and transcription frameworks. The OCR works really well. Really, really well (I&rsquo;m using it to add automatic ALT tags to Dimspirations and it deals with text in crazy fonts on crazy backgrounds). I haven&rsquo;t gone far with testing the audio transcription, but I have high expectations. Ground News This is advertised on almost every YouTube channel I subscribe to, so I decided to check it out. It&rsquo;s really good. If you want to break out of your news bubble and understand what the other side is hearing and thinking, Ground News provides all kinds of tools for doing so. Highly recommended. I&rsquo;m trying to get my parents to use it, but even if they don&rsquo;t, it helps me see the headlines that are going to affect them in their bubble so I&rsquo;m not shocked when topics come up that I&rsquo;ve seen no trace of previously. I do all of my screenshots and screen recordings with CleanShot X. I love it to pieces. You should get it",
		"keywords": ["github","iphone","markdown","price","store","brett","cleanshot","create","dkrzyd","deckset","dimspirations","going","ground","highly","markdown","presenter","store","writer","youtube","absolute","advertised","almost","announced","apple","audio","automatic","backgrounds","based","break","brettterpstra","brought","bubble","built","channel","check","class","cleanshot","command","crazy","creators","deals","decided","deckset","dimspire","doing","engine","excursions","expectations","favorite","fonts","frameworks","freedmand","github","going","ground","hands","haven","headlines","hearing","height","helps","holding","https","iphone","image","interface","itscg","itsct","kinds","loading","looks","macos","media","newer","noscript","original","parents","partnership","picture","pieces","presentations","presenter","previously","provides","recommended","recordings","rsquo","screen","screenshots","shocked","simple","slick","source","srcset","subscribe","testing","textra","think","thinking","thought","title","tools","topics","trace","transcription","trying","understand","uploads","using","version","while","width","works"]
	},{
		"title": "Flexibits Premium giveaway!",
		"url": "/2024/03/18/flexibits-premium-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Mar 18<span>th</span>, 2024",
		"ts": "1710766800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 10 1-year subscriptions ($57 value each) for Flexibits Premium from Flexibits. Flexibits makes some incredibly useful apps. Fantastical is an awesome Calendar replacement, Scheduling makes organizing calls and meetings a breeze, and Cardhop is the perfect way to manage and access your contacts. The Flexibits Premium subscription gets you access to all three, on all your devices. A single subscription unlocks all premium features in Fantastical and Cardhop across all your devices. Your calendars, tasks, and contacts will be more powerful, more productive, and more fun. Sign up below to enter. Winners will be randomly drawn on Friday, March 22, at 12pm Central. The drawing is for 10 1-year subscriptions ($57 value each) for Flexibits Premium, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["calendar","cardhop","contacts","fantastical","calendar","cardhop","central","check","entries","fantastical","flexibits","friday","mastodon","premium","scheduling","sorry","winners","access","across","among","appreciated","awesome","below","beyond","breeze","brettterpstra","calendars","calls","codes","contacts","cooperation","developer","devices","drawing","ended","enter","excited","featured","features","first","generating","giveaway","giveaways","incredibly","license","mailing","makes","maybe","meetings","names","offer","organizing","powerful","premium","productive","randomly","reading","replacement","robot","rsquo","series","signups","single","skipped","subscription","subscriptions","tasks","through","tuned","unlocks","useful","value","vendors","visit","winner"]
	},{
		"title": "Build a custom URL shortener",
		"url": "/2024/03/16/build-a-custom-url-shortener/",
		"tags": ["customization","hosting","server","shortly"],
		"date": "Mar 16<span>th</span>, 2024",
		"ts": "1710612000",
		"summary": "I wanted short urls for Dimspirations, and I wanted a custom domain name (dim.moi), but didn&rsquo;t want to pay the somewhat exorbitant prices to do so with something like Bit.ly. So I set out to build my own URL shortener. PHP/mySQL seemed like the path of least resistance on my current server setup, so I went looking for existing tools that met my needs without too much complication. I found Shorty by Mike Cao, a decade-old project that still worked just fine. I forked it and built a tool called Shortly on top of it. It uses all of the base code of Shorty with my own additions, so full credit for this goes to Mike, but it has enough changes specific to my needs that I&rsquo;m not pushing my fork upstream. Shortly is a basic URL shortener. You just have to register your short domain, set up basic PHP/mySQL hosting for it, and then install the files. So the total cost is one domain registration, plus whatever hosting you use for it. It requires very few resources, so a simple $5 shared hosting plan will work fine. I have multiple servers where adding new domains doesn&rsquo;t cost me anything, so I went with a Dreamhost server for this and built it for just the cost of a TLD ($30/yr, if I recall correctly). The install instructions are detailed in the README and on the project page. It&rsquo;s pretty simple, just creating a mySQL database and importing an SQL file to set up the simple database. In about 15 minutes you can have a custom URL shortener that outputs urls like dim.moi/eQ and passes them through to the full url on the target site. All of my Dimspirations now have short urls, and I can generate new ones with a simple call from my build system. For my particular needs, my shortener will only shorten URLs from , will forward unknown urls like to , and will append some UTM parameters to any url it shortens so I can track usage. Part of the impetus for this was I wanted to include UTM parameters in the links I offered for sharing, but didn&rsquo;t want to make ungainly URLs. With Shortly, I can add any query parameters I like to a url and end up with a simple url to share. And I can shorten to without even using the API (as the unrecognized slug automatically gets forwarded to the base url ). Hopefully this inspires some fun projects of your own, and revives a great little project that Mike Cao started. It&rsquo;s such a simple concept that I&rsquo;m sure there are dozens, if not hundreds, of permutations of it. This is just the one I&hellip;",
		"keywords": ["bitly","domain","hyperlink","mysql","shortner","accept","allow","amazon","check","cloudfront","default","dimspirations","dreamhost","dropzone","github","hopefully","readme","shortly","shorty","subdomain","added","adding","additions","analytics","append","appending","aside","automatically","bandwidth","basic","before","bucket","build","built","called","calls","changes","check","codes","commented","complication","concept","config","containing","correctly","create","creating","credit","custom","database","decade","destination","detailed","details","doesn","dollar","domain","domains","dozens","easiest","enough","exorbitant","expense","files","forked","format","forwarded","forwarding","forwards","found","great","hosted","hosting","hundreds","hyphens","impetus","importing","inspires","install","instance","instructions","lacks","limiting","links","little","longurl","looking","minimal","minutes","multiple","mysql","needs","niceties","offered","output","outputs","parameters","particular","passes","paths","permutations","prices","project","projects","pushing","query","recall","register","registration","requires","resistance","resources","revives","rsquo","running","script","seemed","server","servers","settings","setup","share","shared","sharing","short","shorten","shortened","shortener","shortening","shortens","simple","solution","somewhat","specific","started","strings","system","target","through","tools","track","ungainly","unknown","unrecognized","upstream","usage","using","wanted","whatever","where","worked","worth"]
	},{
		"title": "The Bike giveaway winners!",
		"url": "/2024/03/15/the-bike-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Mar 15<span>th</span>, 2024",
		"ts": "1710525600",
		"summary": "The Bike giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Bike is still worth checking out. You can still save 20% with the coupon code at checkout. Get the simple yet powerful outliner today! Next up is Flexibits Premium . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["outliner","albert","archive","check","christoph","congratulations","eaglefiler","flexibits","foley","mastodon","monday","nicholas","photos","premium","schneider","twitter","unite","willis","workbench","announce","checking","checkout","coupon","details","email","ended","giveaway","giveaways","notifications","outliner","powerful","received","rsquo","series","simple","sorry","suggest","through","today","upcoming","winners","worth"]
	},{
		"title": "Bike giveaway!",
		"url": "/2024/03/11/bike-giveaway/",
		"tags": ["giveaway","macos","support"],
		"date": "Mar 11<span>th</span>, 2024",
		"ts": "1710162000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($29.99 value each) for Bike. Bike is a deceptively simple outliner. It uses plain text files (HTML, but also supports OPML and text) to store structured data that maintain simplicity while offering a ton of functionality. Add row types like headings, ordered lists, task lists, and more. Create deep-links into your outline (works great with Hookmark). Bike&rsquo;s nimble. Use it as the main app for a big project or as a supporting app for notes and ideas. Standard file formats, shortcuts support, and scripting allow Bike to integrate with your existing workflows. Sign up below to enter. Winners will be randomly drawn on Friday, March 15, at 12pm Central. The drawing is for 3 licenses ($29.99 value each) for Bike, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["outliner","central","check","create","entries","friday","hookmark","mastodon","sorry","standard","winners","allow","among","appreciated","below","beyond","brettterpstra","codes","cooperation","deceptively","developer","drawing","ended","enter","excited","featured","files","first","formats","functionality","generating","giveaway","giveaways","great","headings","ideas","integrate","license","licenses","links","lists","mailing","maintain","maybe","names","nimble","notes","offer","offering","ordered","outline","outliner","project","randomly","reading","robot","rsquo","scripting","series","shortcuts","signups","simple","simplicity","skipped","store","structured","support","supporting","supports","through","tuned","types","value","vendors","visit","while","winner","workflows","works"]
	},{
		"title": "The Things for Mac and iOS giveaway winners!",
		"url": "/2024/03/08/the-things-for-mac-and-ios-giveaway-winners/",
		"tags": ["giveaway","macos"],
		"date": "Mar 8<span>th</span>, 2024",
		"ts": "1709924400",
		"summary": "The Things for Mac and iOS giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Things for Mac and iOS is still worth checking out. Things will help you get organized, and get your stuff done. Next up is Bike . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["productivity","aaron","archive","check","congratulations","daniel","doron","eaglefiler","ferkenstad","flexibits","mastodon","monday","myers","nathan","panzier","photos","premium","twitter","unite","workbench","announce","checking","details","email","ended","giveaway","giveaways","notifications","organized","received","rsquo","series","sorry","stuff","suggest","through","upcoming","winners","worth"]
	},{
		"title": "Things for Mac and iOS giveaway!",
		"url": "/2024/03/04/things-for-mac-and-ios-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Mar 4<span>th</span>, 2024",
		"ts": "1709560800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 (sets of) licenses for Mac, iPhone, and iPad ($80 combined values) for Things. Things is a task management solution that I love for its elegance. Display your todos alongside calendar events, see exactly what you have to do today, see upcoming tasks, and break large projects down into manageable pieces. Things makes it easy. Within the hour, you’ll have everything off your mind and neatly organized – from routine tasks to your biggest life goals – and you can start focusing on what matters today. Sign up below to enter. Winners will be randomly drawn on Friday, March 08, at 12pm Central. The drawing is for 5 licenses for Mac and iOS ($80 value each). for Things for Mac and iOS, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["productivity","brettterpstra","central","check","display","entries","friday","giveaway","giveaways","mastodon","robot","sorry","upcoming","winners","within","alongside","among","appreciated","below","beyond","biggest","blockquote","break","brettterpstra","calendar","class","codes","contact","cooperation","culturedcode","developer","drawing","easydns","elegance","ended","enter","events","everything","excited","featured","first","focusing","generating","giveaway","giveaways","goals","height","https","iphone","image","license","licenses","loading","mailing","makes","manageable","management","matters","maybe","media","names","neatly","nojack","noscript","offer","organized","original","picture","pieces","projects","randomly","reading","robot","routine","rsquo","screenshot","series","signups","skipped","solution","sorry","source","srcset","strong","subscribe","tasks","through","title","today","todos","ttscoff","tuned","upcoming","uploads","value","values","vendors","visit","width","winner"]
	},{
		"title": "Dimspirations Merch!",
		"url": "/2024/03/02/dimspirations-merch/",
		"tags": ["dimspirations"],
		"date": "Mar 2<span>nd</span>, 2024",
		"ts": "1709395920",
		"summary": "I&rsquo;ve created the initial round of merchandise for the Dimspirations Store. I know my sense of humor isn&rsquo;t for everyone, which is why this whole project is on a different site. I&rsquo;ve started with some of my personal favorites as tees, mugs, and a 2024 calendar. The collection will grow over time (it&rsquo;s print-on-demand, no cost to me to expand the selection). I&rsquo;ll also adjust pricing based on feedback. I think the prices are pretty competitive based on what I&rsquo;ve spent on merch myself. I&rsquo;m using Sellfy for the printing and delivery. I&rsquo;ve used Spring in the past and checked out Printful and Cotton Bureau, but Sellfy seemed like the best solution with the most competitive pricing. I already paid for a 1-year package, so let&rsquo;s hope it works out. If it does, I&rsquo;ll probably relaunch the BrettTerpstra.com (Lab) merchandise there as well. Please do check out the store, and if you like what you see, toss a couple bucks my way. And if you don&rsquo;t see what you want, be sure to upvote your favorites Dimspirations by clicking the devil below each one. If you have special requests, of course let me know. I&rsquo;ll admit, this one is my favorite",
		"keywords": ["calendar","coffee","nihilist","shirt","brettterpstra","bureau","cotton","dimspirations","printful","sellfy","spring","store","adjust","admit","based","below","bucks","calendar","check","checked","clicking","collection","competitive","couple","created","delivery","demand","devil","different","everyone","expand","favorite","favorites","feedback","humor","initial","merch","myself","package","personal","prices","pricing","print","printing","project","relaunch","requests","round","rsquo","seemed","selection","sense","solution","special","spent","started","store","think","upvote","using","whole","works"]
	},{
		"title": "The Black Ink giveaway winner!",
		"url": "/2024/03/01/the-black-ink-giveaway-winner/",
		"tags": ["giveaway"],
		"date": "Mar 1<span>st</span>, 2024",
		"ts": "1709316600",
		"summary": "The Black Ink giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Black Ink is still worth checking out. You can save 20% on your purchase with the coupon . Visit the Red Sweater store to grab your copy! Next up is Things for Mac and iOS . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["black","crossword","sweater","utilities","archive","black","check","congratulations","eaglefiler","flexibits","mastodon","monday","photos","premium","sweater","twitter","visit","workbench","announce","checking","coupon","details","email","ended","giveaway","giveaways","notifications","received","rsquo","series","sorry","store","suggest","through","upcoming","winner","winners","worth"]
	},{
		"title": "Web Excursions for February 29, 2024",
		"url": "/2024/02/29/web-excursions-for-february-29-2024/",
		"tags": ["bookmarks","bunch"],
		"date": "Feb 29<span>th</span>, 2024",
		"ts": "1709240640",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Cluster (for Bunch) Cluster is an Alfred workflow for use with Bunch, written by Stephen Millard. Closely integrates Bunch functionality with Alfred to make life even easier. I&rsquo;m not an Alfred user myself, so I haven&rsquo;t stress tested it, but if you are, please do and let Stephen and I know how it goes! Nihilisa Frank on Tumblr Colorful nihilist memes to make your day. Thanks to @adamrice for pointing this out. Superkey Simple and powerful keyboard enhancement on macOS. Want to add the Hyper Key with no fuss? Want to navigate your screen without touching your trackpad/mouse? This app looks really great at $16. h/t Mike Harahan on the forum. Tech has graduated from the Star Trek era to the Douglas Adams age (Interconnected) This post from Matt Webb speaks to me. Yes, tech has gone into a wobbly place better envisioned by Douglas Adams than by Gene Roddenberry, but maybe that&rsquo;s an ok thing. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["adams","alfred","keyboard","pennyworth","adams","alfred","backblaze","bunch","check","closely","cluster","colorful","douglas","frank","harahan","hyper","interconnected","millard","nihilisa","roddenberry","simple","stephen","superkey","thanks","tumblr","adamrice","affordably","backs","brought","cloud","computer","easier","enhancement","entire","envisioned","everything","excursions","forum","functionality","graduated","great","haven","integrates","keyboard","looks","macos","maybe","memes","mouse","myself","navigate","nihilist","partnership","pointing","powerful","reliably","rsquo","screen","securely","speaks","stress","tested","today","touching","trackpad","wobbly","workflow","written"]
	},{
		"title": "How to Compose Reminder Emails [Sponsor]",
		"url": "/2024/02/29/how-to-compose-reminder-emails-sponsor/",
		"tags": ["email","sponsor"],
		"date": "Feb 29<span>th</span>, 2024",
		"ts": "1709218500",
		"summary": "Thanks to Sanebox for sponsoring BrettTerpstra.com again this week! This one is longer than the usual sponsored post, but full of great tips whether you use SaneBox or not (but you should!). Effective communication is key in the workplace. With it, we can complete tasks on time and meet sales goals. Yet, essential messages can sometimes get lost in our busy inboxes. This is where reminder emails come into play&mdash;they serve as gentle nudges to keep tasks on track without being overly intrusive. Crafting a reminder email that is polite, clear, and actionable requires finesse. Luckily, these best practices and examples can help you write an effective reminder email that helps you achieve your goals without sounding rude. Start your reminder email with a courteous greeting to set a positive tone. Whether you&rsquo;re addressing a colleague, client, or team member, a friendly salutation can go a long way in fostering goodwill. Subject: Friendly Reminder: Upcoming Team Meeting Dear Recipient&rsquo;s Name, I hope this email finds you well. I wanted to gently remind you about our upcoming team meeting scheduled for date and time. Your presence and input are highly valued, so we look forward to you joining us. Clearly state the purpose of your email and provide relevant context to jog the recipient&rsquo;s memory. Be concise yet comprehensive, ensuring that the recipient understands why the reminder is necessary and what action is expected from them. As our project deadline is approaching, it&rsquo;s crucial that we finalize the presentation slides by deadline date. Your expertise in specific area will be invaluable in ensuring the success of this project. Please review the attached draft and provide your feedback at your earliest convenience. Specify the task or event that requires attention, including any pertinent details such as deadlines, locations, or action items. Avoid vague language that could lead to confusion or misunderstanding. Please submit the quarterly sales report by deadline date. This report is essential for our planning and decision-making processes. Please don&rsquo;t hesitate to reach out if you require any assistance or additional information. Clearly outline the steps the recipient needs to take and any deadlines associated with those actions. A call to action provides clarity and encourages prompt response or action. To confirm your attendance, please RSVP by clicking on the following link: RSVP link. If you&hellip;",
		"keywords": ["apple","acknowledging","action","altogether","appreciation","avoid","begin","brettterpstra","check","clearly","closing","context","crafting","effective","email","example","express","friendly","greeting","however","luckily","meeting","polite","recipient","reminder","reminders","sanebox","sanereminders","sanebox","specific","specify","thank","thanks","think","upcoming","writing","achieve","action","actionable","actions","addressing","again","altogether","appreciated","approaching","arrangements","associated","attached","attendance","avoid","balance","based","behavior","cannot","clarity","classify","clear","clicking","client","closing","collaboration","colleague","communication","comprehensive","concerns","concise","confirm","confusion","contact","context","continued","contributions","control","convenience","cooperation","cornerstone","crucial","deadline","deadlines","decision","dedication","demonstrates","details","draft","earliest","effective","efforts","elicit","email","emails","encourages","endeavor","enough","ensuring","essential","examples","expected","expertise","farewell","feature","feedback","filtering","finalize","finds","finesse","folders","fostering","friendly","gentle","gently","goals","goodwill","gratitude","great","greeting","helps","hesitate","highly","hours","importance","impression","inbox","inboxes","including","incoming","incredible","information","input","intrusive","invaluable","items","joining","kindly","language","later","leave","leaves","locations","longer","mailbox","making","management","mdash","meeting","member","memory","messages","misunderstanding","necessary","needs","nudges","organizing","outline","overloaded","overly","pertinent","planning","polite","politeness","positive","practices","presence","presentation","processes","productivity","professionalism","project","prompt","provides","quarterly","questions","quickly","reach","recipient","reinforces","relevant","remind","reminder","report","requires","response","rsquo","sales","salutation","sanebox","scheduled","seamlessly","serve","slides","sometimes","sounding","specific","specificity","specify","sponsored","sponsoring","steps","strong","success","takes","tasks"]
	},{
		"title": "Dimspire.me on Product Hunt",
		"url": "/2024/02/29/dimspire-dot-me-on-product-hunt/",
		"tags": ["dimspirations"],
		"date": "Feb 29<span>th</span>, 2024",
		"ts": "1709218320",
		"summary": "On a whim I&rsquo;ve put the new Dimspire.me site up on Product Hunt. I&rsquo;ve been putting a lot of love into it and even if I were to stop now, I think it&rsquo;s a great collection of nihilist inspirations (and wallpapers), enough to last quite a while. I&rsquo;d love it if you&rsquo;d take a second and leave a review",
		"keywords": ["inspirational","nihilism","nihilist","dimspire","product","thanks","collection","enough","great","inspirations","leave","nihilist","putting","rsquo","second","think","wallpapers","while"]
	},{
		"title": "Black Ink giveaway!",
		"url": "/2024/02/26/black-ink-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Feb 26<span>th</span>, 2024",
		"ts": "1708956000",
		"summary": "I&rsquo;m excited to offer the next giveaway, a license ($29.95 value) for Black Ink. Red Sweater software is back again with Black Ink, Daniel&rsquo;s app for crossword puzzle lovers. It can load any puzzle file designed for the Across Lite puzzle format, and offers a beautiful way to solve them on your Mac, with the option to print them out and solve them old-school with a pen(cil). I can solve the NYT Crossword more than twice as fast using Black Ink vs. the NYT Games app! Puzzles have never looked so good. Finally, an app that cares as much about crosswords as you do. Live resizing, beautiful status markers, and a streamlined puzzle chooser make your puzzle solving experience a joy. Sign up below to enter. A winner will be randomly drawn on Friday, March 01, at 12pm Central. The drawing is for a license ($29.95 value) for Black Ink. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["black","crossword","sweater","utilities","across","black","central","check","crossword","daniel","entries","finally","friday","games","mastodon","puzzles","sorry","sweater","again","among","appreciated","beautiful","below","beyond","brettterpstra","cares","chooser","codes","cooperation","crossword","crosswords","designed","developer","drawing","ended","enter","excited","experience","featured","first","format","generating","giveaway","giveaways","license","looked","lovers","mailing","markers","maybe","names","offer","offers","print","puzzle","randomly","reading","resizing","robot","rsquo","school","series","signups","skipped","software","solve","solving","status","streamlined","through","tuned","twice","using","value","vendors","visit","winner"]
	},{
		"title": "Dimspirations in your feed",
		"url": "/2024/02/24/dimspirations-in-your-feed/",
		"tags": ["dimspirations"],
		"date": "Feb 24<span>th</span>, 2024",
		"ts": "1708794480",
		"summary": "I&rsquo;ve added (well, fixed) the RSS feed for Dimspire.me. You can now subscribe via your favorite feed reader at Dimspirations RSS (or just enter in your subscribe field, the feeds are discoverable). The feed is available in XML and JSON flavors, and each entry just contains a pithy description and one image. You can also sign up to receive Dimspirations in your email, max one email per day, and only when there&rsquo;s new stuff: Thanks for supporting this little project. I&rsquo;ve decided if I ever monetize it, it will be through merch (posters, calendars, coffee mugs, etc.). So the wallpapers and dismal inspirations will continue to be free online. P.S. I&rsquo;ve received some flack for occasionally going \"political\" with the Dimspirations. I don&rsquo;t think things like being disgusted by a lack of gun control, being anti-genocide, or laughing at manufactured outrage are extreme political views, but I promise to keep those to a minimum. Sometimes I get a little fired up &mdash; don&rsquo;t let it scare you away",
		"keywords": ["aggregator","email","dimspirations","dimspire","enter","sometimes","thanks","added","address","available","calendars","coffee","contains","continue","control","decided","description","discoverable","disgusted","dismal","email","enter","entry","extreme","favorite","feeds","field","fired","fixed","flack","flavors","genocide","going","image","inspirations","laughing","little","manufactured","mdash","merch","monetize","occasionally","online","outrage","pithy","political","posters","project","promise","reader","receive","received","rsquo","scare","stuff","subscribe","supporting","think","through","views","wallpapers"]
	},{
		"title": "The TaskPaper giveaway winners!",
		"url": "/2024/02/23/the-taskpaper-giveaway-winners/",
		"tags": ["giveaway","productivity","taskpaper"],
		"date": "Feb 23<span>rd</span>, 2024",
		"ts": "1708714800",
		"summary": "The TaskPaper giveaway has ended, and I have winners to announce! Sorry for the delay in getting the announcement out, I had a rough day yesterday. Thanks for your patience! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but TaskPaper is still worth checking out. TaskPaper is the most flexible todo list format you can have, being based on plain text. You can still save 20% on your purchase with the coupon . Use the Buy Now button on the TaskPaper site to grab your copy! By the way, TaskPaper is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Black Ink . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["productivity","taskpaper","albert","archive","arktika","black","check","congratulations","damon","eaglefiler","flexibits","horlbeck","mastodon","monday","premium","setapp","sorry","street","taskpaper","thanks","twitter","amazing","announce","announcement","available","based","button","checking","coupon","details","email","ended","flexible","format","getting","giveaway","giveaways","hundreds","notifications","patience","received","rough","rsquo","series","sorry","subscription","suggest","through","upcoming","winners","worth","yesterday"]
	},{
		"title": "Dimspire.me",
		"url": "/2024/02/22/dimspire-dot-me/",
		"tags": ["dimspirations","personal"],
		"date": "Feb 22<span>nd</span>, 2024",
		"ts": "1708630980",
		"summary": "I couldn&rsquo;t sleep last night. I&rsquo;m not manic, I&rsquo;m just going through this months-long bout of insomnia. At least I don&rsquo;t think I&rsquo;m manic. It doesn&rsquo;t have any of the characteristics of my usual mania. And up until last night I wasn&rsquo;t even getting out of bed when I couldn&rsquo;t sleep. But last night I did, and I made you a website. Introducing Dimspire.me. It&rsquo;s built on Jekyll and has a bunch of automations. I can essentially create a \"dimspiration\" using an Affinity Photo template, and then RetroBatch will output wallpaper sizes (including iPhone) and square versions for posting and populating the gallery. Just running will find new photos added to the assets folder and generate posts for them, which will then populate the index pages. It should be pretty simple to maintain. All documented in a Howzit notes file, of course. The site is pretty simple: a homepage with description and the latest few posts, a \"Dimspirations\" page that&rsquo;s essentially a blog post index but done in gallery fashion, and a random dimspiration page that will just throw single random dimspirations at you. Fun stuff. When viewing a single Dimspiration (by clicking on any thumbnail), you get some cool UI showing edges of the previous and next Dimspiration. I like it, anyway. There&rsquo;s still some work to do on certain breakpoints, but overall the styling should work on any device. And every Dimspiration page has a download button, where you can download all available versions of the current Dimspiration. This is accomplished by a Rake task that parses every post, extracts the YAML key that defines the image for the page, then zips up every file in the assets directory that matches it. It creates a manifest table that shows what&rsquo;s in the zip file, with each individual file linked. So when there are wallpaper versions of a Dimspiration, you can download the set or follow a link to a specific version. Took a little thinking and tweaking, but I think it&rsquo;s a good solution. I hope you enjoy it. It&rsquo;s cathartic for me to create these, and they&rsquo;re getting better with time. I&rsquo;m not going to try to monetize any of this at this point, but I&rsquo;ve watermarked all the images so if you share them, they should trace back to me. Speaking of, I do still need to consider adding share buttons to these&hellip; but it always freaks me out how much data social sites collect when you include their button, so I&&hellip;",
		"keywords": ["inspirational","nihilism","nihilist","poster","affinity","brett","dimspiration","dimspirations","dimspire","howzit","introducing","jekyll","photo","retrobatch","speaking","accomplished","added","adding","anyway","assets","automations","available","breakpoints","built","bunch","button","buttons","cathartic","certain","characteristics","clicking","collect","consider","couldn","create","creates","defines","description","device","dimspiration","dimspirations","directory","documented","doesn","download","edges","enjoy","essentially","extracts","fashion","figure","folder","freaks","gallery","getting","going","hellip","homepage","iphone","image","images","including","index","individual","insomnia","latest","linked","little","maintain","mania","manic","manifest","matches","monetize","night","notes","output","overall","pages","parses","photos","point","populate","populating","posting","posts","random","rsquo","running","share","showing","shows","simple","single","sites","sizes","sleep","social","solution","specific","square","stuff","styling","table","template","think","thinking","through","throw","thumbnail","trace","tweaking","using","version","versions","viewing","wallpaper","watermarked","website","where"]
	},{
		"title": "Keep It — Write notes, keep things, and find them again [Sponsor]",
		"url": "/2024/02/22/keep-it-write-notes-keep-things-and-find-them-again-sponsor/",
		"tags": ["iphone","macos","search","sponsor","tagging","writing"],
		"date": "Feb 22<span>nd</span>, 2024",
		"ts": "1708610400",
		"summary": "Thanks to Keep It for sponsoring BrettTerpstra.com this week! If you&rsquo;re looking for a way to keep all of your information at your fingertips, readily findable, without locking yourself into a database-based system like Evernote, Keep It is a great solution. Keep It is a notebook and organizer, ideal for writing notes, keeping web links, storing documents, images or any kind of file, and finding them again. Available on Mac, iPhone and iPad, Keep It is the destination for all those things you need to put somewhere, confident you will find them again later. Create notes with built-in styles that look good and read well on all your devices. Notes can contain checklists, bulleted and numbered lists, links, dividers, images and other attachments. Or if you prefer writing in Markdown, Keep It includes an editor with syntax highlighting, word count, tools for formatting text, inserting links and images, and a customizable preview. Keep It can edit its own notes, rich text, plain text and Markdown files, add highlights and notes to PDFs, and show previews for images, web pages and most other documents. Any kind of file can be added to Keep It and opened in its original app for editing. Keep It integrates well with macOS and iOS. On Mac, you can save files to one of Keep It&rsquo;s folders in the Finder or standard Open and Save panels. On iPad and iPhone, see Keep It’s files in the Files app, and the standard document browser used by most apps. Save web links to Keep It in any app via its Share extension. Choose to save them as PDFs or web archives for offline reading, or convert them to editable notes. Keep It has a number of ways to organize your files &ndash; tags hierarchical folders, mirrored in the Finder and Files app, color-coded labels, and bundles, where items can be in more than one bundle at a time. Other lists include the Recents list to see things you&rsquo;ve added or viewed lately, with the latest shown at the top. Favorites provide quick access. Quick File lets you file things without taking your hands off the keyboard. Keep It can search the content of most files, recognize text in scanned PDFs and images, and prominent features in images. While searching, suggestions appear as you type, allowing you to narrow down results to exactly what you need, and build complex searches with ease. Searches can be saved for later reuse. Quick Open lets you open anything just by typing its name. Keep It’s Tag Filter makes finding&hellip;",
		"keywords": ["files","icloud","notes","pages","applescript","automator","available","brettterpstra","choose","create","evernote","favorites","files","filter","finder","markdown","notes","quick","recents","searches","share","shortcuts","tasks","thanks","while","access","across","added","again","allowing","another","appear","archives","attachments","automated","available","based","brettterpstra","browser","build","built","bulleted","bundle","bundles","check","checklists","choose","class","coded","color","complex","confident","contain","content","convert","count","customizable","database","destination","devices","dividers","document","documents","drill","editable","editing","editor","everything","extension","features","files","findable","finding","fingertips","folders","formatting","great","hands","height","hierarchical","highlighting","highlights","https","icloud","iphone","ideal","image","images","includes","individual","information","inserting","integrates","items","keeping","keepit","keyboard","labels","later","latest","level","links","lists","loading","locking","looking","macos","makes","media","mirrored","narrow","ndash","nofollow","noscript","notebook","notes","numbered","offline","opened","organize","organizer","original","pages","panels","picture","prefer","preview","previews","prominent","quick","readily","reading","recognize","reinventedsoftware","relevant","results","reuse","rsquo","saved","scanned","search","searches","searching","selected","share","shown","solution","somewhere","source","sponsoring","srcset","standard","store","storing","styles","suggestions","syntax","system","tagged","taking","title","today","tools","trial","typing","uploads","users","viewed","where","width","works","writing"]
	},{
		"title": "TaskPaper giveaway!",
		"url": "/2024/02/19/taskpaper-giveaway/",
		"tags": ["giveaway","macos","productivity","taskpaper"],
		"date": "Feb 19<span>th</span>, 2024",
		"ts": "1708351200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($24.99 value) for TaskPaper. TaskPaper is a task management solution based entirely on plain text. It offers a familiar interface to work with files in the TaskPaper format, with tagging, projects, due dates, and all the things you need for task management. Did I mention the files are still plain text, and are portable anywhere? Text editor with outlining power. TaskPaper feels like a plain text editor, but it is backed by a powerful outliner. Sign up below to enter. Winners will be randomly drawn on Friday, February 23, at 12pm Central. The drawing is for 3 licenses ($24.99 value) for TaskPaper, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["productivity","taskpaper","central","check","entries","friday","mastodon","sorry","taskpaper","winners","among","anywhere","appreciated","backed","based","below","beyond","brettterpstra","codes","cooperation","dates","developer","drawing","editor","ended","enter","entirely","excited","familiar","featured","feels","files","first","format","generating","giveaway","giveaways","interface","license","licenses","mailing","management","maybe","mention","names","offer","offers","outliner","outlining","portable","powerful","projects","randomly","reading","robot","rsquo","series","signups","skipped","solution","tagging","through","tuned","value","vendors","visit","winner"]
	},{
		"title": "A Cerakey ceramic keycap review",
		"url": "/2024/02/17/a-cerakey-ceramic-keycap-review/",
		"tags": ["customization","keyboard","keycaps"],
		"date": "Feb 17<span>th</span>, 2024",
		"ts": "1708203120",
		"summary": "I recently purchased some Cerakey ceramic keycaps for my Ultimate Hacking Keyboard. When I mentioned the purchase on Mastodon, I got a few replies asking for a review, as multiple people had been considering the purchase. Here&rsquo;s my review of the Cerakey ceramic keycaps. Note: I have 3 cats. I tried to clean the keyboard up as much as possible before I took photos, but if you have cats, you know how that can go. I did my best. I originally ordered the \"Crazed\" keycaps (pictured below), but after paying for them I was notified that there was an error between actual stock and what Shopify listed, so instead they sent me two sets, in Canal Blue and Water Blue. So I combined them, as seen above. The Q&ndash;R keys of the left half are Canal Blue, the right half is Water Blue. I really like the crackled look of the Crazed keys, so I might order those in the future when they&rsquo;re back in stock: One nice thing about ceramic keycaps isthe way they glow when backlit. If you don&rsquo;t have a backlit keyboard, you&rsquo;ll only be concerned with the sound and weight, which I&rsquo;ll detail below. But if you have backlighting: Unlike shine-through keycaps, the legends are actually harder to read when backlit. I&rsquo;m a touch typist and never look at my keys, so it&rsquo;s kind of a moot point for me. The only time I need to look at the keyboard is when I&rsquo;m typing a number without my fingers on the home row (e.g. 2FA auth code when I&rsquo;m also holding my phone). If you hunt and peck and have a backlit keyboard, you might want to think twice. Seriously, the overall aesthetic of backlit ceramics is (to me) the coolest I&rsquo;ve seen. This will depend on personal preference, and there are plenty of backlighting setups I&rsquo;ve never tried, but: The keys have a shine to them. They look like a polished plastic. I guess they look like what you&rsquo;d expect a laquered ceramic surface to look like. I find it pleasing, but again, it&rsquo;s going to depend on personal preference. If you like multi-colored keyboards, you&rsquo;re going to drop some cash as Cerakey only sells full sets in one color. I would love it if you could combine colors to create a custom layout. I would also appreciate being able to get single custom keys, as the UHK has a very unique layout that no standard keycap set will cover. While I was customizing, I went ahead and ordered the 1.75U space bars that the UHK uses from Asymplex (h/t @BrokenFlows). My box&hellip;",
		"keywords": ["ceramic","cherry","keycaps","asymplex","brokenflows","canal","cerakey","cherry","crazed","hacking","keyboard","mastodon","maybe","neither","seriously","shopify","sound","sugru","summary","ultimate","unlike","water","while","white","above","aesthetic","again","ahead","amount","answer","appreciate","asking","backlighting","backlit","bassy","because","before","below","benefit","between","blush","bummer","ceramic","ceramics","certain","clean","click","clickiness","color","colored","colors","comparison","compromise","consider","considering","coolest","couple","cover","crackled","create","custom","customization","customizing","decide","deciding","depend","described","detail","difference","discernible","doesn","enough","entirely","epoxy","error","eventually","expect","experience","faster","feeling","finding","fingers","first","found","gives","glues","going","guess","happened","harder","helps","holding","important","isthe","keyboard","keyboards","keycap","keycaps","lacks","laquered","layout","legends","listed","little","makes","mechanical","mentioned","modifier","money","multi","multiple","ndash","notified","obvious","ordered","original","originally","others","overall","paying","people","personal","phone","photos","picked","pictured","plastic","pleasing","plenty","point","polished","possible","preference","problem","purchased","questions","rapid","recent","recently","remove","replace","replies","resins","responsibility","ridges","right","rsquo","satisfaction","satisfying","sells","setups","shine","single","slick","slippery","softly","solution","sound","space","speed","spent","standard","stick","stock","surface","switch","switches","taken","think","thock","thought","through","thunder","touch","tried","turns","twice","typing","typist","unique","version","weight","while","white","willing","years"]
	},{
		"title": "The FastScripts giveaway winner!",
		"url": "/2024/02/16/the-fastscripts-giveaway-winner/",
		"tags": ["giveaway"],
		"date": "Feb 16<span>th</span>, 2024",
		"ts": "1708111440",
		"summary": "The FastScripts giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but FastScripts is still worth checking out. Nobody who uses scripting on their Mac should be without this. You can still save 20% on your purchase with the coupon . Visit the Red Sweater store to grab your copy! Next up is TaskPaper . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["scripting","sweater","utilities","alejandre","black","check","congratulations","eaglefiler","fastscripts","flexibits","mastodon","monday","nobody","premium","sweater","taskpaper","twitter","visit","announce","checking","coupon","details","email","ended","giveaway","giveaways","notifications","received","rsquo","scripting","series","sorry","store","suggest","through","upcoming","winner","winners","worth"]
	},{
		"title": "#dimspirations are back",
		"url": "/2024/02/12/dimspirations-are-back/",
		"tags": ["design","dimspirations","wallpaper"],
		"date": "Feb 12<span>th</span>, 2024",
		"ts": "1707760920",
		"summary": "I&rsquo;ve started creating Dimspirations again, my depressing-but-actually-realistic collection of \"inspirational\" posters. You can follow the hashtag #dimspirations on Twitter, Facebook, Mastodon, or Instagram for new posts. I&rsquo;ve also automated the process of creating wallpaper-formatted version of them which get uploaded to Flickr and are also available as a zip (containing 5120x3200 and 2048x1366 versions). I should probably add an iPhone ratio to the automation, but they get harder to resize vertically from one image. Anyway, if you&rsquo;re in the mood to be \"dimspired,\" check them out. By the way, if you&rsquo;ve never checked it out, the \"Other Stuff\" section (where my wallpapers are located) has some fun projects in it. Fun for me, anyway. Side tangent: I own the domain dimspire.me, and have always meant to find a way to make an easy-to-maintain gallery out of these. Probably a blog-style thing with daily or weekly dimspirations, with basic comments functionality and links to download the square or wallpaper versions. The index page would just be a thumbnail gallery with the main image from each post. It might actually be nice to do a paywall and have the wallpaper versions supported by Patreon or something. I don&rsquo;t know if anyone would actually pay for these. I&rsquo;ve seen similar projects sold as books, and I feel like the designs are actually pretty good for print, so maybe someday. Anyway, my inclination is to do this site in Jekyll (which I&rsquo;m very adept at), but would be open to any suggestions as to what the best way to accomplish this would be. I&rsquo;m not even opposed to WordPress with some custom plugins (which I&rsquo;m also surprisingly adept at), which would be pretty easy to automate and then I could use MarsEdit to maintain it. Still pondering. In the meantime, please share your feedback (and any suggestions, should the dimspiration strike)",
		"keywords": ["inspirational","poster","printmaking","anyway","dimspirations","facebook","flickr","instagram","jekyll","marsedit","mastodon","patreon","stuff","twitter","wordpress","adept","again","anyone","anyway","automate","automated","automation","available","basic","books","check","checked","collection","comments","containing","creating","custom","daily","depressing","designs","dimspiration","dimspirations","dimspire","dimspired","domain","download","feedback","formatted","functionality","gallery","harder","hashtag","iphone","image","inclination","index","inspirational","links","located","maintain","maybe","meant","meantime","opposed","paywall","plugins","pondering","posters","posts","print","process","projects","ratio","realistic","resize","rsquo","section","share","similar","someday","square","started","strike","style","suggestions","supported","surprisingly","tangent","thumbnail","uploaded","version","versions","vertically","wallpaper","wallpapers","weekly","where"]
	},{
		"title": "Web Excursions for February 12, 2024",
		"url": "/2024/02/12/web-excursions-for-february-12-2024/",
		"tags": ["bookmarks","search"],
		"date": "Feb 12<span>th</span>, 2024",
		"ts": "1707753420",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Find Any File I&rsquo;ve mentioned HoudahSpot plenty of times, but there&rsquo;s an app that&rsquo;s been around since about 2005 that has been continually updated and only costs $6-10 that&rsquo;s worth checking out if you constantly run into hard-to-find files. One major benefit of Find Any File is that it can search your NAS and doesn&rsquo;t rely on Spotlight for indexing. Searches can be a little slow but they are VERY accurate. Allows saving searches and search templates, and can export found files as a list for use in scripting app&hellip; uses a pay-what-you-can shareware model (oh, the old days!). Here&rsquo;s a great review from Allison Sheridan with much more detail. toketaWare has ceased trading If you&rsquo;ve followed me for the last few years, you know I swear by iThoughts for my mind mapping needs (of which I have a lot). I&rsquo;m pretty devastated to see that the developer has moved on and there will be no future releases of the app on any platform. I checked in with him, he says he&rsquo;s fine, he just moved on. Fair enough. Now I have to pick a new favorite mind mapping tool. Open to your thoughts! Photoscope - Storage Cleaner on the App Store A tool for cleaning up your photo library by easily selecting the best image from sets of multiple/burst photos. Well done and easy to use. Prefs Editor From the same developer who makes Find Any File, a very handy GUI for directly editing any Mac app&rsquo;s preferences. Especially great for apps that have \"esoteric\" or hidden preferences that require using commands in Terminal. Free! Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["files","allison","allows","check","cleaner","editor","especially","houdahspot","mindmeister","photoscope","prefs","searches","sheridan","spotlight","storage","store","terminal","accurate","benefit","boosting","brainstorming","brought","burst","ceased","checked","checking","cleaning","collaborating","collaborative","commands","constantly","continually","detail","devastated","developer","directly","doesn","easily","editing","enough","esoteric","excursions","export","favorite","files","followed","found","great","handy","hellip","hidden","ithoughts","image","indexing","library","little","major","makes","mapping","mentioned","model","moved","multiple","needs","partnership","photo","photos","platform","plenty","preferences","productivity","releases","rsquo","saving","scripting","search","searches","selecting","shareware","since","software","swear","templates","thoughts","times","toketaware","trading","updated","using","worth","years"]
	},{
		"title": "FastScripts giveaway!",
		"url": "/2024/02/12/fastscripts-giveaway/",
		"tags": ["giveaway","macos","scripting"],
		"date": "Feb 12<span>th</span>, 2024",
		"ts": "1707746400",
		"summary": "I&rsquo;m excited to offer the next giveaway, a license ($39.95 value) for FastScripts. FastScripts puts all of your scripts in your menu bar, accessible with keyboard shortcuts and instant search. It even improves the efficiency of scripts by executing them in their own processes in parallel. It&rsquo;s a tool no aspiring productivity enthusiast should be without. Most people don&rsquo;t know that they need FastScripts until, well, they need it. Whether you&rsquo;re an experienced Mac scripter or just have one \"script that somebody wrote for you once\" that you&rsquo;d like to assign a hotkey to, FastScripts could be right tool for you. Sign up below to enter. A winner will be randomly drawn on Friday, February 16, at 12pm Central. The drawing is for a license ($39.95 value) for FastScripts. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["scripting","sweater","utilities","central","check","entries","fastscripts","friday","mastodon","sorry","accessible","among","appreciated","aspiring","assign","below","beyond","brettterpstra","codes","cooperation","developer","drawing","efficiency","ended","enter","enthusiast","excited","executing","experienced","featured","first","generating","giveaway","giveaways","hotkey","improves","instant","keyboard","license","mailing","maybe","names","offer","parallel","people","processes","productivity","randomly","reading","right","robot","rsquo","script","scripter","scripts","search","series","shortcuts","signups","skipped","somebody","through","tuned","value","vendors","visit","winner","wrote"]
	},{
		"title": "The HoudahSpot giveaway winners!",
		"url": "/2024/02/09/the-houdahspot-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Feb 9<span>th</span>, 2024",
		"ts": "1707503280",
		"summary": "The HoudahSpot giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but HoudahSpot is still worth checking out. If you use a Mac, you can make great use of HoudahSpot. Stop searching for your files the old fashioned way&hellip; you can still save 20% using the code , so grab your copy today! By the way, HoudahSpot is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is FastScripts . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["houdahspot","search","spotlight","black","check","congratulations","dennis","fastscripts","flexibits","floris","grote","houdahspot","markus","mastodon","misener","monday","premium","sande","setapp","struck","taskpaper","twitter","amazing","announce","available","checking","details","email","ended","fashioned","files","giveaway","giveaways","great","hellip","hundreds","notifications","received","rsquo","searching","series","sorry","subscription","suggest","through","today","upcoming","using","winners","worth"]
	},{
		"title": "Convert nvALT RTF files to Markdown",
		"url": "/2024/02/08/convert-nvalt-rtf-files-to-markdown/",
		"tags": ["markdown","nvalt","nvultra","shortcuts"],
		"date": "Feb 8<span>th</span>, 2024",
		"ts": "1707412980",
		"summary": "I&rsquo;ve been working with a former nvALT user who stored all of their files in RTF format. Ideally, people switching from nvALT to another app &mdash; be it nvUltra, Obsidian, or anything Markdown-based &mdash; would already be storing their notes as individual text files. If nvALT is still working for you, make that change now and give it a chance to write all the new files to disk. However, if the conversion isn&rsquo;t what you hoped for, or nvALT is no longer working on your machine and you&rsquo;re stuck with a bunch of RTF files, I&rsquo;ve pulled together a solution. A big thanks to those on the forum and some help from Mastodon, especially @atnbueno and @jackwellborn, for helping me get a grasp on some more advanced Shortcuts implementations. The following solution should work with zero extra dependencies, i.e. you don&rsquo;t have to install Pandoc or anything like that. To use the Shortcut, just download below, double click to unzip, and then double click the resulting file to add it to the Shortcuts app. Then just run it from the main screen (click the Play icon). It will first ask you for a source folder, at which point you&rsquo;ll select the folder containing all of the RTF files. You may be presented with some permissions dialogs as it parses and converts the files, mostly around allowing access to web domains. Don&rsquo;t worry, the Shortcut isn&rsquo;t actually accessing those domains or sending any information to them. Once the conversion has run, you&rsquo;ll get another file dialog at which point you&rsquo;ll create or select an output folder for the Markdown files. I&rsquo;ve tested this on a collection of about 500 notes and it works pretty well. There are some things that don&rsquo;t convert quite right, especially when lists are created in RTF using individual bullet markers. Those aren&rsquo;t recognized as lists and will not be converted to Markdown lists. They still look correct in the output, though. nvALT RTF to Markdown Shortcut v1.0.0 Download nvALT RTF to Markdown Shortcut v1.0.0 A Shortcut to convert a folder of RTF files into Markdown for use in apps like Obsidian or nvUltra. Published 02/08/24. Updated 02/08/24. Changelog Donate &bull; More info&hellip; Give it a shot. If you&rsquo;re a Shortcuts pro and have suggestions for improving it, let me know. If you&rsquo;re new to this stuff (like I am) and run into problems, leave a comment or join the forum and let me know. We&rsquo;ll figure it out together",
		"keywords": ["format","macos","pandoc","changelog","donate","download","however","ideally","markdown","mastodon","obsidian","pandoc","published","shortcut","shortcuts","thanks","updated","usage","access","accessing","advanced","allowing","another","assist","atnbueno","based","below","bullet","bunch","chance","change","click","collection","comment","containing","conversion","convert","converted","converts","create","created","dependencies","dialog","dialogs","domains","double","download","especially","extra","figure","files","first","folder","format","former","forum","grasp","hellip","helping","hoped","implementations","improving","individual","information","install","jackwellborn","leave","lists","longer","machine","markers","mdash","mostly","notes","nvalt","nvultra","output","parses","people","permissions","point","presented","problems","pulled","recognized","resulting","right","rsquo","screen","sending","solution","source","stored","storing","stuck","stuff","suggestions","switching","tested","thanks","together","unzip","using","working","works","worry","write"]
	},{
		"title": "HoudahSpot giveaway!",
		"url": "/2024/02/05/houdahspot-giveaway/",
		"tags": ["giveaway","macos","search","spotlight"],
		"date": "Feb 5<span>th</span>, 2024",
		"ts": "1707141600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($34 value each) for HoudahSpot. HoudahSpot is basically Spotlight on steroids. All of the power of Spotlight file searching, plus some tricks that Spotlight can&rsquo;t even do. Results are presented in a fully-fledged file management window, plus file previews, result filtering and saved searches. HoudahSpot takes all the tedium out of file search. Use HoudahSpot to locate hard-to-find files and keep frequently used files within reach. Sign up below to enter. Winners will be randomly drawn on Friday, February 09, at 12pm Central. The drawing is for 5 licenses ($34 value each) for HoudahSpot, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["houdahspot","search","spotlight","central","check","entries","friday","houdahspot","mastodon","results","sorry","spotlight","winners","among","appreciated","below","beyond","brettterpstra","codes","cooperation","developer","drawing","ended","enter","excited","featured","files","filtering","first","fledged","fully","generating","giveaway","giveaways","license","licenses","mailing","management","maybe","names","offer","presented","previews","randomly","reach","reading","robot","rsquo","saved","search","searches","searching","series","signups","skipped","steroids","takes","tedium","through","tricks","tuned","value","vendors","visit","window","winner","within"]
	},{
		"title": "The MarsEdit giveaway winner!",
		"url": "/2024/02/02/the-marsedit-giveaway-winner/",
		"tags": ["giveaway","marsedit"],
		"date": "Feb 2<span>nd</span>, 2024",
		"ts": "1706897700",
		"summary": "The MarsEdit giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but MarsEdit is still worth checking out. If you&rsquo;re a blogger, especially one who uses WordPress, you won&rsquo;t be sorry. You can still save 20% on your purchase with the coupon . Visit the Red Sweater store to grab your copy! By the way, MarsEdit is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is HoudahSpot . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["blogging","marsedit","wordpress","black","burnham","check","congratulations","fastscripts","houdahspot","lowell","marsedit","mastodon","monday","setapp","sweater","taskpaper","twitter","visit","wordpress","amazing","announce","available","blogger","checking","coupon","details","email","ended","especially","giveaway","giveaways","hundreds","notifications","received","rsquo","series","sorry","store","subscription","suggest","through","upcoming","winner","winners","worth"]
	},{
		"title": "Checking for a VPN connection part 2",
		"url": "/2024/01/30/checking-for-a-vpn-connection-part-2/",
		"tags": ["network"],
		"date": "Jan 30<span>th</span>, 2024",
		"ts": "1706631240",
		"summary": "Ok, so I wrote yesterday about a solution for checking your VPN connection via a network interface change, but it turns out there&rsquo;s a better way to do it. I discovered it shortly after posting (StackExchange thread), and received a few comments mentioning it. So here&rsquo;s part two. The command is , used for managing (s)ystem (c)onfiguration parameters. The command will show your available VPN devices and their state, either or . By doing a case-sensitive grep for we can determine if one or more is connected. The should return 0 if no VPN is connected, which you can then use to light up a button, integrate into launch/quit scripts, etc. Just a cleaner way to do what I showed yesterday",
		"keywords": ["bartender","manternach","stackexchange","trevor","wirecast","action","available","button","change","checking","cleaner","command","comments","connected","devices","disconnected","discovered","doing","either","integrate","interesting","interface","launch","light","looks","managing","mentioning","network","onfiguration","parameters","posting","received","return","rsquo","script","scripts","sensitive","shortly","showed","solution","thread","trick","turns","using","wrote","yesterday","ystem"]
	},{
		"title": "Checking for a VPN connection from the command line",
		"url": "/2024/01/29/checking-for-a-vpn-connection-from-the-command-line/",
		"tags": ["bettertouchtool","network","scripting"],
		"date": "Jan 29<span>th</span>, 2024",
		"ts": "1706558100",
		"summary": "I got a question from a reader about how to test if a VPN connection is active and terminate an app if it isn&rsquo;t. There&rsquo;s probably a way to do this with Keyboard Maestro or BetterTouchTool or something, but to keep things interesting, I wanted to find a way to do it with just shell scripts. Update: after publishing this I found a better way to do it, see the next post. I think the easiest, most universal way to determine if a VPN is connected is by searching for a specific interface that changes when connected. When I connect Nord, for example, I get a new network interface called . I don&rsquo;t know how universal this is, but you can figure out what changes happen in interfaces by comparing the output of when the VPN is connected vs. disconnected. The following instructions are Mac-specific, using the tools and to access the system clipboard rather than creating multiple files. In fact, I&rsquo;m not even positive is available on all systems, so if anyone wants to contribute instructions for other platforms, please do. Caveat: I do not understand the command at all and have never used it for anything but listing network interfaces. There may be a far more succinct way to do the following. Now you have an interface name ( above) that you can grep for to test whether the VPN is active. A simple loop in a Bash script will allow you to take action when the connection is disconnected. This little script assumes the VPN is connected when it starts, loops until the network interface we&rsquo;re looking for disappears ( returns 0), then executes the command after the loop. Perfect if you wanted to, say, stop a torrent client if the VPN wasn&rsquo;t active. You could embelish it into a launch script that checked for the VPN first, launching an app when the VPN is connected, then polled for the VPN to be disconnected, terminating the app if it is. Of course, the simple line could be used as part of a BetterTouchTool widget to display an alert on your Stream Deck when the VPN was connected, or to run any kind of automations on a polling basis. If I had more complex applications for this, I&rsquo;d switch over to using BetterTouchTool",
		"keywords": ["architecture","network","routing","bettertouchtool","caveat","keyboard","maestro","stream","testing","above","access","action","active","alert","allow","anyone","applications","assumes","automations","available","basis","called","changes","checked","client","clipboard","command","comparing","complex","connect","connected","contribute","creating","disappears","disconnected","display","easiest","embelish","example","executes","figure","files","first","found","happen","indicators","instructions","interesting","interface","interfaces","launch","launching","listing","little","looking","loops","multiple","network","output","platforms","polled","polling","positive","publishing","rather","reader","returns","rsquo","script","scripts","searching","shell","simple","specific","starts","succinct","switch","system","systems","terminating","think","tools","torrent","understand","universal","using","wanted","wants","widget"]
	},{
		"title": "MarsEdit giveaway!",
		"url": "/2024/01/29/marsedit-giveaway/",
		"tags": ["giveaway","macos","marsedit"],
		"date": "Jan 29<span>th</span>, 2024",
		"ts": "1706536800",
		"summary": "I&rsquo;m excited to offer the next giveaway, a license ($59.95 value) for MarsEdit. Using web-based editors for blogging is frustrating in so many ways. MarsEdit makes writing for the web easy and elegant, like any good Mac app should. Plus, great Markdown support (it even works with Marked). Developer Daniel Jalkut is a legend among indie devs, and he creates stable, reliable, native Mac apps that everyone should be using. Browser-based interfaces are slow, clumsy, and require you to be online just to use them. Web browsers are wonderful for reading articles, but not for creating them. If you’re writing for the web, you need a desktop blog editor. And if you’re lucky enough to have a Mac, nothing is more powerful, or more elegant than MarsEdit. Sign up below to enter. A winner will be randomly drawn on Friday, February 02, at 12pm Central. The drawing is for a license ($59.95 value) for MarsEdit. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["blogging","marsedit","wordpress","brettterpstra","browser","central","check","daniel","developer","entries","friday","giveaway","giveaways","jalkut","markdown","marked","marsedit","mastodon","robot","sorry","support","upcoming","using","among","appreciated","articles","based","below","beyond","blockquote","blogging","brettterpstra","browsers","class","clumsy","codes","contact","cooperation","creates","creating","desktop","developer","drawing","easydns","editor","editors","elegant","ended","enough","enter","everyone","excited","featured","first","frustrating","generating","giveaway","giveaways","great","height","https","image","indie","interfaces","legend","license","loading","lucky","mailing","makes","marked","marsedit","maybe","media","names","native","nojack","noscript","nothing","offer","online","original","picture","powerful","randomly","reading","redsweater","reliable","robot","rsquo","screenshot","series","signups","skipped","sorry","source","srcset","stable","strong","subscribe","support","through","title","ttscoff","tuned","upcoming","uploads","using","value","vendors","visit","width","winner","wonderful","works","writing"]
	},{
		"title": "The OmniFocus giveaway winners!",
		"url": "/2024/01/26/the-omnifocus-giveaway-winners/",
		"tags": ["giveaway","omnifocus","productivity"],
		"date": "Jan 26<span>th</span>, 2024",
		"ts": "1706293680",
		"summary": "The OmniFocus giveaway has ended, and I have winners to announce! There were a record number of entries this time, so the winners are extra lucky with 1:330 odds! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but OmniFocus is still worth checking out. If you&rsquo;re serious about productivity on Mac and/or iOS, you need OmniFocus. Next up is MarsEdit . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["omnifocus","productivity","ackermann","black","check","congratulations","fastscripts","guthman","houdahspot","joshua","koichi","matsumoto","markus","marsedit","mastodon","monday","omnifocus","taskpaper","twitter","announce","checking","details","email","ended","entries","extra","giveaway","giveaways","lucky","notifications","productivity","received","record","rsquo","series","serious","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "ScreenFloat 2 -- Power up your screenshots [Sponsor]",
		"url": "/2024/01/25/screenfloat-2-power-up-your-screenshots-sponsor/",
		"tags": ["sponsor"],
		"date": "Jan 25<span>th</span>, 2024",
		"ts": "1706191200",
		"summary": "Thanks to ScreenFloat for sponsoring BrettTerpstra.com this week! I was a frequent user of the original version, and I&rsquo;m very excited to see version 2 released. It&rsquo;s chock full of new features and tools that set it apart from the competition. Hi, my name&rsquo;s Matthias, I&rsquo;m the developer of Yoink, Transloader, and Tameno, among others. Allow me to introduce another one of my apps to you: ScreenFloat. Over eleven years after its initial v1 release, and after more than a year and a half of development, ScreenFloat 2 is finally here &mdash; rebuilt from the ground up, based on the core functionality that made it so beloved, but improving it in numerous, incredibly useful ways. Capture screenshots, record your screen, or take timed screenshots. Re-capture shots without painstakingly reframing them. Import from your clipboard, other apps, your Desktop, or your iOS devices. Float screenshots and recordings above all your other windows, apps and spaces, so information or reference material is always visible, no matter what you do. It&rsquo;s like picture-in-picture, but for your captures. Texts, faces and barcodes are detected in every shot you take and can effortlessly be extracted/copied and non-destructively redacted with a simple right-click. Mark up and annotate your screenshots with lines, arrows, checkmarks, highlights, smart bullet points, redactions and more. All non-destructively, so you can always go back and make changes or restore the original capture. Pick colors from any floating shot. Crop, \"fold\", resize, rotate, \"de-retinize\", trim, and mute your shots. Sharing floating shots is just a file drag away, with on-the-fly changing of file format and sizing options, whether or not annotations should be included, and more. Set up double-click workflows for repetitive tasks, like de-retinize the shot, resize it to 75% and then attach it to an email. Your captures are stored in ScreenFloat&rsquo;s Shots Browser, where you can name, tag, favorite and rate them, and organize them with folders and smart folders. They can also (optionally) be synchronized across your Macs over iCloud. Find all your shots system-wide or in the Shots Browser by their metadata &mdash; including detected text and barcode content. A screenshot is just a screenshot. Until you use ScreenFloat. Check it out today",
		"keywords": ["icloud","screenfloat","screenshot","allow","brettterpstra","browser","capture","check","desktop","float","import","matthias","screenfloat","sharing","shots","tameno","texts","thanks","transloader","yoink","above","across","among","annotate","annotations","another","apart","arrows","attach","barcode","barcodes","based","beloved","bullet","capture","captures","changes","changing","checkmarks","chock","click","clipboard","colors","competition","content","copied","destructively","detected","developer","development","devices","double","effortlessly","eleven","email","excited","extracted","faces","favorite","features","finally","floating","folders","format","frequent","functionality","ground","highlights","icloud","improving","included","including","incredibly","information","initial","introduce","mdash","metadata","optionally","options","organize","original","others","painstakingly","picture","points","rebuilt","record","recordings","redacted","redactions","reframing","release","released","repetitive","resize","restore","retinize","right","rotate","rsquo","screen","screenshot","screenshots","shots","simple","sizing","smart","spaces","sponsoring","stored","synchronized","system","tasks","timed","today","tools","useful","version","visible","where","windows","workflows","years"]
	},{
		"title": "OmniFocus giveaway!",
		"url": "/2024/01/22/omnifocus-giveaway/",
		"tags": ["giveaway","macos","omnifocus","productivity"],
		"date": "Jan 22<span>nd</span>, 2024",
		"ts": "1705932000",
		"summary": "I&rsquo;m excited to offer the next giveaway, three Standard licenses for all platforms ($74.99 value) for OmniFocus 4. If you&rsquo;ve played around with productivity apps on Mac or iOS, you&rsquo;ve seen OmniFocus. It&rsquo;s the most complete task management system available on macOS and iOS. Tagging, projects, quick entry, easy search, extensive automation&hellip; there&rsquo;s nothing it can&rsquo;t do. Among many other improvements, the latest version streamlines the interface, makes keyboard usage on iOS compatible with macOS, and doesn&rsquo;t give up any power tools in the process. This giveaway covers you for both Mac and iOS (and even your Watch!). OmniFocus is powerful task management software for busy professionals. With tools to help tame the chaos, you can focus on the right tasks at the right time. The new design in OmniFocus 4 spotlights task content, making it easier than ever for new users to get started, while providing all of the powerful features and a commanding level of customization that satisfies the most demanding power user. Sync included; privacy respected . Sign up below to enter. Winners will be randomly drawn on Friday, January 26, at 12pm Central. The drawing is for 3 Standard licenses for all platforms ($74.99 value) for OmniFocus 4, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["omnifocus","productivity","among","central","check","entries","friday","mastodon","omnifocus","sorry","standard","tagging","watch","winners","among","appreciated","automation","available","below","beyond","brettterpstra","chaos","codes","commanding","compatible","content","cooperation","covers","customization","demanding","design","developer","doesn","drawing","easier","ended","enter","entry","excited","extensive","featured","features","first","focus","generating","giveaway","giveaways","hellip","improvements","included","interface","keyboard","latest","level","license","licenses","macos","mailing","makes","making","management","maybe","names","nothing","offer","platforms","played","powerful","privacy","process","productivity","professionals","projects","providing","quick","randomly","reading","respected","right","robot","rsquo","satisfies","search","series","signups","skipped","software","spotlights","started","streamlines","system","tasks","through","tools","tuned","usage","users","value","vendors","version","visit","while","winner"]
	},{
		"title": "The Bartender giveaway winners!",
		"url": "/2024/01/19/the-bartender-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jan 19<span>th</span>, 2024",
		"ts": "1705688040",
		"summary": "The Bartender giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Bartender is still worth checking out. If you run enough utilities on your Mac that your menu bar gets cluttered, this is a no-brainer. You can still save 10% on your purchase with the code . By the way, Bartender is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is OmniFocus . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["bartender","utility","apostolos","bartender","black","carlino","check","congratulations","fastscripts","giuseppe","graves","houdahspot","hulme","jachimstal","kolstad","kriel","marsedit","mastodon","matthew","michael","monday","omnifocus","setapp","smith","taskpaper","tensfeldt","troulitakis","twitter","amazing","announce","available","brainer","checking","cluttered","details","email","ended","enough","giveaway","giveaways","hundreds","notifications","received","rsquo","sasaki","series","sorry","subscription","suggest","through","upcoming","utilities","winners","worth"]
	},{
		"title": "Web Excursions for January 18, 2024",
		"url": "/2024/01/18/web-excursions-for-january-18-2024/",
		"tags": ["bookmarks"],
		"date": "Jan 18<span>th</span>, 2024",
		"ts": "1705607040",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Eternal Storms Software - ScreenFloat Matthias Gansrigler has released v2 of ScreenFloat, one of my favorite apps from years ago. A lot of its functionality was replaced by CleanShot X for me in recent years, but the shots browser, tagging, and smart folders set it apart. The basic idea is you can float a screenshot above all other windows and it follows you between spaces, but v2 goes a lot further. Check it out. TipBITS: Always Show Window Proxy Icons Back in 2020 I published a tip to make the now-hidden proxy icons in macOS show up instantly on rollover, but it turns out that since then Apple has added a preference to just show them all the time. Thanks to Pim for pointing this out. davidbalbert/KeyBinding-Inspector An app to survey your macOS text system keybindings. I&rsquo;ve been writing a lot about editing the file, and this app makes it easy to peruse what key combinations are doing what. The biggest shortfall is that it doesn&rsquo;t handle nested bindings (multi-keystroke), but it does successfully ignore those and show you everything else. Commit Art Turn your contributions into a tangible piece of art! Mine for 2023 is a documentation of my bipolar type 2 life. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["keyboard","proxy","shortcut","window","apple","backblaze","check","cleanshot","commit","eternal","gansrigler","icons","inspector","keybinding","matthias","proxy","screenfloat","software","storms","thanks","tipbits","window","above","added","affordably","apart","backs","basic","between","biggest","bindings","bipolar","brought","browser","cloud","combinations","computer","contributions","davidbalbert","doesn","doing","editing","entire","everything","excursions","favorite","float","folders","follows","functionality","handle","hidden","icons","ignore","instantly","keybindings","keystroke","macos","makes","multi","nested","partnership","piece","pointing","preference","proxy","published","recent","released","reliably","replaced","rollover","rsquo","screenshot","securely","shortfall","shots","since","smart","spaces","successfully","survey","system","tagging","tangible","today","turns","windows","writing","years"]
	},{
		"title": "Screenshots with CurlyQ",
		"url": "/2024/01/17/screenshots-with-curlyq/",
		"tags": ["browser","curlyq","screenshot","webdesign"],
		"date": "Jan 17<span>th</span>, 2024",
		"ts": "1705523160",
		"summary": "I&rsquo;ve been putting a little more time into CurlyQ this week, as I&rsquo;m able. First thing to note is a breaking change: it will always return an array now, even if there&rsquo;s only one result. I had waffled on this a little, but for predictability in scripting it really always needs to be a consistent format. So even a single-string result, e.g. a command that targets a single element with and then uses in the query (which previously would have just returned the source string for the matched tag) will now return an array containing a single string. Secondly, I&rsquo;ve put a considerable amount of effort into the feature. You can now use -like syntax to query multiple items in an array, use dot-syntax for attribute comparisons, and use comparisons (like ) on hashes, returning true if any value in the hash matches the query. Still, if you want the full power of something like or , you can just pipe the output to either and work with more familiar tools. But on to a cool thing. I mentioned CurlyQ&rsquo;s screenshot capability in the intro post, but it&rsquo;s received some improvements, and I thought it deserved a little more detail. I incorporated Selenium to allow scraping of dynamic web pages. One of the features Selenium provides is screenshots saved from the browser of choice. Thus CurlyQ has a screenshot feature: The flag () determines whether it uses Chrome or Firefox, and the selected browser must be installed on your system. The full-page capture () is only available with Firefox. Chrome can only output (the visible part of the page on first load) and , a print version of the page with styling applied. Firefox can output all types. The flag () accepts , , and . With and , you get a full-length version of the rendered page, including offscreen elements. All of these can be abbreviated to their first letter, e.g. or . The flag () is required and determines the path/name of the output file. Providing just a name will save the file to the current directory. Extensions can be provided but will be changed depending on output type, for and , for . So you can just provide a name without extension and CurlyQ will apply the appropriate extension. As a side note, saving a screenshot with will output a PDF with actual text that can be searched by Spotlight (and other tools). So you could ostensibly use CurlyQ to crawl an entire site (by parsing the subcommand output and spidering) and save every page to a searchable PDF. I don&rsquo;t&hellip;",
		"keywords": ["chrome","development","features","firefox","google","graphical","history","interface","selenium","software","testing","version","chrome","curlyq","extensions","firefox","first","forum","mastodon","providing","secondly","selenium","spotlight","abbreviated","accepts","allow","amount","applied","apply","array","attribute","available","breaking","browser","capability","capture","change","changed","choice","command","comparisons","consistent","containing","crawl","depending","deserved","detail","details","determines","directory","dynamic","effort","either","element","elements","entire","extension","familiar","feature","features","first","format","hashes","improvements","including","incorporated","input","installed","intro","items","length","letter","little","matched","matches","mentioned","message","multiple","needs","offhand","offscreen","ostensibly","output","pages","parsing","possible","predictability","previously","print","project","provides","putting","query","received","refined","rendered","reports","required","return","returned","returning","rsquo","saved","saving","scraping","screenshot","screenshots","scripting","searchable","searched","selected","single","source","spidering","string","styling","subcommand","suggestions","syntax","system","targets","thought","tools","types","value","version","visible","waffled","welcome"]
	},{
		"title": "Bartender giveaway!",
		"url": "/2024/01/15/bartender-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Jan 15<span>th</span>, 2024",
		"ts": "1705327200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 10 licenses ($16 value each) for Bartender. Bartender tames your Mac menu bar. You can move all the stuff you don&rsquo;t always need to see into a secondary menu bar, navigate the menu bar(s) with shortcuts, and even control menu bar items like Time Machine, Battery, and Wi-fi. Bartender is an award-winning app for macOS that superpowers your menu bar, giving you total control over your menu bar items, what&rsquo;s displayed, and when, with menu bar items only showing when you need them. Bartender improves your workflow with quick reveal, search, custom hotkeys and triggers, and lots more. Sign up below to enter. Winners will be randomly drawn on Friday, January 19, at 12pm Central. The drawing is for 10 licenses ($16 value each) for Bartender, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["bartender","utility","bartender","battery","central","check","entries","friday","machine","mastodon","sorry","winners","among","appreciated","award","below","beyond","brettterpstra","codes","control","cooperation","custom","developer","displayed","drawing","ended","enter","excited","featured","first","generating","giveaway","giveaways","giving","hotkeys","improves","items","license","licenses","macos","mailing","maybe","names","navigate","offer","quick","randomly","reading","reveal","robot","rsquo","search","secondary","series","shortcuts","showing","signups","skipped","stuff","superpowers","tames","through","triggers","tuned","value","vendors","visit","winner","winning","workflow"]
	},{
		"title": "The Keyboard Maestro giveaway winner!",
		"url": "/2024/01/12/the-keyboard-maestro-giveaway-winner/",
		"tags": ["giveaway","keyboard"],
		"date": "Jan 12<span>th</span>, 2024",
		"ts": "1705083300",
		"summary": "The Keyboard Maestro giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Keyboard Maestro is still worth checking out. You can still save 20% off of Keyboard Maestro with the coupon ! The automation possibilities are endless. Next up is Bartender . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["automation","keyboard","maestro","bartender","check","cohen","congratulations","fastscripts","houdahspot","jonno","keyboard","maestro","marsedit","mastodon","monday","omnifocus","taskpaper","twitter","announce","automation","checking","coupon","details","email","ended","endless","giveaway","giveaways","notifications","possibilities","received","rsquo","series","sorry","suggest","through","upcoming","winner","winners","worth"]
	},{
		"title": "Introducing CurlyQ, a pipeline-oriented curl helper",
		"url": "/2024/01/10/introducing-curlyq-a-pipeline-oriented-curl-helper/",
		"tags": ["browser","curlyq","scripting","source","tools"],
		"date": "Jan 10<span>th</span>, 2024",
		"ts": "1704905280",
		"summary": "Today I&rsquo;m releasing an initial version of my latest tool, CurlyQ. It&rsquo;s a work in progress, though should be immediately useful to those who need it. I need your input on where it goes next, what&rsquo;s missing, and what you&rsquo;d like to do with it that it can&rsquo;t handle yet. Join me in the forum to discuss1! CurlyQ is a helper for the curl command, with some extra functionality. Sure, it can grab the contents of a web page, but it can also provide a breakdown of all of the metadata, page images, page links, and can work with dynamic pages (where the page is loaded by a JavaScript call and the raw source is empty except for script tags). It will even do screenshots. It&rsquo;s designed to alleviate some of the chores when scraping web pages or getting JSON responses. CurlyQ is designed to be part of a scripting pipeline, making it as simple as possible to do something like get a page&rsquo;s title, find the largest image on the page, or examine and validate all the links on a page. You can query the results based on any attribute of the returned tag, showing, for example, only links with a attribute or a paragraph with a certain class. The subcommand can output a hierarchy of all tags on the page, with each parent tag containing a key with its immediate children, on down the line. This can be queried and filtered using command line flags. This tool has multiple User Agent strings configured and can accept custom headers. If a request fails, it will try again with various User Agent strings. This is because some sites block pages with certain (or missing) User Agents, and some don&rsquo;t, so it has a built-in retry. It can also handle pages that respond with gzipped data using on the command line. If you don&rsquo;t use and it detects gzipped data, it will quietly fail and notify you that you need to add the flag. I may make this an automatic fallback in the future. You can also specify a browser as a fallback (Chrome or Firefox), so if regular curling fails or is blocked, it can actually load the page in a web browser and retrieve/process the source from the window. CurlyQ also incorporates Nokogiri, allowing it to perform element selection using CSS selectors or XPaths. For example, the command accepts to return an array of all h3s contained in a header tag inside an article tag on the page. It can output as JSON or YAML, and for queries that target a specific element or key in the response, you can output raw strings. There&hellip;",
		"keywords": ["element","javascript","selenium","&#39;article","agent","agents","chrome","curlyq","elements","firefox","github","handling","issues","javascript","leaving","nokogiri","prevention","ready","retrieving","stdin","scripter","selenium","shoot","today","xpaths","ability","accept","accepting","accepts","accustomed","again","allowing","allows","applying","appreciate","array","article","aspects","assumed","attribute","automatic","automatically","automation","backlink","based","because","before","between","block","blocked","breakdown","brettterpstra","browser","built","capabilities","capability","certain","children","choice","chores","class","command","comment","compressed","configured","contained","containing","content","contents","create","curling","curlyq","custom","cycle","designed","details","detects","doesn","dynamic","easily","elegantly","element","elements","empty","endnotes","errors","examine","example","except","expectations","extra","extract","extracting","fails","fallback","feedback","filtered","flags","flesh","fnref","footnote","footnotes","forum","functionality","getting","github","greatly","gzipped","handle","handles","handling","header","headers","headless","height","helper","hierarchy","highlighter","https","image","images","immediate","incorporates","information","initial","input","inside","installation","instance","issues","jqlang","language","largest","latest","limited","links","linux","loaded","loading","located","major","making","manipulation","matches","media","metadata","mikefarah","miniature","missing","multiple","necessary","negative","noscript","noteref","offer","optional","original","output","pages","paragraph","parent","parsing","passing","picture","pipeline","plaintext","positive","possible","prevention","print","printed","process","processor","project","projects","queried","queries","query","quietly","ready","regular","releasing","rendered","requests","required","respond","response","responses","results","retrieve","retrieving","retry","return","returned","returning","reversefootnote","right","rouge","rsquo","scraping","screenshot","screenshots","script"]
	},{
		"title": "Keyboard Maestro giveaway!",
		"url": "/2024/01/08/keyboard-maestro-giveaway/",
		"tags": ["automator","giveaway","keyboard","macos"],
		"date": "Jan 8<span>th</span>, 2024",
		"ts": "1704722400",
		"summary": "I&rsquo;m excited to offer the next giveaway, a license ($36 value) for Keyboard Maestro. Keyboard Maestro is an insanely powerful app for automation on your Mac that no power user should be without. It can automate literally everything. Power users will love it, but everyday users can greatly benefit from the shortcuts and triggers that Keyboard Maestro offers with a simple drag-and-drop configuration. Whether you are a power user or just getting started, your time is precious. So don’t waste it. You can quickly benefit from Keyboard Maestro. Let Keyboard Maestro help make your Mac life more pleasant and efficient. With so many possible actions that you can combine together, including flow control, conditions and looping actions, you can automate almost any task, from the trivial to very complex multi-application reporting systems. Sign up below to enter. A winner will be randomly drawn on Friday, January 12, at 12pm Central. The drawing is for a license ($36 value) for Keyboard Maestro. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["automation","keyboard","maestro","brettterpstra","central","check","entries","friday","giveaway","giveaways","keyboard","maestro","mastodon","robot","sorry","upcoming","actions","almost","among","appreciated","automate","automation","below","benefit","beyond","blockquote","brettterpstra","class","codes","complex","conditions","configuration","contact","control","cooperation","developer","drawing","easydns","efficient","ended","enter","everyday","everything","excited","featured","first","generating","getting","giveaway","giveaways","greatly","height","https","image","including","insanely","keyboard","keyboardmaestro","license","literally","loading","looping","maestro","mailing","maybe","media","multi","names","nojack","noscript","offer","offers","original","picture","pleasant","possible","powerful","precious","quickly","randomly","reading","reporting","robot","rsquo","screenshot","series","shortcuts","signups","simple","skipped","sorry","source","srcset","started","strong","subscribe","systems","through","title","together","triggers","trivial","ttscoff","tuned","upcoming","uploads","users","value","vendors","visit","waste","width","winner"]
	},{
		"title": "The App Tamer giveaway winners!",
		"url": "/2024/01/05/the-app-tamer-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jan 5<span>th</span>, 2024",
		"ts": "1704481200",
		"summary": "The App Tamer giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but App Tamer is still worth checking out. If you want your apps to run faster, it&rsquo;s a no-brainer. You can still save 20% using the coupon at checkout. By the way, App Tamer is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Keyboard Maestro . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["optimization","tamer","bartender","check","cline","congratulations","delaine","fastscripts","houdahspot","kevin","keyboard","maestro","marsedit","mastodon","monday","omnifocus","setapp","tamer","taylor","twitter","amazing","announce","available","brainer","checking","checkout","coupon","details","email","ended","faster","giveaway","giveaways","hundreds","notifications","received","rsquo","series","sorry","subscription","suggest","through","upcoming","using","winners","worth"]
	},{
		"title": "App Tamer giveaway!",
		"url": "/2024/01/01/app-tamer-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Jan 1<span>st</span>, 2024",
		"ts": "1704117600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 licenses ($14.95 value each) for App Tamer. Got unruly applications? App Tamer helps you take control of your CPU by controlling how much access your apps have to it. Throttle apps that take up too much CPU, speeding up the apps you&rsquo;re using most. App Tamer will automatically slow down or pause your applications whenever you&rsquo;re not using them, greatly reducing their CPU use. App Tamer even comes pre-configured to automatically reduce the CPU and battery usage of Safari, Firefox, Google Chrome, Spotlight, Time Machine, Photoshop, Illustrator, Word and many other applications. Sign up below to enter. Winners will be randomly drawn on Friday, January 05, at 12pm Central. The drawing is for 2 licenses ($14.95 value each) for App Tamer, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["optimization","tamer","central","check","chrome","entries","firefox","friday","google","illustrator","machine","mastodon","photoshop","safari","sorry","spotlight","tamer","throttle","winners","access","among","applications","appreciated","automatically","battery","below","beyond","brettterpstra","codes","comes","configured","control","controlling","cooperation","developer","drawing","ended","enter","excited","featured","first","generating","giveaway","giveaways","greatly","helps","license","licenses","mailing","maybe","names","offer","pause","randomly","reading","reducing","robot","rsquo","series","signups","skipped","speeding","through","tuned","unruly","usage","using","value","vendors","visit","whenever","winner"]
	},{
		"title": "JavaScript Lyric embed for SearchLink",
		"url": "/2023/12/29/javascript-lyric-embed-for-searchlink/",
		"tags": ["javascript","searchlink"],
		"date": "Dec 29<span>th</span>, 2023",
		"ts": "1703883600",
		"summary": "Another silly little rabbit hole I&rsquo;ve gone down&hellip; The Lyrics plugin for SearchLink can now embed the JavaScript version of lyrics from Genius.com, complete with annotations. Note that the embed script uses a cross-origin request and won&rsquo;t work in your local notes, but will work when published as HTML (to a blog or elsewhere). The Lyrics plugin is included in the distribution, but also available in the Plugins repository for separate install and examination",
		"keywords": ["genius","lyrics","&#39;https","another","blood","genius","javascript","kflay","lyrics","plugins","running","search","string","searchlink","annotations","available","blood","brettterpstra","class","cross","crossorigin","distribution","elsewhere","embed","examination","genius","github","hellip","highlight","highlighter","https","included","install","language","link&#39;","little","local","lyricjs","lyrics","lyrics&#39;","notes","origin","output","plaintext","plugin","plugins","projects","published","query","rabbit","repository","rouge","rsquo","script","searchlink","separate","silly","songs","title","ttscoff","version"]
	},{
		"title": "The Curio giveaway winner!",
		"url": "/2023/12/29/the-curio-giveaway-winner/",
		"tags": ["giveaway","productivity"],
		"date": "Dec 29<span>th</span>, 2023",
		"ts": "1703873460",
		"summary": "The Curio giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Curio is still worth checking out. You can still save 27% (in honor of Curio&rsquo;s 27th release) using the coupon . If you brainstorm, manage projects, or just love to research, Curio is a must-have. Next up is App Tamer . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["brainstorming","curio","organization","productivity","bartender","check","congratulations","curio","houdahspot","keyboard","maestro","mahon","marsedit","mastodon","monday","omnifocus","tamer","twitter","announce","brainstorm","checking","coupon","details","email","ended","giveaway","giveaways","honor","notifications","projects","received","release","research","rsquo","series","sorry","suggest","through","upcoming","using","winner","winners","worth"]
	},{
		"title": "Updated Bitlyize Service",
		"url": "/2023/12/26/updated-bitlyize-service/",
		"tags": ["bitly","scripting","searchlink","service"],
		"date": "Dec 26<span>th</span>, 2023",
		"ts": "1703599200",
		"summary": "I hope you&rsquo;ve had nice holidays! I&rsquo;ve updated my Bitlyize service to work with v4 of the Bit.ly API. It parses the input for all URLs and replaces them with shortened links connected to your account. Not only can this make long links more readable, it gives you some analytics on how often the links are used (and deeper analytics like country of origin, referrer, and other data). If you pass it a Bit.ly-shortened link, it will expand it to its original URL. The downside to shortened links is you can&rsquo;t tell where they go, which can make them seem a little sketchy. You get to weigh the tradeoffs there. This service makes it easy to expand shortened URLs in place, though. By the way, shortened links aren&rsquo;t just obscured for readers and recipients, they&rsquo;re opaque to future you as well. If you want to use short links for blogging or note taking, I recommend using the function of SearchLink, which can give you title attributes. It requires separate configuration, but then instead of just a bit.ly link, you can run and get , which is a bit more descriptive. You can also just pass it a long url like and get . These Services require Ruby, which is no longer included with macOS by default. You can get it by installing the Apple Command Line Tools, or see this article for information on installing Ruby with Homebrew/ASDF. You don&rsquo;t need Rails or anything after the Installing Ruby section in the latter article. Anyway, download the Service below, double click to install, then set up a configuration file. The file should be located at and only needs two settings",
		"keywords": ["clipboard","shortener","shortening","anyway","apple","bitlyize","command","homebrew","installing","rails","searchlink","service","services","tools","account","analytics","article","attributes","below","blogging","click","configuration","connected","country","deeper","default","descriptive","double","download","downside","expand","function","gives","holidays","included","information","input","install","installing","latter","links","little","located","longer","macos","makes","needs","obscured","often","opaque","origin","original","parses","readable","readers","recipients","recommend","referrer","replaces","requires","rsquo","section","separate","service","settings","short","shortened","sketchy","taking","title","tradeoffs","updated","using","weigh","where"]
	},{
		"title": "Weather forecasts for SearchLink",
		"url": "/2023/12/25/weather-forecasts-for-searchlink/",
		"tags": ["plugin","search","searchlink","weather"],
		"date": "Dec 25<span>th</span>, 2023",
		"ts": "1703531400",
		"summary": "It&rsquo;s unseasonably warm for Christmas here in Minnesota. It&rsquo;s 50° out. To mark the weird occasion, I created a quick plugin for SearchLink that lets you run a search like: Weather for Winona, Minnesota on 2023-12-25 at 12:53 PM: 51.8 and Light rain The plugin only outputs &lsquo;embed&rsquo; style, it won&rsquo;t provide a URL for your forecast. It&rsquo;s just meant to inject actual weather data in your writing. Forecast for Winona, Minnesota on 2023-12-25: Moderate rain 53.7/48.7 Currently: 51.8 and Light rain 8am 10am 12pm 2pm 4pm 6pm 8pm Overcast Patchy rain possible Light rain Light drizzle Light rain Light rain Light rain 49.1 51.0 51.8 52.0 51.8 51.2 50.8 This uses code from Journal, and isn&rsquo;t meant to be overly detailed or comprehensive, just an easy way to include the current weather in whatever you happen to be writing. Silly, I know, but I already had most of the code. To use the plugin, grab the file from the GitHub SearchLink Plugins repo and place it in . Then you&rsquo;ll need an API key from https://weatherapi.com. Just sign up for a free account and go to https://www.weatherapi.com/my/. You&rsquo;ll see your API key at the top. Add that to your config file like so: Note the setting, which can be &lsquo;c&rsquo; or &lsquo;f&rsquo; to get your temps in your local format. Then just run or searches using a zip/city name as the search terms. Enjoy! The search type can be shortened to 3-4 characters, e.g. can just be and can just be or . and also work for current conditions. This is just another example of how extensible SearchLink is. If you&rsquo;re interested in creating your own plugins for any kind of search, it&rsquo;s pretty easy! By the way, I added a couple new classes, and which make it super easy to retrive an HTML or JSON response from a given URL and extract tags/title/data from them. And the method makes doing Google/DuckDuckGo searches a one-line affair, so anything you want to search for, the tools are there! If you have any questions about using any of these (or about SearchLink in general) feel free to ask them in the forums",
		"keywords": ["weather","christmas","duckduckgo","enjoy","forecast","github","google","journal","light","markdown","minnesota","moderate","overcast","patchy","plugins","searchlink","silly","weather","winona","account","added","affair","alert","another","blockquote","brettterpstra","characters","class","classes","comprehensive","conditions","config","couple","created","creating","detailed","doing","drizzle","embed","example","extensible","extract","forecast","format","forum","forums","general","github","gives","happen","height","highlight","highlighter","hourly","https","image","inject","input","interested","journal","language","loading","local","location","lsquo","makes","meant","media","method","noscript","original","outputs","overly","picture","plaintext","plugin","plugins","possible","projects","questions","quick","region","response","retrive","rouge","rsquo","search","searches","searchlink","setting","shortened","source","srcset","style","super","table","tbody","temps","terms","thead","title","tools","ttscoff","umbrella","unseasonably","uploads","using","version","weather","weatherapi","weatherheader","weird","whatever","width","winona","writing","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]
	},{
		"title": "Curio giveaway!",
		"url": "/2023/12/25/curio-giveaway/",
		"tags": ["giveaway","macos","productivity"],
		"date": "Dec 25<span>th</span>, 2023",
		"ts": "1703512800",
		"summary": "🎄 Merry Christmas! I&rsquo;m excited to offer the next giveaway, a Pro license ($119 value) for Curio. Curio is the perfect app for managing your brainstorms, your research, your projects, and your digital life. A Curio \"space\" is a blank canvas on which you can add notes, web pages, pdfs, images, mind maps, outlines, and more. All searchable and linkable, and even shareable. Version 27 is freshly out and ready to take it to the next level. It even includes multiple AI integrations to assist with research. Take notes. Organize files. Collect research. Brainstorm in mind maps. Track tasks with to-do lists or Kanban stacks. Drop in an equation. Sketch out an idea. Get more productive! Curio’s intuitive, freeform notebook environment provides all the integrated tools you need to be more productive and focus on getting things done. Sign up below to enter. A winner will be randomly drawn on Friday, December 29, at 12pm Central. The drawing is for a Pro license ($119 value) for Curio. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["brainstorming","curio","organization","productivity","brainstorm","brettterpstra","central","check","christmas","collect","curio","entries","friday","giveaway","giveaways","kanban","mastodon","merry","organize","robot","sketch","sorry","track","upcoming","version","among","appreciated","assist","below","beyond","blank","blockquote","brainstorms","brettterpstra","canvas","class","codes","contact","cooperation","curio","developer","digital","drawing","easydns","ended","enter","environment","equation","excited","featured","files","first","focus","freeform","freshly","generating","getting","giveaway","giveaways","height","https","image","images","includes","integrated","integrations","intuitive","ldquo","level","license","linkable","lists","loading","mailing","managing","maybe","media","multiple","names","nojack","noscript","notebook","notes","offer","original","outlines","pages","picture","productive","projects","provides","randomly","rdquo","reading","ready","research","robot","rsquo","screenshot","searchable","series","shareable","signups","skipped","sorry","source","space","srcset","stacks","strong","subscribe","tasks","through","title","tools","ttscoff","tuned","upcoming","uploads","value","vendors","visit","width","winner","zengobi"]
	},{
		"title": "A few Ruby snippets for scripters",
		"url": "/2023/12/23/a-few-ruby-snippets-for-scripters/",
		"tags": ["scripting","shell"],
		"date": "Dec 23<span>rd</span>, 2023",
		"ts": "1703353860",
		"summary": "I do most of my automation and string manipulation scripting using Ruby. I know it&rsquo;s not the most popular language these days, but it&rsquo;s the one I know the best (thanks to my days of hacking on TextMate bundles) and it&rsquo;s usually the fastest way for me to solve a problem. I have reams of snippets saved (and easily accessible with Snibbets) and thought I&rsquo;d share a few that are useful for everyday scripting on macOS. Scrub uses the encode function to switch a string to UTF-16 discarding invalid characters (gremlins), then back to UTF-8. Applied as a String method, you can then use to get clean text with all gremlins removed. This can be modified or turned into a case statement to determine operating system. I often only need it to check if I can run Mac-only tools like or not. I used to use the CGI library for url encoding, but it doesn&rsquo;t properly percent-encode spaces as , but rather as , which breaks a lot of applications. The solution (as opposed to doing a manual search and replace) is to use the ERB library instead: If you&rsquo;re creating nested hash objects that end up with a mix of string and symbol keys, the easiest thing to do is symbolize all keys. won&rsquo;t do anything if the key is already a symbol. I hope that&rsquo;s useful for aspiring Ruby scripters. If there&rsquo;s interest, I can post (tons) more, but I also hope to get better about creating Gists that could be more easily searchable as a reference. The next step for Snibbets? There&rsquo;s a shell function I use frequently, easily replicable in any shell. It just shows you the contents of your clipboard (assuming text) without requiring a paste: Like I said, useful in any shell as a way to ensure what you think is on your clipboard actually is. Just type and get a preview before pasting anywhere",
		"keywords": ["function","languages","procedural","programming","string","applied","bonus","check","clipboard","gists","human","preview","return","rounding","scrub","snibbets","string","symbolize","textmate","accessible","across","algorithms","anywhere","applications","array","aspiring","assuming","automation","before","behave","breaks","bundles","characters","check","clean","clipboard","contents","convert","creating","dialogs","differently","discarding","doesn","doing","easiest","easily","encode","encoding","everyday","fastest","function","gremlins","hacking","interest","invalid","keypress","language","library","limited","longest","looks","macos","manipulation","manual","method","modified","needs","nested","numbers","objects","often","operating","opposed","paste","pasting","percent","popular","pressed","pressing","preview","problem","properly","rather","readable","reams","removed","replace","replicable","requiring","rsquo","saved","script","scripters","scripting","search","searchable","share","shell","shows","single","snippets","solution","solve","spaces","statement","string","strings","switch","symbol","symbolize","system","thanks","think","thought","tools","turned","useful","using","usually","utility","version","versions","where"]
	},{
		"title": "The Kaleidoscope giveaway winner!",
		"url": "/2023/12/22/the-kaleidoscope-giveaway-winner/",
		"tags": ["giveaway"],
		"date": "Dec 22<span>nd</span>, 2023",
		"ts": "1703268180",
		"summary": "The Kaleidoscope giveaway has ended, and I have a winner to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Kaleidoscope is still worth checking out. You can still save 20% on your subscription with the coupon ! If you work with text or images (especially code), you&rsquo;ll love it. It&rsquo;s the best diff app out there, and worth every penny. Next up is Curio . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["image","kaleidoscope","bartender","bavier","check","congratulations","curio","kaleidoscope","keyboard","maestro","marsedit","mastodon","monday","omnifocus","tamer","twitter","announce","checking","coupon","details","email","ended","especially","giveaway","giveaways","images","notifications","penny","received","rsquo","series","sorry","subscription","suggest","through","upcoming","winner","winners","worth"]
	},{
		"title": "Multi-keystroke keybindings",
		"url": "/2023/12/22/multi-keystroke-keybindings/",
		"tags": ["keybindings","keyboard","markdown","searchlink","shortcuts"],
		"date": "Dec 22<span>nd</span>, 2023",
		"ts": "1703264040",
		"summary": "Ok, this one will probably wrap up this little run of key binding tricks. It&rsquo;s been fun, though, and I&rsquo;d love to answer any questions I can in the forum. If you&rsquo;ve ever examined my master (or even looked at the readme), you&rsquo;ll see that I make use of a lot of multi-stroke key combos. There are only so many key combinations available, and you&rsquo;re bound to run out of ones that don&rsquo;t conflict with other shortcuts on your system. But with the magic of multi-stroke bindings, you can take one available shortcut and add secondary \"child\" shortcuts with the whole keyboard available for assignment again. For example, the SearchLink bindings I use start with ⌃+⌘+G. So I press that, then I can type a single letter to determine what type of SearchLink syntax gets inserted, e.g. ⌃+⌘+G followed by M inserts an IMDB search. To create a mutli-stroke binding, you just nest a PLIST inside of the root PLIST, keyed off the initial key combination: You can actually continue nesting, creating three-or-more -stroke sequences, though I don&rsquo;t know how many of those I could keep track of. Mnemonics do make it easy, though. I use a three-deep setting for my Markdown link insertions, where I type ⌃+⌘+W (the container for most of my Markdown commands, a throwback to the Blogsmith Bundle for TextMate), then L (for link), then either C (to paste from clipboard), or T to insert just the brackets with selected in the url. These sequences open up pretty much limitless possibilities for memorably (mnemonic) keyboard shortcuts. You create a logical grouping on an open shortcut, and then assign single letters that are meaningful and easy to remember in context. These nested keystrokes can also use modifier keys, but I like the fact that once I&rsquo;m inside of the main grouping, I only need single letters and not weird key combinations. As always, check out the KeyBindings project for more inspiration. Have fun",
		"keywords": ["computer","cursor","keyboard","textmate","&#39;https","blogsmith","bundle","command","control","deeper","defaultkeybinding","going","keybindings","keyboard","markdown","mnemonics","multi","plist","search","searchlink","textmate","again","animated","answer","assign","assignment","available","background","between","binding","bindings","bottom","bound","brackets","brettterpstra","caption","center","check","child","class","clipboard","clipboardlink","combination","combinations","combiner","combos","commands","conflict","contain","container","contents","context","continue","create","creating","cursor","deeper","deletebackward","deletetomark","either","examined","example","figure","followed","forum","frame","going","grouping","height","highlight","highlighter","https","illustration","image","imdblink","initial","inserttext","inserted","inserting","insertions","inserts","inside","inspiration","kbshortcutsheader","keybindings","keyboard","keycombo","keyed","keystrokes","language","ldquo","letter","letters","limitless","little","loading","logical","looked","magic","master","meaningful","media","memorably","mnemonic","modifier","moveleft","moveright","multi","muted","mutli","nested","nesting","noscript","original","padding","paste","pasteasplaintext","picture","plaintext","playsinline","possibilities","poster","press","project","projects","questions","rdquo","readme","remember","repeat","rouge","rsquo","search","searchlink","secondary","selecttomark","selected","separated","sequences","setmark","setting","shortcut","shortcuts","single","source","srcset","stroke","style","symbol","syntax","system","tabindex","throwback","title","track","tricks","uploads","video","weird","where","whole","width"]
	},{
		"title": "More keybindings: Text editing shortcuts",
		"url": "/2023/12/21/more-keybindings-text-editing-shortcuts/",
		"tags": ["keybindings","shortcuts","sublimetext","textmate"],
		"date": "Dec 21<span>st</span>, 2023",
		"ts": "1703195820",
		"summary": "I guess it&rsquo;s keybinding week this week. I&rsquo;ve talked about the kill ring and repeat binding, but I&rsquo;ve been digging in and revamping my own file, so I keep wanting to share some of the cooler things it can do because I know the file in the project is pretty massive and hard to parse. There are a ton of text editing shortcuts in my bindings (that&rsquo;s basically their sole purpose), but I wanted to highlight just a few that I use so often I don&rsquo;t even think about it. First, ⌘+⏎. TextMate was the first place I ever saw this, but now it&rsquo;s pretty standard in most text editors, from Byword to nvUltra, VS Code to Sublime. When you hit ⌘+⏎, it moves your cursor to the end of the current line/paragraph and inserts a new line, no matter where you are in the paragraph. And ⇧+⌘+⏎ will do the same but before the current line/paragraph. It allows you to be editing in the middle of a graf, then just hit ⌘+⏎ to start typing again, saving use of the mouse or arrow keys to get to the new insertion point. This keybinding will work in any Cocoa text field on your Mac, so it&rsquo;s no longer limited to your favorite coding app. It works in TextEdit, Mail, Pages (but not Word), and in apps like Bear, Day One, or NotePlan. Just about anywhere that uses native text fields. The first version I&rsquo;ll show you is the most universal. The reason for this is that ⌘+⏎ is frequently used by apps for special purposes, and the app&rsquo;s keybindings will override your system-wide keybindings. So having a less-common shortcut makes this more available. I actually include both versions in my file, and when I&rsquo;m in an app that overrides ⌘+⏎, I just switch to using this version. I use ⌥+O for these, but note that doing so will mean you can&rsquo;t just type the slashed-O symbol () anymore1. If you never type that symbol, then you&rsquo;re fine, but if you do use it, you might want to consider a different shortcut. To use any of the examples in this post, you&rsquo;ll just add them to , a directory and text file you can create if it doesn&rsquo;t exist. The examples include the outer curly brackets, but if you&rsquo;re adding to an existing set of keybindings, only copy the portion inside of the curly brackets and place it within the existing outer curly brackets in your file. If you&rsquo;re combining multiple examples from this post, you only want one set of curly brackets at the root, and then the contents can be&hellip;",
		"keywords": ["arrow","indentation","keyboard","shortcut","sublime","&#39;https","arrow","byword","check","cocoa","command","control","danish","defaultkeybinding","faroese","first","increment","keybindings","library","markdown","moving","norwegion","noteplan","pages","remember","return","right","shift","southern","sublime","templated","textedit","textmate","ability","above","adding","advanced","again","allows","animated","animation","another","anymore","anywhere","appended","arrow","available","aware","background","backlink","because","before","between","binding","bindings","blank","blockquote","border","bottom","bound","brackets","break","brettterpstra","caption","center","character","class","cmdreturn","coding","combinations","combiner","combining","command","common","conflict","consider","contain","contents","context","cooler","count","create","curly","cursor","decrease","default","deletebackward","deletetomark","different","digging","directory","doesn","doing","duplicate","editing","editors","endnotes","entire","everywhere","example","examples","exist","favorite","field","fields","figure","first","fnref","footnote","footnotes","forth","found","frame","generated","global","great","groovy","guess","handy","having","header","height","highlight","highlighter","however","https","image","improvements","increase","increment","indent","indentation","indented","insertnewline","inserttext","insertion","inserts","inside","installed","items","keybinding","keybindings","keycombo","language","languages","likely","limited","linemotion","loading","longer","macos","makes","massive","media","middle","mileage","motion","mouse","moveleft","moveright","movetobeginningofparagraph","movetoendofparagraph","moves","moving","multiple","muted","native","newline","newlines","noscript","noteref","nvultra","often","original","outdent","outdenting","outer","override","overrides","padding","paragraph","paragraphs","parse","people","picture","plaintext","playsinline","point","popclip","portion","poster","problem","project","projects","recognized","remove","repeat","restart","return","revamping","reversefootnote","rouge","rsquo","saving","second"]
	},{
		"title": "HoudahSpot: Powerful file search -- skip filing, start finding [Sponsor]",
		"url": "/2023/12/21/houdahspot-powerful-file-search-skip-filing-start-finding-sponsor/",
		"tags": ["search","sponsor","spotlight"],
		"date": "Dec 21<span>st</span>, 2023",
		"ts": "1703167200",
		"summary": "Thanks to HoudahSpot for sponsoring BrettTerpstra.com this week! I&rsquo;ve been using it for years and swear by it as a way to find files that Spotlight can&rsquo;t, quickly and easily. HoudahSpot is a powerful tool for finding and managing files on your Mac, with features beyond Spotlight. Have you shifted &mdash; by choice or by default &mdash; from organizing files in folder hierarchies to searching as your method of \"filing?\" You already appreciate the value of fast searches using macOS Spotlight. HoudahSpot is the next-level solution that fills the gaps in Spotlight&rsquo;s functionality. Are you tired of wasting your time searching for files on your Mac? When Spotlight falls short, HoudahSpot takes productivity to a new level. To put it bluntly, HoudahSpot is like steroids for Spotlight on macOS. Search for files using by name, text content, kind, date, and other metadata Start and refine searches with just a few clicks Combine any number of criteria to narrow down the list of results Sort search results and assess relevance by author, image resolution, video length, etc. Preview file content and text matches in context Customize default search criteria, search locations, columns, and sort order to fit your workflow If you have found a file with similar properties to the files you need, you can use it to refine your search. Just drag that example file to the search pane to update the search criteria. For instance, suppose you are looking for the master file – a Photoshop, Affinity Designer, or similar file – used to create a JPEG image uploaded to your website. Chances are that both the master file and the final JPEG were last modified on the same date. Drag the JPEG to a \"Modified\" criterion in HoudahSpot&rsquo;s search pane. Search criteria will update and limit search results to files modified on the same day as the JPEG. Of course, the same idea works to prune excess results from your search results: Remove files that share a property with a file you know not to be relevant. You can, for example, drag the folder containing one of the search results to the location exclusion list. Your search results will no longer include files from the folder you deem irrelevant. HoudahSpot is free to try. If you make use of search in your daily computer usage, try HoudahSpot today! Use the coupon code for a 30% discount on single user and on family licenses through December 31",
		"keywords": ["macos","preview","affinity","brettterpstra","chances","customize","designer","example","files","houdahspot","modified","photoshop","preview","remove","search","spotlight","terpstra","thanks","think","advanced","appreciate","assess","author","beyond","bluntly","brettterpstra","campaign","choice","class","clicks","columns","computer","containing","content","context","coupon","create","criteria","criterion","daily","default","discount","easily","example","exclusion","falls","family","features","files","filing","fills","finding","folder","found","functionality","height","hierarchies","highlighter","hooudaspot","houdah","houdahspot","houdahspot","https","image","index","instance","irrelevant","language","ldquo","length","level","licenses","limit","loading","location","locations","longer","looking","macos","managing","master","matches","mdash","media","medium","metadata","method","modified","narrow","nofollow","noscript","organizing","oriented","original","picture","plaintext","powerful","productivity","properties","property","prune","quickly","rdquo","refine","relevance","relevant","resolution","results","rouge","rsquo","screenshot","search","searches","searching","share","shifted","short","similar","single","solution","source","sponsoring","sponsorship","srcset","steroids","suppose","swear","takes","through","tired","title","today","uploaded","uploads","usage","using","value","version","video","wasting","website","width","workflow","works","years"]
	},{
		"title": "macOS keybinding tricks: the repeat count binding",
		"url": "/2023/12/19/macos-keybinding-tricks-the-repeat-count-binding/",
		"tags": ["keybindings","keyboard","shortcuts","tricks"],
		"date": "Dec 19<span>th</span>, 2023",
		"ts": "1703020320",
		"summary": "In Vim, most operations have can have a count specified in the keystrokes for the command, e.g. to delete 3 lines. You can do similar in any Cocoa text field (all Apple apps, plus most native apps). You just need to specify a keyboard shortcut to use before the count. Then you can hit that keyboard shortcut, type a number (X) and then hit a key or key combination to have that event repeated X times. The above would set the repeat binding to ⌥+R. Use the following shortcuts when defining the operator, being sure not to overwrite a keyboard shortcut you use elsewhere (control-option combinations are pretty safe): You can use any combination of symbols when defining your shortcut. I like ⌥+R () because it has no conflicts that I know of and is easily reachable with my left hand. Also there&rsquo;s a mnemonic quality with \"r\" for \"repeat.\" Choose whatever you like1. Once the above command is run, relaunch whatever app you want to test it in. It will work in TextEdit, nvUltra, Bear, Pages&hellip; most apps that you would use on your Mac. But a restart of the app will be required for the new bindings to be recognized. Now, type your selected shortcut (⌥+R if you didn&rsquo;t change it), then type a number (any number of digits), then type \"x\". If you typed , you should get . This works with both character insertions and movement keys and text operations. For example, if you type and then hit ⌥+⌫, it would delete backwards 5 words. Each step of the repeat process is stored in the undo buffer, so undoing it would require five ⌘+Zs. This is actually a feature, because if you&rsquo;re estimating how many words back to delete but guess wrong, you can undo a couple to restore them individually. One niche example use for this is when you want to insert a redacted password or API key when you&rsquo;re writing. You know the length of the password or key should be 20 characters, so you just type ⌥+R and get a string of x&rsquo;s of the appropriate length. Or if you want to select the previous 3 words in the current line, just type ⌥+R⌥+⇧+←. Much like Vim, it takes a second of thought to figure out how many times you want to repeat an action, and in some cases it&rsquo;s faster to just hit the key that number of times. But give it a go and make a conscious effort to use it for a while, I bet it will stick. Weirdly this trick doesn&rsquo;t work for ⌘+V, which is disappointing because one very common use I could see for it would be to copy something and then&hellip;",
		"keywords": ["repeat","shortcut","&#39;https","another","apple","arrow","choose","cocoa","command","control","drang","launchbar","modifier","nsrepeatcountbinding","pages","shortcut","shift","symbol","textedit","weirdly","above","action","animated","background","backlink","backwards","because","before","binding","bindings","blockquote","bottom","brettterpstra","buffer","caption","center","change","character","characters","class","combination","combinations","combiner","command","comments","common","conflicts","conscious","consider","contain","control","count","couple","defaults","defining","different","digits","disappointing","doesn","drang","drdrang","easily","effort","elsewhere","emoji","endnotes","enter","estimating","example","explain","faster","favorite","feature","field","figure","fnref","folks","footnote","footnotes","fosstodon","frame","guess","hellip","highlight","highlighter","honing","https","increased","individually","insertions","interested","keyboard","keycombo","keystrokes","language","ldquo","leads","length","macos","mnemonic","movement","muted","native","niche","noted","noteref","nvultra","operations","operator","overwrite","padding","password","paste","picker","plaintext","playsinline","poster","process","productivity","quality","rdquo","reachable","readers","recognized","recommend","redacted","relaunch","repeat","repeated","required","restart","restore","reversefootnote","rouge","rsquo","second","selected","separated","share","shortcut","shortcuts","similar","source","special","specify","stick","stored","string","style","symbol","symbols","tabindex","table","takes","tbody","thead","thought","times","title","trick","tricks","typed","undoing","uploads","using","video","whatever","while","willing","words","works","write","writing","wrong","xxxxxxxxxx"]
	},{
		"title": "macOS keybinding tricks: The kill ring",
		"url": "/2023/12/18/macos-keybinding-tricks-the-kill-ring/",
		"tags": ["editor","keybindings","keyboard","tricks"],
		"date": "Dec 18<span>th</span>, 2023",
		"ts": "1702929420",
		"summary": "So you may have seen my KeyBindings project before. It&rsquo;s an insanely large collection of keybinding tricks that work in any macOS text field. Well, any native cocoa field. You won&rsquo;t have much luck in Electron or other non-native text editors. But for most uses, including in Safari, Mail, Notes, nvUltra, and most of the Markdown editors, the tricks work great. You can do things like adding TextMate-style ⌘+⏎ to any editor to create a new line no matter where your caret1 (cursor) is in the line. I&rsquo;ve written a bit about all of this before (and see the KeyBinding series), but I&rsquo;ll recap the basics for this tip, since it&rsquo;s been a while. To wit, you can create a (plain text) file located at that tells every macOS app what to do when you hit certain keys, and you can override all kinds of defaults and add new functionality by editing it. If that file already exists, you can just add to it. I&rsquo;ll offer more details when we get to that part of the trick. You already have emacs-style shortcuts available, including ⌃+K to delete (kill) to end of line, ⌃+U to delete to beginning of line, and ⌃+Y to paste (yank) text that was cut using either of the kill commands. You can delete an entire line by hitting ⌃+A (go to beginning of line) and then ⌃+K, then paste that line somewhere else with ⌃+Y. Try it. You don&rsquo;t have to do anything to enable this, it&rsquo;s always been built into macOS. I think it also works on iOS, but I don&rsquo;t have an external keyboard hooked up to test it out with right now. Let me know in the comments. Bonus tip: ⌃+T will transpose the characters to the left and right of the caret, allowing you to easily change frutive to furtive with one keystroke. So this tip is a way to make this cut/paste process more useful. You&rsquo;ve probably used (or at least seen) clipboard managers before. I use LaunchBar for this, but there are plenty of apps like Paste that can do it. Basically every time you cut or copy something, it gets added to a list in your clipboard manager, allowing you to paste anything you&rsquo;ve copied elsewhere, rather than just the last thing you copied. I wouldn&rsquo;t want to function without one. Those apps don&rsquo;t work with the kill commands, though. So here&rsquo;s what you can do instead. That creates a \"kill ring\" with 6 slots. Every time you cut, the text will be stored in the next available slot, cycling back to the beginning when the 6 slots are full. You can make&hellip;",
		"keywords": ["arrow","clipboard","cocoa","keyboard","launchbar","shortcut","system","termcap","textmate","&#39;https","bonus","command","control","create","defaultkeybinding","electron","emacs","first","keybinding","keybindings","keybindings","launchbar","library","markdown","nstextkillringsize","notes","paste","return","running","safari","terminal","textmate","added","adding","again","allowing","animated","anywhere","arrow","available","aware","background","backlink","backwards","basics","because","before","beginning","below","between","blockquote","bottom","brackets","brettterpstra","buffer","built","caption","caret","center","certain","change","changed","characters","check","choice","circumstance","class","clipboard","cocoa","collection","combiner","comes","command","commands","comments","contain","copied","create","creates","curly","cursor","cycle","cycled","cycling","defaults","details","documents","easily","editing","editor","editors","either","elsewhere","emacs","empty","endnotes","entire","error","exist","exists","external","feeling","field","figure","filled","first","fnref","footnote","footnotes","frame","frutive","function","functionality","furtive","generally","great","haven","height","highlight","highlighter","hitting","hooked","https","image","including","insanely","inserting","insertion","inside","interesting","items","keybinding","keybindings","keyboard","keycombo","keystroke","killring","killringheader","kinds","language","launchbar","ldquo","loading","located","macos","makes","manager","managers","media","muted","native","noscript","noteref","nvultra","obdev","offer","opposed","original","override","overwrite","padding","parent","paste","pasteapp","pasted","pasting","pedantic","picture","plaintext","playsinline","plenty","point","populated","poster","press","pressing","process","products","project","projects","rather","rdquo","recap","recognize","referring","register","registers","repeat","repeatedly","replaced","restart","restarted","results","reverse","reversefootnote","right","rouge","rsquo","running","sense","separated","series","several","shared","shortcuts","since","slots","somewhere","source"]
	},{
		"title": "Kaleidoscope giveaway!",
		"url": "/2023/12/18/kaleidoscope-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Dec 18<span>th</span>, 2023",
		"ts": "1702908000",
		"summary": "I&rsquo;m excited to offer the next giveaway, a 1-year subscription ($96 value) for Kaleidoscope. There is no better program for diffing on macOS. From code to prose to images, see what changed with fine granularity. Plus great new Git integration! Spot the differences in text and image files, or even folders full of files. Review changes in seconds, with the world&rsquo;s most powerful file comparison and merge app. Sign up below to enter. A winner will be randomly drawn on Friday, December 22, at 12pm Central. The drawing is for a 1-year subscription ($96 value) for Kaleidoscope. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through September, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["image","kaleidoscope","central","check","entries","friday","kaleidoscope","mastodon","sorry","among","appreciated","below","beyond","brettterpstra","changed","changes","codes","comparison","cooperation","developer","differences","diffing","drawing","ended","enter","excited","featured","files","first","folders","generating","giveaway","giveaways","granularity","great","image","images","integration","license","macos","mailing","maybe","merge","names","offer","powerful","program","prose","randomly","reading","robot","rsquo","seconds","series","signups","skipped","subscription","through","tuned","value","vendors","visit","winner","world"]
	},{
		"title": "Ruby Regexp::scan with MatchData",
		"url": "/2023/12/17/ruby-regexp-scan-with-matchdata/",
		"tags": ["regex","scripting"],
		"date": "Dec 17<span>th</span>, 2023",
		"ts": "1702849080",
		"summary": "This post will only be of interest to people writing scripts in Ruby. Seriously, zero utility if you&rsquo;re not using Ruby. Though I would be curious how you accomplish the same thing in other languages like Rust and Python, because I&rsquo;ve never gotten too deep with string manipulation in anything other than Ruby, Swift, and Objective-C. If you care to leave a comment with pointers, I&rsquo;m all ears. I do a lot of string manipulation in Ruby. One of the things that always gets me is that the method returns groups but only matches the first instance. To match all instances for enumeration, you have to use . But doesn&rsquo;t include groups (i.e. ). So a while back I figured out the solution, and I thought I&rsquo;d share it for any aspiring Ruby scripters. The trick is to map scan results and replace each result with , which includes groups (and named groups) from the last regex that was run. Thus: results in an array of . Then you can iterate through it and use indexes or group names to pull out particular groups of each match. I&rsquo;ve combined this with a few other methods to create a general string handling routine that I use regularly. That&rsquo;s a silly example, but hopefully you can see the utility of turning a regular expression into an array of hashes containing the individual values of each match extracted by scanning the string",
		"keywords": ["match","regexp","python","running","seriously","swift","above","array","aspiring","available","because","comment","containing","create","curious","doesn","enumeration","example","expression","extracted","figured","first","general","gotten","group","groups","handling","hashes","hopefully","includes","indexes","individual","instance","interest","iterate","languages","leave","manipulation","match","matches","method","methods","named","names","particular","people","pointers","regex","regular","regularly","replace","results","returns","routine","rsquo","scanning","scripters","scripts","share","silly","solution","string","thought","through","trick","turning","using","utility","values","while","writing"]
	},{
		"title": "The SpamSieve giveaway winners!",
		"url": "/2023/12/15/the-spamsieve-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Dec 15<span>th</span>, 2023",
		"ts": "1702664640",
		"summary": "The SpamSieve giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but SpamSieve is still worth checking out. If you&rsquo;re tired of spam, it&rsquo;s a purchase you won&rsquo;t regret. You can still save 20% on your purchase with the code at the C-Command store. Next up is Kaleidoscope . Check back every Monday through September, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["email","spamsieve","bartender","check","coakley","command","congratulations","curio","daniel","garrett","kaleidoscope","keyboard","maestro","mastodon","monday","omnifocus","spamsieve","tamer","twitter","announce","checking","details","email","ended","giveaway","giveaways","notifications","received","regret","rsquo","series","sorry","store","suggest","through","tired","upcoming","winners","worth"]
	},{
		"title": "Save yourself from unwanted emails with TextExpander [Sponsor]",
		"url": "/2023/12/14/save-yourself-from-unwanted-emails-with-textexpander-sponsor/",
		"tags": ["email","scripting","snippet","sponsor","support","textexpander","webdesign"],
		"date": "Dec 14<span>th</span>, 2023",
		"ts": "1702562400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! This tip is pretty ingenious, if I do say so myself. You might know all the ways that TextExpander can save you time, but did you also know that TextExpander can save you from unwanted emails? Gmail and many other email providers support something called “plus addressing.” Let’s say your email address is “pixel@gmail.com”. You sign up for a mailing list, but you’re leery that it could lead to a flood of spam. You can add a “+” and a string of characters between the username and @ like so: “pixel+marketing@gmail.com”. You don’t have to set them up in your email account&mdash;you can make these receive-only addresses up on the spot. Later, you start getting emails addressed to “pixel+marketing@gmail.com” that you never signed up for. You try to unsubscribe to them, but they keep coming. So you can then go into your email settings and create a filter for every email addressed to “pixel+marketing@gmail.com.” You can send them to the trash, your spam folder, or another email folder. TextExpander can automate the creation of these plus addresses thanks to its built-in scripting capabilities. TextExpander supports three types of scripting: AppleScript, bash, and JavaScript. However, AppleScript and bash are only supported on our Mac client, while JavaScript Snippets work on Chrome, Mac, and Windows, as well as our Android and iOS beta apps. (Tip: Know AppleScript or bash, but aren’t comfortable with JavaScript? Ask ChatGPT to convert the script to JavaScript. Be sure to specify that it’s for a TextExpander Snippet!) Here’s the code. You can also subscribe to our Public Group to snag a copy. Check out our blog post for more details: Copy the JavaScript code above. Create a new Snippet in TextExpander. Set the Content Type to JavaScript. Paste the above code into the content field. Edit the email variable to reflect your email address. Give it an easy-to-remember abbreviation like em.random. Try TextExpander free for 30 days. Check out TextExpander today and get 20% off using the code ",
		"keywords": ["alias","email","javascript","snippet","android","applescript","brettterpstra","chatgpt","check","chrome","concatenate","content","create","gmail","group","however","javascript","later","paste","public","return","smarter","snippet","snippets","terpstra","textexpander","thanks","video","vimeo","windows","abbreviation","above","account","address","addressed","addresses","addressing","another","automate","between","bottom","brettterpstra","built","called","capabilities","characters","class","client","comfortable","coming","communicatesmarter","container","content","convert","create","creation","details","email","emails","field","figure","filter","flood","floor","folder","function","generaterandomemail","generator","getting","gmail","graphics","group","height","highlight","highlighter","https","image","ingenious","javascript","language","leery","loading","mailing","marketing","mdash","media","myself","nofollow","noscript","original","output","padding","picture","pixel","plaintext","player","providers","random","randomnum","receive","reflect","remember","return","rouge","script","scripting","settings","signed","snippets","source","specify","sponsoring","srcset","string","style","subscribe","support","supported","supports","terpstra","textexpander","thanks","title","today","trash","types","unsubscribe","unwanted","uploads","username","using","variable","video","videoid","vimeo","while","width"]
	},{
		"title": "Web Excursions for December 11, 2023",
		"url": "/2023/12/11/web-excursions-for-december-11-2023/",
		"tags": ["bookmarks","tagging"],
		"date": "Dec 11<span>th</span>, 2023",
		"ts": "1702327620",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Do You Use It? Finder Tags See Focused Use I haven&rsquo;t written about tagging for a long time because I felt like, at this point, I&rsquo;ve convinced everyone who could be convinced about their usefulness. That still appears to be true, but this TidBits article talks a little bit more about the ways people use Finder tags. DAK and the Golden Age of Gadget Catalogs Oh my god, I loved these catalogs and this tribute from Cabel is an amazing read and a well-deserved homage. CleanCocoa/OpenAny: macOS app and file launching springboard Create a link to open any file directly in any app. Some interesting automation possibilities. From the developer behind TableFlip. Finalist You probably know I&rsquo;m an OmniFocus guy, but I&rsquo;m always trying the latest in todo apps. This one bills itself as \"a todo app for people who hate todo apps,\" and it looks pretty great for exactly those people. \"Works just like Notes, with smarts of a calendar.\" WriteMapper — Content writing tool that uses AI and mind maps. You know I love me some mind maps, especially for content development, and I&rsquo;m fascinated by the possibilities of generative AI, and along comes a tool that uses both. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["generative","brett","cabel","catalogs","check","cleancocoa","content","create","finalist","finder","focused","gadget","golden","mindmeister","notes","omnifocus","openany","tableflip","tidbits","works","writemapper","amazing","appears","article","automation","because","behind","bills","boosting","brainstorming","brettterpstra","brought","cabel","calendar","catalogs","class","collaborating","collaborative","comes","content","convinced","deserved","developer","development","directly","especially","everyone","excursions","fascinated","finalist","finder","focused","gadget","generative","github","golden","great","haven","height","holding","homage","https","image","interesting","itself","latest","launching","ldquo","little","loading","looks","loved","macos","mapping","media","mindmeister","noscript","original","partnership","people","picture","point","possibilities","productivity","rdquo","rsquo","smarts","software","source","springboard","srcset","tagging","talks","tidbits","title","tribute","trying","uploads","usefulness","width","works","writemapper","writing","written"]
	},{
		"title": "SpamSieve giveaway!",
		"url": "/2023/12/11/spamsieve-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Dec 11<span>th</span>, 2023",
		"ts": "1702303200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 licenses ($39.99 value each) for SpamSieve. SpamSieve provides powerful spam filtering for any email setup. It learns and adapts to your mail, so it&rsquo;s able to block nearly all spam. Use it instead of or in addition to your current junk mail filtering. SpamSieve gives you back your inbox, using powerful Bayesian spam filtering to provide amazing accuracy that’s constantly improving. Works with IMAP, Exchange, and POP mail accounts. Sign up below to enter. Winners will be randomly drawn on Friday, December 15, at 12pm Central. The drawing is for 2 licenses ($39.99 value each) for SpamSieve, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through August, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["email","spamsieve","bayesian","brettterpstra","central","check","entries","exchange","friday","giveaway","giveaways","mastodon","robot","sorry","spamsieve","upcoming","winners","works","accounts","accuracy","adapts","amazing","among","appreciated","below","beyond","block","blockquote","brettterpstra","class","codes","command","constantly","contact","cooperation","developer","drawing","easydns","email","ended","enter","excited","featured","filtering","first","generating","giveaway","giveaways","gives","height","https","image","improving","inbox","learns","license","licenses","loading","mailing","maybe","media","names","nearly","nojack","noscript","offer","original","picture","powerful","provides","randomly","reading","robot","rsquo","screenshot","series","setup","signups","skipped","sorry","source","spamsieve","srcset","strong","subscribe","through","title","ttscoff","tuned","upcoming","uploads","using","value","vendors","visit","width","winner"]
	},{
		"title": "Brett's Favorites 2023 Part II",
		"url": "/2023/12/09/bretts-favorites-2023-part-ii/",
		"tags": ["appreview","audiobook","books","cooking","macos","reading","solutions"],
		"date": "Dec 9<span>th</span>, 2023",
		"ts": "1702156680",
		"summary": "I decided to make a \"Brett&rsquo;s Favorites 2023\" part 2. I missed a few things in the first list. This will be a shorter post, but should cover some gaps I left in the first one. Timing I use Timing every day for keeping track of how I spend my time on my computer (and my iPhone). When I start a new project, at the end of the day I open up the main window and add rules by dragging and dropping relevant files and keywords, so time spend on that project is automatically tracked moving forward. I even made an importer for Doing that combines my time tracking with my file. Noteplan I got back into Noteplan in the latter half of 2023. I love the idea of combining my notes and brainstorming with scheduling, todos, and time blocking. All using Markdown. It&rsquo;s a beautiful idea and superbly executed. I read a ton in 2023, mostly via audiobooks. So \"read\" might be a stretch, but I do love audiobooks. I won&rsquo;t list everything I&rsquo;ve read here, but a couple of standouts: Flux by Jeremy Robinson I read so many books from Jeremy Robinson this year. He weaves excellent sci-fi stories. Also check out Infinite. The twists are insidiously satisfying. In the lives of Puppets by TJ Klune There&rsquo;s a space for queer Sci-Fi, and TJ Klune does an amazing job of occupying it. This book takes the idea of a future dominated by robots and few (one?) remaining human and makes it a truly heartwarming journey. Thanks to Jesse Darst for cluing me into this one. No Bad Parts by Richard C. Schwartz I&rsquo;ve been doing a lot of therapy this year and only recently discovered Internal Family Systems, which has been a game changer. I won&rsquo;t explain the psychology of it here, but if you want to learn more about the parts of you that might prevent you from being your true self, definitely check this out. I bought the e-book version for my Kindle, but also bought the audiobook version for its guided meditations. What My Bones Know: A Memoir of Healing from Complex Trauma This was the year I realized I had Complex PTSD, and I did a lot of reading around it. This one serves more as a memoir than a treatment plan, so take it along with some actual therapy. A lot of hope here, though. Overtired The Mental Health Corner on Overtired means a lot to me. I get to share my journey through CPTSD, ADHD, and Bipolar, as well as hear from people who go through very similar things to me. It&rsquo;s kind of its own version of therapy (though it can&&hellip;",
		"keywords": ["cookware","elgato","amazon","automatic","bipolar","bones","brett","brett&#39;s","brettterpstra","cptsd","carbon","chinese","christina","christmas","cleaner","complex","controller","cookbook","cooking","cordless","corner","customizable","darst","decks","definitely","diamond","doing","dyson","elgato","family","favorites","fiction","garaic","hardware","healing","health","healthy","homekit","infinite","insteon","internal","jeremy","jesse","kindle","kitchen","klune","knife","lightweight","little","markdown","memoir","mental","minoston","misen","missed","mjohq","nakiri","noteplan","outlet","overtired","parts","pedal","production","puppets","restoring","richard","robinson","rolling","schwartz","sharpener","smart","socket","steel","stream","streaming","street","systems","thanks","therapuetic","timing","timingimport","tineco","tracker","trauma","truly","tumbler","twitch","vacuum","vegan","wholeness","wicked","yeungmancooking","yeung","youtube","admit","aluminum","amazing","amazon","appreciate","aspiring","audiobook","audiobooks","author","automatically","automating","automation","available","awful","backlink","banner","beautiful","because","becoming","before","between","blade","blocking","books","bought","brainstorming","breaking","bretts","brettsfavorites","bretttercom","brettterpstra","button","buttons","carbon","caring","cause","chain","chainmail","changer","channel","cheaper","check","checking","chemical","class","clean","cluing","coating","collections","combines","combining","computer","control","convenience","cookbook","cooking","cookware","cough","countless","couple","cover","dairy","decided","definitely","delicious","destroy","digital","dipping","discovered","doing","dominated","dragging","dropping","ebook","endnotes","everything","excellent","executed","explain","favorite","favorites","fiction","files","filled","first","fnref","footnote","footnotes","forefinger","found","gluten","going","great","gripping","guided","handle","hardware","headlight","heartwarming","heats","heavy","height","helps","highlighter","https","human","iphone","image"]
	},{
		"title": "The Soulver giveaway winners!",
		"url": "/2023/12/08/the-soulver-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Dec 8<span>th</span>, 2023",
		"ts": "1702062000",
		"summary": "The Soulver giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Soulver is still worth checking out. You can still save 30% off the direct version using the code . It will revolutionize your problem solving. By the way, Soulver is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is SpamSieve . Check back every Monday through August, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["calculator","notepad","soulver","apptamer","bartender","brettterpstra","check","chris","congratulations","curio","focke","giveaway","kaleidoscope","keyboard","khare","maestro","mastodon","metze","monday","quesnel","robot","setapp","soulver","spamsieve","tamer","twitter","vihang","amazing","announce","available","background","brettterpstra","checking","class","command","confetti","contact","curio","details","didnt","direct","download","easydns","email","ended","giveaway","giveaways","height","highlighter","https","hundreds","image","index","kaleidoscope","keyboardmaestro","language","loading","macbartender","media","nojack","noscript","notifications","original","picture","plaintext","problem","received","revolutionize","rouge","rsquo","series","setapp","solving","sorry","soulver","source","spamsieve","srcset","stclairsoft","subscribe","subscription","suggest","through","title","ttscoff","twitter","upcoming","uploads","using","version","width","winners","worth","zengobi"]
	},{
		"title": "Brett's Favorites 2023",
		"url": "/2023/12/08/bretts-favorites-2023/",
		"tags": ["appreview","blogging","browser","developer","email","hazel","hookmark","icons","keyboard","macos","markdown","marked","mastodon","nvultra","omnifocus","productivity","search","searchlink","service","setapp","shortcuts","taskpaper","textexpander","tools"],
		"date": "Dec 8<span>th</span>, 2023",
		"ts": "1702053060",
		"summary": "Welcome to my yearly post about stuff I&rsquo;ve loved in the last year. I love doing this because it reminds me how amazing the Mac/iOS app ecosystem is these days. I can&rsquo;t list every app I use in this post, it would take forever, but I can highlight some of the outstanding ones. I&rsquo;m going to do this all in one epic post this year. It&rsquo;s going to get long. You could always use Gather to convert it to Markdown, and then make use of all of Marked&rsquo;s navigation tools 😇. Apps available on Setapp will be noted. As I mention frequently, Setapp is a great deal at $10/month for 200+ excellent apps. If you&rsquo;re a Setapp user, you should always try to use the Setapp version of your favorite apps to make sure the developer gets a piece of your subscription! If you&rsquo;re not, you should seriously consider signing up. This link gives me a little kickback when you join! The categories are presented with items in no particular order. I could have made them alphabetical, or attempted to rank them, but no, I present you with an unorganized stream of consciousness. Welcome to the inside of my head. I&rsquo;m going to quickly list some repeats that are still favorites here at the top. These are apps I&rsquo;ve used for years and still rely on every day, but I&rsquo;ve talked about them plenty and you&rsquo;ve probably heard about them before. So just a quick list of my perennial favorites. HoudahSpot Setapp Find everything on your Mac, even the stuff that Spotlight misses. iThoughtsX Setapp My favorite mind mapping tool. All the power and flexibility you need without becoming a chore to use. This one is on the giveaway list, so stay tuned for that next year! Curio The ever-evolving brainstorming/project management tool that continues to amaze. Watch for a giveaway coming soon (New Year&rsquo;s Day!). 1Password With the new Passkey and Authenticator possibilities in 1Password, it&rsquo;s a no-brainer for me. I&rsquo;ve trusted it for years and it&rsquo;s never let me down. BetterTouchTool Setapp I talk about BetterTouchTool all the time. Maybe too much. But it&rsquo;s the most amazing automation tool I&rsquo;ve found. Second place for me is Keyboard Maestro, which just got a new version (v11) in the last few months. MailMate The stalwart email app for Mac that I depend on. Customizable shortcut keys, plugin architecture, Markdown capabilities&hellip; I&rsquo;ve never found anything close. Choosy Choosy is long&hellip;",
		"keywords": ["setapp","store","acorn","action","actions","affinity","amoeba","apple","aptonic","artifact","audio","authenticator","awesome","bartender","bettertouchtool","brainstorming","brett&#39;s","brettterpstra","built","bunch","cable","check","choosy","cleanshot","clipboard","command","comparison","connect","curio","curiosity","customizable","default","defaultfolderx","descript","devutils","developers","devices","download","dropzone","duckduckgo","editor","email","extensions","fantastical","faster","favorites","featured","finity","flying","folder","gather","github","google","great","grindstone","hacking","handy","hardware","hazel","honorable","hookmark","hopefully","houdahspot","inbox","infinite","ivory","javascript","kaleidoscope","keyboard","komplete","lidar","linder","links","loopback","macupdater","macros","maestro","mailmate","makes","management","manager","mapping","markdown","marked","mastodon","maybe","merge","multi","multimarkdown","night","omnifocus","ordered","paddle","paletro","palette","passkey","password","personal","photo","photoshop","pinboard","popclip","powerful","preview","projects","quick","readme","rabbi","reliable","replacement","retrobatch","retrobatch","riser","rogue","routing","sanebox","scanner","screen","screens","search","searchlink","searchable","second","service","services","setapp","sharing","shift","shortcut","simple","simply","sindre","smart","smarter","software","solid","sonoma","sorhus","spark","spotify","spotlight","structured","stuff","sublime","synology","tailscale","taking","taskpaper","terminal","textbuddy","textexpander","threes","toolbox","tools","tower","transcriptions","tweetbot","twitter","ultimate","useful","versus","video","vision","watch","welcome","windows","works","ability","above","access","accessible","account","accurate","acorn","across","actions","added","adding","affair","affinity","again","allowing","almost","alphabetical","amaze","amazing","annotation","another","anybody","anymore","anywhere","apparently","apple","applications","appmakes","approach","aptonic","architecture","artifact","attempted","attribute","audio"]
	},{
		"title": "Backblaze makes it astonishingly easy to store, use, and protect data [Sponsor]",
		"url": "/2023/12/07/backblaze-makes-it-astonishingly-easy-to-store-use-and-protect-data-sponsor/",
		"tags": ["backup","security","sponsor"],
		"date": "Dec 7<span>th</span>, 2023",
		"ts": "1701960540",
		"summary": "Thanks to Backblaze for sponsoring BrettTerpstra.com this week! I&rsquo;ve been a user for years and it&rsquo;s saved my hide many times. It&rsquo;s so easy to set up, and just as importantly, easy to restore files whenever needed. Everybody should have a good cloud backup, and Backblaze is the best I&rsquo;ve found. With Backblaze, you can back up documents, photos, music, movies, and more to the cloud. Available for both Macs and PCs, it’s easy and automatic&mdash;all you have to do is create an account and your files will start backing up. You can even back up external drives! Backblaze has over three exabytes of data under storage and has restored 55+ billion files for customers. In the event of hardware failure, accidents, or ransomware, Backblaze offers multiple restore options&mdash;you can access your data from anywhere in the world with our web and mobile apps for iOS and Android. You can download files from the web or receive a USB hard drive with all your data shipped to your door. If you return the hard drive within 30 days, you get a full refund! Protect business data and manage backups for your organization through a centrally-managed admin. Deploying Backblaze on thousands of workstations across your organization is easy! We offer 30 days of Version History by default and one-year file retention for free so you don’t have to worry about accidentally deleting your data or keeping old file versions. For extra protection, you can upgrade to Forever Version History for just $0.006/GB per month. Backblaze takes security seriously. All data is stored in our secure data centers with 24-hour staff, biometric security, and redundant power. Here are a few of our security measures: You can use a private encryption key for additional security, ensuring only this key can unlock your backup. Files are encrypted before being transmitted over SSL and stored encrypted. Backblaze’s code is native to Mac and PC and doesn’t use Java. Two-factor verification via ToTP and SMS is available for all Backblaze accounts. Backblaze is recommended by The New York Times, Inc. Magazine, MacWorld, PCWorld, Lifewire, Wired, Tom’s Guide, 9to5Mac, and more. Recently listed on the NASDAQ Stock Exchange under BLZE, Backblaze is committed more than ever to bringing easy and affordable data storage that you can trust. Backblaze Computer Backup starts at $9/month. You can save $9 annually by signing up for an annual license, or save $27 when you sign up&hellip;",
		"keywords": ["backblaze","backup","drive","hosting","remote","service","android","available","backblaze","backup","banner","brettterpstra","computer","deploying","everybody","exchange","files","forever","guide","history","lifewire","macworld","magazine","nasdaq","pcworld","protect","recently","stock","thanks","times","version","wired","access","accidentally","accidents","account","accounts","across","admin","affordable","annual","annually","anywhere","automatic","available","backblaze","backing","backup","backups","before","billion","biometric","blackblaze","brettterpstra","bringing","business","businesses","centers","centrally","class","cloud","committed","create","credit","customers","default","deleting","documents","doesn","download","drive","drives","encrypted","encryption","ensuring","exabytes","external","extra","files","found","going","hardware","height","https","image","importantly","individuals","keeping","license","listed","loading","managed","mdash","measures","media","mobile","movies","multiple","music","native","needed","nofollow","noscript","offer","offers","options","organization","original","photos","picture","private","protection","ransomware","receive","recommended","redundant","refund","required","restore","restored","retention","return","rsquo","saved","secure","security","seriously","shipped","signing","source","sponsoring","srcset","staff","started","starts","storage","stored","takes","terpstra","thousands","through","times","title","transmitted","trial","under","unlimited","unlock","upgrade","uploads","verification","versions","whenever","width","within","workstations","world","worry","years"]
	},{
		"title": "mdless with document transclusion",
		"url": "/2023/12/06/mdless-with-document-transclusion/",
		"tags": ["markdown","mdless","multimarkdown"],
		"date": "Dec 6<span>th</span>, 2023",
		"ts": "1701892260",
		"summary": "The latest version of mdless, my most recent coding obsession, now includes MultiMarkdown document transclusion. The path is relative to the current document, which won&rsquo;t work if you&rsquo;re piping text to mdless. In that case it would need to be an absolute path, or have specified in the metadata. To provide a base for transclusion paths, just add to your document&rsquo;s metadata, either as MultiMarkdown metadata, or as a YAML header: It&rsquo;s probably not a super useful feature to 90% of mdless users, but should be handy for some",
		"keywords": ["markdown","multimarkdown","ability","absolute","another","between","brackets","coding","contents","curly","document","either","feature","handy","header","includes","inserting","inside","latest","mdless","metadata","obsession","pairs","paths","piping","processed","recent","relative","rsquo","super","transclusion","useful","users","version"]
	},{
		"title": "The SaneBox giveaway winners!",
		"url": "/2023/12/05/the-sanebox-giveaway-winners/",
		"tags": ["sponsor"],
		"date": "Dec 5<span>th</span>, 2023",
		"ts": "1701799860",
		"summary": "Well, the SaneBox drawing has happened I have winners to announce! The following readers have won a 1-year subscription to the handiest email service out there! Congrats to the winners! If you didn&rsquo;t win, I&rsquo;d still recommend checking out SaneBox. Use this link to save $25 on your subscription. It will bring a sanity to your email that you&rsquo;ve only imagined was possible. Don&rsquo;t forget to sign up for the Soulver giveaway that&rsquo;s happening Friday",
		"keywords": ["email","sanebox","andreas","congrats","esteban","friday","jamie","johnson","krausz","lauritzen","peloquin","sanebox","soulver","umerez","announce","brettterpstra","bring","checking","drawing","email","forget","giveaway","handiest","happened","happening","https","imagined","possible","readers","recommend","rsquo","sanebox","sanity","service","soulver","subscription","winners"]
	},{
		"title": "Soulver giveaway!",
		"url": "/2023/12/04/soulver-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Dec 4<span>th</span>, 2023",
		"ts": "1701698400",
		"summary": "I&rsquo;m excited to offer the next giveaway, 4 licenses ($34.95 value each) for Soulver. Ever wish you could type out a math problem in words and have the answers handed to you? Soulver combines a notepad with a calculator and gives you instant answers. Soulver is a smart replacement for your calculator app. Use it to work things out, explore different scenarios and play around with numbers. You can use words alongside numbers and almost never encounter an error. And all your work is automatically saved for you so you can reference it later. Sign up below to enter. Winners will be randomly drawn on Friday, December 08, at 12pm Central. The drawing is for 4 licenses ($34.95 value each) for Soulver, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through August, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["calculator","notepad","soulver","central","check","entries","friday","mastodon","sorry","soulver","winners","almost","alongside","among","answers","appreciated","automatically","below","beyond","brettterpstra","calculator","codes","combines","cooperation","developer","different","drawing","ended","enter","error","excited","explore","featured","first","generating","giveaway","giveaways","gives","handed","instant","later","license","licenses","mailing","maybe","names","notepad","numbers","offer","problem","randomly","reading","replacement","robot","rsquo","saved","scenarios","series","signups","skipped","smart","through","tuned","value","vendors","visit","winner","words"]
	},{
		"title": "The Tower giveaway winners!",
		"url": "/2023/12/01/the-tower-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Dec 1<span>st</span>, 2023",
		"ts": "1701454500",
		"summary": "The Tower giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Tower is still worth checking out. If you use Git for anything, Tower can make your life easier. Until Dec 5th you can get 50% off for new users on any plan. Just visit git-tower.com to purchase. Next up is Soulver . Check back every Monday through August, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["tower","check","congratulations","curio","gavin","jerman","kaleidoscope","keyboard","maestro","mastodon","monday","soulver","spamsieve","suzuki","tamer","tower","twitter","announce","checking","details","easier","email","ended","giveaway","giveaways","notifications","received","rsquo","series","sorry","suggest","through","tower","upcoming","users","visit","winners","worth"]
	},{
		"title": "mdless gets all the colors",
		"url": "/2023/11/30/mdless-gets-all-the-colors/",
		"tags": ["markdown","mdless","productivity","taskpaper","terminal","themes"],
		"date": "Nov 30<span>th</span>, 2023",
		"ts": "1701362820",
		"summary": "I just pushed v2.1.6 of mdless. Once all these 2.0 changes are confirmed to be stable, I&rsquo;ll let this project go for a while, but right now there&rsquo;s lots to improve on and I&rsquo;m enjoying it as a way to blow off steam. The biggest change in 2.1.6 is the ability to use hex codes when theming. If you didn&rsquo;t know, the first time is run, it saves a theme file to . You can edit this file to change what colors different elements display as. You can also create additional files and trigger them with , or set the setting in your . With the latest version, you can use 3 or 6-digit RGB codes in addition to color names. Where previously you were limited to the default ANSI colors like red, blue, magenta, cyan, etc., you can now insert something like where a color name would usually go. You can affect background colors by prefixing with or , e.g. . The depth of color that can be displayed depends on your terminal, but at minimum this opens up 256 colors for theming, a 32x increase in options. I also fixed a couple of issues where span elements in list items would cause the coloration to change. And when there&rsquo;s a space between list items, they get rendered as paragraphs within list items (standard for most Markdown parsers), causing the coloring to be unexpectedly the same as regular paragraphs. Now strips out regular paragraph coloring on paragraphs contained in list items, so every paragraph within a list gets the list item coloring. In TaskPaper rendering, documents will now respond to to list projects, and to list just certain project(s) contents. These no longer have to be numeric (for Markdown or TaskPaper); fuzzy text matching can pick a section (or multiple sections) for you. I also improved the TaskPaper auto-detection by adding a routine that removes all lines that match project or task regular expressions, and if there&rsquo;s nothing left, it assumes it&rsquo;s a TaskPaper document. Let me know how this works in the real world. Lastly, I added a flag that will display the changelog (using mdless for readability), so when you update you can see what changed just by running ",
		"keywords": ["coloring","comment","element","paragraph","theme","check","lastly","markdown","taskpaper","where","ability","added","adding","assumes","background","between","biggest","cause","causing","certain","change","changed","changelog","changes","codes","color","coloration","coloring","colors","confirmed","contained","contents","couple","create","default","depends","depth","details","detection","different","digit","display","displayed","document","documents","elements","enjoying","expressions","files","first","fixed","fuzzy","improve","improved","increase","issues","items","latest","limited","longer","magenta","match","matching","mdless","multiple","names","nothing","numeric","opens","options","paragraph","paragraphs","parsers","prefixing","previously","project","projects","pushed","readability","regular","removes","rendered","rendering","respond","right","routine","rsquo","running","saves","section","sections","setting","space","stable","standard","steam","strips","terminal","theme","theming","trigger","unexpectedly","using","usually","version","where","while","within","works","world"]
	},{
		"title": "SaneBox giveaway surprise!",
		"url": "/2023/11/30/sanebox-giveaway-surprise/",
		"tags": ["email","sponsor"],
		"date": "Nov 30<span>th</span>, 2023",
		"ts": "1701352800",
		"summary": "Thanks to SaneBox for sponsoring BrettTerpstra.com this week! Instead of a monthly sponsored post this month, the good folks at SaneBox have decided to join my giveaway series and offer 5 free 1-year subscriptions to SaneBox to BrettTerpstra.com readers. Just sign up below for a chance to win. If you somehow haven&rsquo;t heard of SaneBox yet, it&rsquo;s a service that keeps your email inbox clean. You can train certain types of emails to go to your @SaneLater folder, or any custom folder, just by moving an email once. Future emails like it will automatically go to that folder. Forget setting up complicated filters and rules, a week of training and you&rsquo;ll have a clean inbox that contains only the messages you actually need to see. I especially love the @SaneBlackHole feature which lets me banish certain senders to a, well, black hole, where their messages disappear and I don&rsquo;t have to go through any hassle of unsubscribing or requesting data removal to stop the incoming messages. Sign up below for a chance at one of 5 1-year subscriptions, a $299 value. Winners will be drawn next Wednesday, December 6th. Sorry, this giveaway has ended",
		"keywords": ["apple","email","brettterpstra","forget","saneblackhole","sanebox","sanelater","sorry","thanks","wednesday","winners","automatically","banish","below","black","certain","chance","clean","complicated","contains","custom","decided","disappear","email","emails","ended","especially","feature","filters","folder","folks","giveaway","hassle","haven","heard","inbox","incoming","keeps","messages","monthly","moving","offer","readers","removal","requesting","rsquo","rules","senders","series","service","setting","somehow","sponsored","sponsoring","subscriptions","through","train","training","types","unsubscribing","value","where"]
	},{
		"title": "Tower giveaway!",
		"url": "/2023/11/27/tower-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Nov 27<span>th</span>, 2023",
		"ts": "1701093600",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 1-year licenses ($99 value each) for Tower. Tower is the absolute best Git GUI out there. If you use Git for work or personal projects, its in-depth integration with the entire Git toolset makes life easier, even if you&rsquo;re already well-versed in the command line. It includes great GitHub integration for pull requests and issues. All of Git&rsquo;s Power (And None of the Pain). Pull Requests, Single-line staging, Interactive Rebase, Submodules, Git LFS, Git-Flow, File History, Blame, Cherry-Pick. Sign up below to enter. Winners will be randomly drawn on Friday, December 01, at 12pm Central. The drawing is for 2 1-year licenses ($99 value each) for Tower, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through August, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["tower","blame","central","check","cherry","entries","friday","github","history","interactive","mastodon","rebase","requests","single","sorry","submodules","tower","winners","absolute","among","appreciated","below","beyond","brettterpstra","codes","command","cooperation","depth","developer","drawing","easier","ended","enter","entire","excited","featured","first","generating","giveaway","giveaways","great","includes","integration","issues","license","licenses","mailing","makes","maybe","names","offer","personal","projects","randomly","reading","requests","robot","rsquo","series","signups","skipped","staging","through","toolset","tuned","value","vendors","versed","visit","winner"]
	},{
		"title": "mdless updates for Thanksgiving weekend",
		"url": "/2023/11/26/mdless-updates-for-thanksgiving-weekend/",
		"tags": ["markdown","mdless","productivity","taskpaper"],
		"date": "Nov 26<span>th</span>, 2023",
		"ts": "1701026640",
		"summary": "I made a few major updates to mdless 2.0 (first announced a couple days ago) over the holiday weekend. Note that you can make all of the new options permanent in the config file (see Easily Update Config). Options specified on the command line will always override anything in the config file, so you can disable options permanently but enable them on a per-run basis using command line flags. The first problem I ran into was that if a link, emphasis, or other inline element came in the middle of a line, everything after that element would fail to be styled. So I added in a routine that I created for Doing that can take the text preceding an element and determine what the escape sequence would be at the end of that text, right before the new element. Then I can restore that sequence after the new element. Second, and this was a real pain, nested lists weren&rsquo;t working. Like at all. I didn&rsquo;t notice it at first because my test files had very basic lists in them, but lists were being flattened, ordered list sequencing was completely out of whack, and nested paragraphs and code blocks within lists were getting totally borked. Fixing this was a pain. Redcarpet only provides \"text\" and \"type\" to the list rendering functions, so you have no idea if it&rsquo;s nested, at what level, etc. You can start a class variable counter and increment it with each ordered item, but as soon as it nests or starts a new list, you&rsquo;re in trouble, and lists aren&rsquo;t rendered in sequence anyway, so an array structure to keep track of them is impossible. They&rsquo;re rendered inside out, so any kind of basic counter will be off as soon as you have a nested ordered list. Fixing this took me three days, and I went through a dozen solutions before one worked. I think the current solution is pretty solid, seems to handle all of the aforementioned issues and maintain accurate numbering with multiple nested, ordered lists. Also indents paragraphs and code blocks within lists. I am running into an issue where a numbered item can sometimes have an unnecessary line break after it. I haven&rsquo;t yet been able to track down where that&rsquo;s coming from. Also, nested code blocks are indented, but one less indent than their parent list item. These will be fixed in future releases. I also added TaskPaper highlighting to mdless. You can run it with to force TaskPaper highlighting, or run it with to detect TaskPaper formatting either from the file extension or test&hellip;",
		"keywords": ["element","check","config","disabling","doing","easily","emphasis","fixing","formatting","image","inline","links","lists","markdown","markers","nested","options","redcarpet","rendering","scrub","second","stuff","styling","taskpaper","accurate","added","adding","aforementioned","again","announced","announcement","anyway","applying","array","automatically","available","based","basic","basis","because","before","behavior","below","between","blocks","borked","brackets","break","breaks","cause","chafa","character","characters","class","colored","colors","coming","command","completely","config","configurable","content","couple","created","default","deleting","details","detect","disable","display","displayed","document","doesn","dozen","either","elegant","element","embedded","emphasis","empty","enabled","escape","everything","exist","expressions","extension","figure","filenames","files","first","fixed","flags","flattened","force","formatting","found","functions","getting","grouping","handle","haven","headers","headline","highlighted","highlighting","holiday","image","implemented","impossible","improved","increment","indent","indentation","indented","indents","initial","inline","inside","installation","intersects","intra","invalid","issues","italics","leave","leaving","level","links","listing","lists","maintain","major","markers","mdless","mentioned","middle","multiple","names","nested","nests","newlines","numbered","numbering","numbers","options","ordered","overridden","override","overwrite","paragraph","paragraphs","parent","permanent","permanently","preceding","preferences","problem","processing","project","projects","properly","provides","references","refers","regexes","regular","release","releases","remove","rendered","rendering","requiring","restore","results","right","routine","rsquo","running","scrap","seems","sequence","sequencing","setting","settings","simple","since","solid","solution","solutions","sometimes","spacing","starts","structure","styled","surrounding","tasks","testing","theme","think","through","toggled"]
	},{
		"title": "The Default Folder X giveaway winners!",
		"url": "/2023/11/24/the-default-folder-x-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Nov 24<span>th</span>, 2023",
		"ts": "1700852400",
		"summary": "The Default Folder X giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Default Folder X is still worth checking out. Trust me, you need this. You might not realize how limited your standard open and save dialogs are until you&rsquo;ve experienced Default Folder X. You can still save 20% by using the coupon at checkout. By the way, Default Folder X is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Tower . Check back every Monday through August, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["dialog","productivity","alexander","allori","check","congratulations","curio","default","folder","kaleidoscope","mastodon","michael","monday","setapp","soulver","spamsieve","tamer","tower","twitter","amazing","announce","available","checking","checkout","coupon","details","dialogs","email","ended","experienced","giveaway","giveaways","hundreds","limited","notifications","realize","received","rsquo","series","sorry","standard","subscription","suggest","through","upcoming","using","winners","worth"]
	},{
		"title": "mdless 2.0",
		"url": "/2023/11/23/mdless-2-dot-0/",
		"tags": ["markdown","mdless"],
		"date": "Nov 23<span>rd</span>, 2023",
		"ts": "1700752740",
		"summary": "I&rsquo;ve updated to 2.0. Well, 2.0.5 at this point. It&rsquo;s a complete overhaul of the command line Markdown parser/viewer. It&rsquo;s been a pretty popular project, and is being used on all kinds of OSs, but it got frustrating as the whole thing was based on regular expressions for parsing and users expected it to handle some more complex markup than it could. So for the reboot, I switched to using RedCarpet for parsing, then added my own terminal handling to that via a custom renderer and pre/post processing. Table cleanup is better than ever. Footnotes can still be displayed directly after the paragraph that references them, or at the end of the display. Code highlighting (with Pygments) is more accurate than ever. Ordered lists are properly numbered, regardless of the numbering in the Markdown. There are a few differences in the way things like code blocks nested in lists are displayed (they&rsquo;re no longer indented), but overall it&rsquo;s a big step up. If you&rsquo;re into Markdown and spend time in the Terminal, let display those README files for you, rather than opening up a dedicated viewer or editor with a preview. See the project page for more details and installation instructions. Update: Just pushed a new version that allows for links to be output in reference format () or as per-paragraph references (). Inline links is the default (). This setting can be made permanent by editing ",
		"keywords": ["element","github","language","markup","parsing","footnotes","inline","markdown","ordered","pygments","readme","redcarpet","table","terminal","accurate","added","allows","based","blocks","cleanup","command","complex","custom","dedicated","default","details","differences","directly","display","displayed","editing","editor","expected","expressions","files","format","frustrating","handle","handling","highlighting","indented","installation","instructions","kinds","links","lists","longer","markup","nested","numbered","numbering","opening","output","overall","overhaul","paragraph","parser","parsing","permanent","point","popular","preview","processing","project","properly","pushed","rather","reboot","references","regardless","regular","renderer","rsquo","setting","spend","switched","terminal","updated","users","using","version","viewer","whole"]
	},{
		"title": "Default Folder X giveaway!",
		"url": "/2023/11/20/default-folder-x-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Nov 20<span>th</span>, 2023",
		"ts": "1700488800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 2 licenses ($39.95 value each) for Default Folder X. Default Folder X is an amazing extension for your open and save dialogs on macOS. It makes navigating folders easier, tagging better, and implements flexible favorites and allows specific default folders for every app. You can set up favorite folders, accessible with keyboard shortcuts, have every app track it&rsquo;s most recent save-to folder, and much more. Make your Open and Save dialogs work as quickly as you do. Track recently used files and folders in every app, reopen recently closed Finder windows, Copy and Move files in file dialogs. Sign up below to enter. Winners will be randomly drawn on Friday, November 24, at 12pm Central. The drawing is for 2 licenses ($39.95 value each) for Default Folder X, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through August, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["dialog","productivity","central","check","default","entries","finder","folder","friday","mastodon","sorry","track","winners","accessible","allows","amazing","among","appreciated","below","beyond","brettterpstra","closed","codes","cooperation","default","developer","dialogs","drawing","easier","ended","enter","excited","extension","favorite","favorites","featured","files","first","flexible","folder","folders","generating","giveaway","giveaways","implements","keyboard","license","licenses","macos","mailing","makes","maybe","names","navigating","offer","quickly","randomly","reading","recent","recently","reopen","robot","rsquo","series","shortcuts","signups","skipped","specific","tagging","through","track","tuned","value","vendors","visit","windows","winner"]
	},{
		"title": "The Noteplan giveaway winners!",
		"url": "/2023/11/17/the-noteplan-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Nov 17<span>th</span>, 2023",
		"ts": "1700247600",
		"summary": "The Noteplan giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Noteplan is still worth checking out. If you like portable solutions for managing notes, todos, and projects, you can&rsquo;t beat Noteplan. By the way, Noteplan is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Default Folder X . Check back every Monday through August, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["calendar","markdown","noteplan","productivity","ballentine","brandon","carley","check","congratulations","david","default","folder","kaleidoscope","knight","mastodon","monday","noteplan","paolo","setapp","soulver","spamsieve","sturbini","tamer","tower","twitter","wessel","amazing","announce","available","checking","details","email","ended","giveaway","giveaways","hundreds","managing","notes","notifications","portable","projects","received","rsquo","series","solutions","sorry","subscription","suggest","through","todos","upcoming","winners","worth"]
	},{
		"title": "Kaleidoscope 4.3: Improved Git Merge Context and Git File History [Sponsor]",
		"url": "/2023/11/16/kaleidoscope-4-dot-3-improved-git-merge-context-and-git-file-history-sponsor/",
		"tags": ["sponsor"],
		"date": "Nov 16<span>th</span>, 2023",
		"ts": "1700143200",
		"summary": "Thanks to Kaleidoscope for sponsoring BrettTerpstra.com this week! This app just keeps getting better. If you have any need for comparing files (especially if you code and do Git merges), it can&rsquo;t be beat. Review versions of text and image files—and even folders full of files—with the world’s most powerful file comparison app. Kaleidoscope gives you powerful tools to use at each stage of the development cycle. The brand new Kaleidoscope 4.3 continues to innovate by improving the previously introduced Git Merge Context Shelf and Git File History. Kaleidoscope now also detects file renames and shows branch names. When used with a service such as GitHub, GitLab or Bitbucket, Kaleidoscope now supports jumping to commits, branches, and tickets referenced in commit messages. And it beautifully renders Markdown content in commit messages, which makes browsing and comparing commits so much nicer. Syntax coloring, with multiple built-in themes. Transform any comparison into a merge document that can be edited inline. Text filters to clean up diffs by removing irrelevant data, such as time stamps, object addresses and unique identifiers. Kaleidoscope Prism, a new helper app in the menu bar to quickly launch comparisons even if Kaleidoscope is not running. Debugger integration for Python developers. File properties show metadata, including size, file type, dates, and encoding. A welcome window that speeds up the processes of creating new comparisons or finding recent ones. Subscriptions start at $8 per month for a yearly plan. Use the coupon code (valid until December 31, 2023) to get 20% off for the first year. As a student or teacher, the price is reduced even further",
		"keywords": ["bitbucket","commit","kaleidoscope","markdown","bitbucket","brettterpstra","context","debugger","github","gitlab","history","kaleidoscope","learn","markdown","merge","prism","python","shelf","subscriptions","syntax","terpstra","thanks","transform","added","addresses","beautifully","branch","branches","brand","brettterpstra","browsing","built","class","clean","coloring","commit","commits","comparing","comparison","comparisons","content","continues","coupon","creating","cycle","dates","detects","developers","development","diffs","document","edited","encoding","especially","features","files","filters","finding","first","folders","getting","gives","height","helper","highlighter","https","identifiers","image","improving","including","inline","innovate","integration","introduced","irrelevant","jumping","kaleidoscope","keeps","language","launch","loading","makes","media","merge","merges","messages","metadata","multiple","names","nicer","nofollow","noscript","object","original","picture","plaintext","powerful","previously","price","processes","properties","quickly","recent","reduced","referenced","removing","renames","renders","rouge","rsquo","running","service","shows","source","speeds","sponsoring","srcset","stage","stamps","strong","student","supports","teacher","themes","tickets","title","today","tools","trial","unique","uploads","valid","versions","welcome","width","window","world","yearly"]
	},{
		"title": "Noteplan giveaway!",
		"url": "/2023/11/13/noteplan-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Nov 13<span>th</span>, 2023",
		"ts": "1699884000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 1-year subscriptions ($99 value each) for Noteplan. If you love plain text (and Markdown), you&rsquo;re going to love Noteplan for organizing all your notes and todos. Using plain text, you can create daily logs, digital bullet journals, track todos, and keep cross-linked notes for all your stuff. Also check out the web version coming soon! Use the flexibility of Markdown to quickly create tasks. Add options for repeating to dos, easily move tasks into the future, and add tags and mentions. Speed up your workflow with natural language input and autocompletion of tags, mentions, and links. Sign up below to enter. Winners will be randomly drawn on Friday, November 17, at 12pm Central. The drawing is for 5 1-year subscriptions ($99 value each) for Noteplan, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through August, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["calendar","markdown","noteplan","productivity","central","check","friday","markdown","mastodon","noteplan","sorry","speed","using","winners","among","autocompletion","below","beyond","brettterpstra","bullet","check","coming","create","cross","daily","developer","digital","drawing","easily","ended","enter","excited","featured","first","flexibility","giveaway","giveaways","going","input","journals","language","linked","links","mailing","maybe","mentions","natural","notes","offer","options","organizing","quickly","randomly","reading","repeating","rsquo","series","stuff","subscriptions","tasks","through","todos","track","tuned","value","version","visit","winner","workflow"]
	},{
		"title": "The Hazel giveaway winners!",
		"url": "/2023/11/10/the-hazel-giveaway-winners/",
		"tags": ["giveaway","hazel"],
		"date": "Nov 10<span>th</span>, 2023",
		"ts": "1699641000",
		"summary": "The Hazel giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Hazel is still worth checking out (and I know you&rsquo;re interested because there was a record number of entries for this one). It will revolutionize your file management and has all kinds of possibilities for automation. You can still use the coupon to get 20% off (click here to apply). Next up is Noteplan . Check back every Monday through August, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["automation","changes","hazel","bruno","check","congratulations","default","federico","folder","hazel","martinelli","mastodon","monday","noteplan","soulver","spamsieve","tamer","tensfeldt","tower","twitter","announce","apply","automation","because","checking","click","coupon","details","email","ended","entries","giveaway","giveaways","interested","kinds","management","notifications","possibilities","received","record","revolutionize","rsquo","series","sorry","suggest","through","upcoming","winners","worth"]
	},{
		"title": "Create TextExpander snippets with ChatGPT [Sponsor]",
		"url": "/2023/11/09/create-textexpander-snippets-with-chatgpt-sponsor/",
		"tags": ["chatgpt","snippet","sponsor","textexpander"],
		"date": "Nov 9<span>th</span>, 2023",
		"ts": "1699538400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! Ever wanted to get into scripted snippets but didn&rsquo;t know where to start? Read on. If you’ve read this blog for any length of time, you know about the wonders of TextExpander and how it can save you tremendous amounts of time typing. But did you know that TextExpander lets you create Snippets with JavaScript to automatically generate content with a few keystrokes? For instance, you could have a TextExpander Snippet that expands into a random number or company name. What if you don’t know JavaScript or don’t have the time to code a Snippet? No problem! We’ve recently discovered that ChatGPT can generate these Snippets. For example, you can tell ChatGPT, “Create a TextExpander Snippet that generates a random number between 1 and 20.” ChatGPT not only generates the code, but even gives you instructions on how to create the Snippet. Try it with GPT-4 for the best results. Of course, you need to test the code ChatGPT generates, and you may have to tweak it to get it to work exactly as you want. But still, a pretty cool trick. You don’t have to get this fancy to boost your efficiency with TextExpander. It’s handy for things like company names, email templates, code Snippets, medical codes, and more.  Try TextExpander free for 30 days. Check out TextExpander today and get 20% off using the code ",
		"keywords": ["chatgpt","snippet","brettterpstra","chatgpt","check","create","javascript","smarter","snippet","snippets","terpstra","textexpander","thanks","again","amounts","automatically","between","boost","brettterpstra","chatgpt","chiropractic","class","codes","communicatesmarter","company","content","create","customer","discovered","efficiency","email","example","examples","expands","fancy","generates","gives","graphics","handy","height","highlighter","https","image","instance","instructions","javascript","keystrokes","language","learn","length","loading","media","medical","names","nofollow","noscript","original","picture","plaintext","problem","public","random","recently","results","rouge","rsquo","scripted","scripting","service","snippets","source","sponsoring","srcset","templates","terpstra","textexpander","title","today","tremendous","trick","tweak","typing","uploads","using","wanted","where","width","wonders"]
	},{
		"title": "Halp: Universal help for Fish",
		"url": "/2023/11/08/halp-universal-help-for-fish/",
		"tags": ["editor","productivity","shell","shortcuts","terminal"],
		"date": "Nov 8<span>th</span>, 2023",
		"ts": "1699465560",
		"summary": "I&rsquo;ve had it out there for a while, but I thought I&rsquo;d point out that I&rsquo;ve ported my universal \"help\" command to Fish. removes the hassle of figuring out whether a command&rsquo;s help comes from , , , or . Just run (where CMD is the command you want help on) and it will figure out the rest. To install the function, just save the halp.fish file to . Once there, you can just type to get an appropriate help screen, whether it has a man page, a help page, command line help, or is an alias or function. By default it&rsquo;s set up to use Dash for Fish native commands (rather than opening your browser), but you can edit the function to change that (see the comments). That requires that you&rsquo;ve installed the Fish docset (Dash Preferences->Downloads->User Contributed). My local version of the function also replaces the line with to open man pages in Dash (requires the manpage docset). Edit as needed to make it work for you. As an aside, if you regularly edit Fish functions, it can be handy to use your favorite text editor rather than Vim or the internal editor. I have a function called that wraps the command with and autosaves after closing the window. You can modify this to work with any editor, you just need a \"wait\" flag (like ). Here&rsquo;s my version",
		"keywords": ["friendly","interactive","shell","check","contributed","downloads","github","preferences","alias","aside","autosaves","browser","called","change","closing","comes","command","commands","comments","default","docset","editor","favorite","figure","figuring","function","functions","handy","hassle","install","installed","internal","local","manpage","modify","native","needed","opening","pages","point","ported","public","rather","regularly","removes","replaces","requires","rsquo","screen","thought","universal","version","where","while","window","wraps"]
	},{
		"title": "Hazel giveaway!",
		"url": "/2023/11/06/hazel-giveaway/",
		"tags": ["giveaway","hazel","macos"],
		"date": "Nov 6<span>th</span>, 2023",
		"ts": "1699279200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 5 licenses ($42 value each) for Hazel. Hazel lets you create automations based on changes to files, allowing you to do things like automatically filing PDFs, sorting downloads, running optimizations on new images, or just about any file operation you can imagine. Hazel can open, archive, tag and even upload. You can have Hazel rename your files or sort them into subfolders based on name, date or whatever combination of attributes you choose. Coupled with Hazel’s powerful pattern matching, you can create workflows to process your files, your way. Sign up below to enter. Winners will be randomly drawn on Friday, November 10, at 12pm Central. The drawing is for 5 licenses ($42 value each) for Hazel, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through August, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["automation","changes","hazel","central","check","coupled","friday","giveaway","hazel","mastodon","robot","sorry","winners","allowing","among","archive","attributes","automatically","automations","based","below","beyond","blockquote","brettterpstra","changes","choose","class","combination","contact","create","developer","downloads","drawing","easydns","ended","enter","excited","featured","files","filing","first","giveaway","giveaways","hazel","height","https","image","images","imagine","licenses","loading","mailing","matching","maybe","media","nojack","noodlesoft","noscript","offer","operation","optimizations","original","pattern","picture","powerful","process","randomly","reading","rename","rsquo","running","screenshot","series","sorry","sorting","source","srcset","subfolders","subscribe","through","title","ttscoff","tuned","upload","uploads","value","visit","whatever","width","winner","workflows"]
	},{
		"title": "SearchLink gets Google Search back",
		"url": "/2023/11/05/searchlink-gets-google-search-back/",
		"tags": ["google","search","searchlink"],
		"date": "Nov 5<span>th</span>, 2023",
		"ts": "1699223220",
		"summary": "So it turns out Google now offers an API (once again). It&rsquo;s limited to 100 searches per day for the free version, so I don&rsquo;t want to put my API key into the public distribution of SearchLink, but if you want to tap into Google&rsquo;s power for your searches, you can now add your own API key to the config and get 100 searches per day for free. If you should, for whatever reason, run out of searches in a day, it should gracefully switch out to the previous DuckDuckGo configuration. The search will now test for the presence of a Google API key, and if it exists, use Google for the search. You can also use to force a Google search. If there&rsquo;s not a key set up, it will continue operating as it has using DuckDuckGo. As far as privacy concerns go, these searches don&rsquo;t include any tracking data, so using Google in this manner shouldn&rsquo;t present any new issues. For anyone creating plugins, the method will also test for an API key and use Google if available. To use this, install the latest version (download below) and then see the wiki page I created to generate your own key. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["developers","google","interfaces","programming","search","changelog","donate","download","duckduckgo","enjoy","google","markdown","published","searchlink","updated","again","anyone","available","below","concerns","config","configuration","continue","created","creating","distribution","download","editor","exists","force","gracefully","hellip","install","issues","latest","leaving","limited","links","method","offers","operating","plugins","presence","privacy","public","rsquo","search","searches","shouldn","switch","tracking","turns","using","version","whatever"]
	},{
		"title": "The WordCounter giveaway winners!",
		"url": "/2023/11/03/the-wordcounter-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Nov 3<span>rd</span>, 2023",
		"ts": "1699034400",
		"summary": "The WordCounter giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but WordCounter is still worth checking out. You can start tracking your writing productivity today, and get going for NaNoWriMo! You can still save 33% off your purchase using the code when you buy! Next up is Hazel . Check back every Monday through August, 2024 for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["count","wordcounter","writing","carley","check","chris","congratulations","default","folder","hazel","knight","mastodon","monday","nanowrimo","noteplan","soulver","spamsieve","taylor","tower","twitter","wordcounter","announce","checking","details","email","ended","giveaway","giveaways","going","notifications","productivity","received","rsquo","series","sorry","suggest","through","today","tracking","upcoming","using","winners","worth","writing"]
	},{
		"title": "Tower - making Git easy (and enjoyable!) to use [Sponsor]",
		"url": "/2023/11/02/tower-making-git-easy-and-enjoyable-to-use-sponsor/",
		"tags": ["sponsor"],
		"date": "Nov 2<span>nd</span>, 2023",
		"ts": "1698930000",
		"summary": "Thanks to Tower for sponsoring BrettTerpstra.com this week! I swear by this app, and anyone who uses Git for any part of their work or play should check it out. Tower&rsquo;s mission is simple: to make Git easy and enjoyable for everyone. Undo any Git operation by simply pressing CMD+Z (or CTRL+Z on Windows). This convenient keystroke allows you to easily roll back any mistakes made. Use Drag and Drop to efficiently reorder commits, cherry-pick, merge/rebase branches, or create pull requests. Solve merge conflicts easily with Tower&rsquo;s Merge Wizard, which provides clear context about the conflict. Review your repository&rsquo;s branches with Tower&rsquo;s \"Branches Review\" feature. This feature helps identify stale branches or those that have already been fully merged. Enable Syntax Coloring to quickly identify changes made in every diff. Tower supports almost 200 languages, making it easy to spot differences in code. Learn more about Tower and begin your 30-day free trial today! Use code to get 25% off your first year. And if you are a student or teacher, you can get Tower Pro for free",
		"keywords": ["hyperlink","merge","branches","brettterpstra","coloring","learn","merge","solve","syntax","terpstra","thanks","tower","windows","wizard","allows","almost","anyone","begin","branches","brettterpstra","campaign","carefully","changes","check","cherry","class","clear","client","commits","conflict","conflicts","context","convenient","crafted","create","differences","easily","efficiently","enjoyable","everyone","examples","feature","features","first","fully","height","helps","highlighter","https","identify","image","keystroke","language","languages","ldquo","loading","macos","making","media","medium","merge","merged","mission","mistakes","native","nofollow","noscript","operation","original","picture","plaintext","pressing","provides","quickly","rdquo","rebase","reorder","repository","requests","rouge","rsquo","screenshot","simple","simply","software","source","specific","sponsored","sponsoring","srcset","stale","student","supports","swear","teacher","teams","title","today","tower","trial","uploads","width","world"]
	},{
		"title": "Web Excursions for November 01, 2023",
		"url": "/2023/11/01/web-excursions-for-november-01-2023/",
		"tags": ["bookmarks"],
		"date": "Nov 1<span>st</span>, 2023",
		"ts": "1698865200",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. CloudPrompter The idea of a teleprompter is simple, yet so many people screw it up. Teleprompter Premium is my favorite on iOS/Mac, and the same devs have just released a web version of the same. It&rsquo;s a bit pricier than I think it should be, but you can get a lifetime 50% discount for signing up before Nov 3rd. \"Planter\" redux for Alfred Nice to see a new version of Planter taking root. An Alfred workflow for creating new projects based on a template file. A Closer Look at Apple Notes&rsquo; Smart Folders I have to admit Notes has become a killer app. I never would have guessed Apple would put this much development into it. Quick tip: Getting all links from any web site into a spreadsheet using browser developer tools I finally get how useful can be. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["apple","console","developer","notes","planter","table","teleprompter","template","alfred","apple","backblaze","check","closer","cloudprompter","folders","getting","notes","planter","premium","quick","smart","teleprompter","admit","affordably","backs","based","before","brought","browser","cloud","computer","creating","developer","development","discount","entire","everything","excursions","favorite","finally","guessed","killer","lifetime","links","partnership","people","pricier","projects","redux","released","reliably","rsquo","screw","securely","signing","simple","spreadsheet","taking","teleprompter","template","think","today","tools","useful","using","version","workflow"]
	},{
		"title": "Searchlink, not just for searching",
		"url": "/2023/11/01/searchlink-not-just-for-searching/",
		"tags": ["markdown","plugin","search","searchlink","snippet","textexpander"],
		"date": "Nov 1<span>st</span>, 2023",
		"ts": "1698850860",
		"summary": "First, I&rsquo;ve created a repo for SearchLink plugins. This is mostly going to be example code, but you might find some useful ones in there. If you&rsquo;ve never checked out SearchLink and do any kind of writing that requires linking to web sites/pages, app landing pages, Gist embeds, or basically any kind of blogging, web writing, or show notes, you should check it out. See the plugin repository for details on installing and contributing. All of the available searches in SearchLink are defined as plugins, so you can also use those as examples. One thing I wanted to explore was using SearchLink for more than just searches. I created a couple proofs of concept as plugins. Some of these make more sense as TextExpander snippets, but I wanted to experiment, so here&rsquo;s what I came up with. This plugin is a text filter that will turn into , randomly capitalizing characters. It&rsquo;s just to demonstrate how easily a text filter can be implemented (if you know a little Ruby, anyway). Another example of a text filter. This one can insert a Markdown calendar for any month and year. You can define the month and year like to get a calendar for May, 2024. If you use it will insert a calendar for the current month and year. It can also print how many days are in a month with to show how many days are in February in 2024. Silly, and again would probably be better as a TextExpander snippet, but I&rsquo;m just experimenting with extending SearchLink. This is a port of a TextExpander snippet I use. It takes a natural language date and inserts a formatted date. It provides the following formats: Abbr Result 2023-11-02 8:00am 2024-2-2 6:30am 2023-11-02 13:00 Thursday, November 2nd, 2023 at 8:00am All of the searches can be abbreviated to two letters, with becoming , becoming , etc. This plugin requires that PHP be installed on the system, either with the Apple Command Line Utilties (I think), or with Homebrew (). Use the fully-commented code in (documented in the SearchLink wiki) to generate your own plugins, and reference the existing searches for inspiration. Feel free to fork and submit a PR to the plugin repository if you create something you&rsquo;d like to share",
		"keywords": ["writing","another","apple","calendar","command","contributing","filters","first","homebrew","makeadate","markdown","mixcase","searchlink","silly","textexpander","thursday","utilties","abbreviated","again","anyway","available","becoming","blogging","calendar","capitalizing","characters","check","checked","commented","concept","contributing","couple","create","created","define","defined","details","documented","easily","either","embeds","example","examples","experiment","experimenting","explore","extending","filter","formats","formatted","fully","going","implemented","inserts","inspiration","installed","installing","landing","language","letters","linking","little","mostly","natural","notes","pages","plugin","plugins","print","proofs","provides","randomly","repository","requires","rsquo","searches","sense","share","sites","snippet","snippets","system","takes","think","useful","using","wanted","writing"]
	},{
		"title": "SearchLink Fixes",
		"url": "/2023/10/30/searchlink-fixes/",
		"tags": ["markdown","search","searchlink"],
		"date": "Oct 30<span>th</span>, 2023",
		"ts": "1698675540",
		"summary": "SearchLink 2.3.50 is out and contains fixes for some recent changes in DuckDuckGo&rsquo;s responses. It currently passes all tests except for one (TMDB is returning a movie for the search result \"Brad Pitt\", rather than the actor page, and when I add \"actor\" to the search it dumps out to IMDB, which I don&rsquo;t fully understand). Don&rsquo;t forget that the source code is all neatly organized on GitHub and you can compile the whole thing as a gem for command line usage, if you like. Every search is a plugin and you can add new search types pretty easily. If you do extend SearchLink at all, be sure to make a Pull Request and be part of the development! Download below, and see the SearchLink project page for more details! Update: Also added browser identification headers when trying to get a page title, which avoids some 502 errors on sites that ban scraping (like IMDB). SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["blogging","internet","tools","writing","changelog","donate","download","duckduckgo","github","markdown","published","searchlink","updated","actor","added","avoids","below","browser","changes","command","contains","details","development","dumps","easily","editor","errors","except","extend","fixes","forget","fully","headers","hellip","identification","leaving","links","movie","neatly","organized","passes","plugin","project","rather","recent","responses","returning","rsquo","scraping","search","searches","sites","source","tests","title","trying","types","understand","usage","whole"]
	},{
		"title": "WordCounter giveaway!",
		"url": "/2023/10/30/wordcounter-giveaway/",
		"tags": ["giveaway","macos","writing"],
		"date": "Oct 30<span>th</span>, 2023",
		"ts": "1698670800",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($19.99 value each) for WordCounter. Just in time for NaNoWriMo, WordCounter is an app for writers who want to track the most important metric in their daily goal: how many words you write and where. It records your writing productivity automatically in any app, allowing you to just write. The WordCounter gives immediate feedback on your productivity as a writer, encourages you by showing you your daily output, gives you clarity about your daily goals, keeps a complete history of your daily achievements, assists with finding your perfect writing environment, counts what counts: words – the ultimate metric for writing. Sign up below to enter. Winners will be randomly drawn on Friday, November 03, at 12pm Central. The drawing is for 3 licenses ($19.99 value each) for WordCounter, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. Stay tuned for more giveaways every week through August, 2024 (and maybe beyond). If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these",
		"keywords": ["count","wordcounter","writing","central","check","friday","giveaway","mastodon","nanowrimo","robot","sorry","winners","wordcounter","achievements","allowing","among","assists","automatically","below","beyond","blockquote","brettterpstra","clarity","class","contact","counts","daily","developer","drawing","easydns","encourages","ended","enter","environment","excited","featured","feedback","finding","first","giveaway","giveaways","gives","goals","guide","height","history","https","image","immediate","important","keeps","licenses","loading","mailing","maybe","media","metric","nanowrimo","nojack","noscript","offer","original","output","picture","productivity","randomly","reading","reedsy","rsquo","screenshot","series","showing","sorry","source","srcset","statistics","subscribe","through","title","track","ttscoff","tuned","ultimate","uploads","value","visit","where","width","winner","wordcount","wordcounter","wordcounterapp","words","write","writer","writers","writing"]
	},{
		"title": "The Scrivener giveaway winners!",
		"url": "/2023/10/27/the-scrivener-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Oct 27<span>th</span>, 2023",
		"ts": "1698429600",
		"summary": "The Scrivener giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Scrivener is still worth checking out. If you&rsquo;re a writer, you really should be using Scrivener, and you can still save 20% off using the coupon at checkout. You&rsquo;ll want it for NaNoWriMo, or just for your next writing project! Next up is WordCounter . Check back every Monday through August for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["scrivener","writing","check","congratulations","david","default","folder","hazel","lynch","mastodon","monday","nanowrimo","noteplan","philip","scrivener","soulver","tower","twitter","wordcounter","zastrow","announce","checking","checkout","coupon","details","email","ended","giveaway","giveaways","kesselma","notifications","project","received","rsquo","series","sorry","suggest","through","upcoming","using","winners","worth","writer","writing"]
	},{
		"title": "Sanebox and implementing the Eisenhower Matrix [Sponsor]",
		"url": "/2023/10/26/sanebox-and-implementing-the-eisenhower-matrix-sponsor/",
		"tags": ["email","sponsor"],
		"date": "Oct 26<span>th</span>, 2023",
		"ts": "1698325200",
		"summary": "Thanks to Sanebox for sponsoring BrettTerpstra.com again this week! I don&rsquo;t know what I&rsquo;d do without it! Envision your email as a bustling conference hall, filled with diverse attendees. Professional correspondences, casual updates, informative newsletters, enticing promotions, and the occasional unwelcome intruder all vying for your attention. Now, consider a seasoned curator (inspired by the Eisenhower Matrix) coordinating the event, teamed up with an expert organizer (the prowess of SaneBox) to streamline the flow and ensure a harmonious gathering. This is the synergy we&rsquo;re spotlighting. SaneBox, our sophisticated digital tool, acquires proficiency much like a dedicated student mastering a new subject. Each interaction with your emails refines its algorithm, enhancing its efficiency. When combined with the strategic principles of the Eisenhower Matrix, which prioritizes tasks based on urgency and significance, you&rsquo;re presented with a seamlessly integrated email management system. Let’s get practical. The Custom Folders inside of SaneBox let you decide what’s important to you and where it belongs on the Eisenhower Matrix. Start by creating folders for each quadrant. The traditional Eisenhower Matrix works like this: Urgent and Important (Quadrant I): These are tasks that need immediate attention and are crucial to your goals. Not Urgent but Important (Quadrant II): These are tasks that contribute to your long-term goals and values but don&rsquo;t require immediate attention. Urgent but Not Important (Quadrant III): These tasks demand your immediate attention but aren&rsquo;t critical to reaching your long-term goals. Neither Urgent nor Important (Quadrant IV): These are the tasks that provide little to no value and can often be deferred or even deleted. Once you’ve created your folders (and named them whatever you want), start moving emails into their appropriate places. It won’t take long for SaneBox to learn what’s important to you. Then you can be selective about which folders get attention and when. But it&rsquo;s more than just cleaning up. This method helps shape an email experience that feels uniquely yours. Merging the practical approach of the Eisenhower Matrix with SaneBox&rsquo;s functions, your inbox goes from being chaotic to organized and manageable. If you&rsquo;re among those buried under a mountain of emails, feeling the strain, it&rsquo;s worth trying the combination of SaneBox and the&hellip;",
		"keywords": ["apple","eisenhower","matrix","sanebox","brettterpstra","custom","eisenhower","envision","folders","important","matrix","merging","neither","professional","quadrant","sanebox","sanebox","thanks","urgent","acquires","again","algorithm","among","approach","attendees","based","belongs","brettterpstra","buried","bustling","casual","chaotic","class","cleaning","combination","conference","consider","contribute","coordinating","correspondences","created","creating","critical","crucial","curator","decide","dedicated","deferred","deleted","demand","deserve","digital","discount","diverse","efficiency","email","emails","enhancing","enticing","experience","expert","feeling","feels","filled","folders","functions","gathering","goals","harmonious","height","helps","https","image","immediate","important","inbox","informative","inside","inspired","integrated","interaction","intruder","learn","little","loading","manageable","management","mastering","media","method","mountain","moving","named","newsletters","nofollow","noscript","occasional","often","organized","organizer","original","picture","places","practical","presented","principles","prioritizes","proficiency","promotions","prowess","quadrant","reaching","refines","remember","rsquo","sanebox","seamlessly","seasoned","selective","shape","significance","signing","sophisticated","source","sponsoring","spotlighting","srcset","strain","strategic","streamline","student","subscription","synergy","system","tasks","teamed","title","today","traditional","trying","under","uniquely","unwelcome","updates","uploads","urgency","value","values","vying","whatever","where","width","works","worth"]
	},{
		"title": "Introducing the BrettTerpstra.com Forum",
		"url": "/2023/10/24/introducing-the-brettterpstra-dot-com-forum/",
		"tags": ["comments","email","forum","notifications"],
		"date": "Oct 24<span>th</span>, 2023",
		"ts": "1698167640",
		"summary": "I&rsquo;ve created a forum for discussing all things nerdy, the BrettTerpstra.com Forum. I wanted a place to have conversations about my various projects, but also to allow more interaction with my readers. I&rsquo;ll be active on it, and I hope you will too. Right now every one of my projects has different discussion forums, mostly hosted on GitHub, but they&rsquo;re separated by project and there&rsquo;s no unified place for support, questions, feature requests, and actual interaction. This is my attempt to consolidate and also increase interaction with the community. I&rsquo;m nervous about launching this because I fear nobody will talk and I&rsquo;ll feel unpopular, but I won&rsquo;t know until I try. I know, one more place to be active online, one more source of notifications, yet another place to chat. I know we all have too many of these. I chose this format over a Discord server or other synchronous communication because I like that it&rsquo;s _a_synchronous. You can show up when you feel like it, and just get email notifications about responses to your conversations, waiting until you have the time to add to the discussion. The forum is at forum.brettterpstra.com. Here&rsquo;s a special invite link that will get you in and give you immediate access to introduce yourself and join/start a conversation. I set this up using the Discourse droplet on DigitalOcean, which is a very affordable way to host cloud applications, if you&rsquo;re ever interested in building your own. I&rsquo;m also using a free account at Mailgun to handle notification emails and such. I&rsquo;ve switched the comments on this blog over to using the forum as an embed. Each blog post will create a new topic on the forum, and you&rsquo;ll be able to discuss and add comments via Discourse. It will require login (you can log in with GitHub or email), but should offer a saner way to handle comments on my posts. Give it a shot on this one and let me know what you think! In the process I&rsquo;ve lost all comment history, but it is what it is. I sincerely hope you&rsquo;ll join, participate, and make a community out of my readership. Don&rsquo;t be shy. I have 20,000 site viewers, 35,000 RSS subscribers, 13,000 Twitter followers, 2500 Mastodon followers, 9000 GitHub stars, and yet I still have a hard time getting interaction&hellip; I&rsquo;d love to hear from you",
		"keywords": ["discourse","forum","github","internet","brettterpstra","digitalocean","discord","discourse","forum","github","mailgun","mastodon","right","twitter","access","account","active","affordable","allow","another","applications","because","brettterpstra","building","chose","cloud","comment","comments","communication","community","consolidate","conversation","conversations","create","created","different","discussing","discussion","droplet","email","emails","embed","feature","followers","format","forum","forums","getting","handle","hellip","history","hosted","immediate","increase","interaction","interested","introduce","invite","launching","login","mostly","nerdy","nervous","nobody","notification","notifications","offer","online","posts","process","project","projects","questions","readers","readership","requests","responses","rsquo","saner","separated","server","sincerely","source","special","stars","subscribers","support","switched","synchronous","think","topic","unified","unpopular","using","various","viewers","waiting","wanted"]
	},{
		"title": "Scrivener giveaway!",
		"url": "/2023/10/23/scrivener-giveaway/",
		"tags": ["giveaway","macos","writing"],
		"date": "Oct 23<span>rd</span>, 2023",
		"ts": "1698066000",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 licenses ($59 value each) for Scrivener. Scrivener is the ultimate app for writers. Organize your story, add research, and get to writing with full support for notes, links, footnotes, rich text, Markdown and so much more. With story organization features, character tracking, and a complete set of writing tools, it&rsquo;s the most fully-fledged writing app you&rsquo;ll find. Get ready for NaNoWriMo! (By the way, it also integrates well with Marked 2.) Scrivener is the go-to app for writers of all kinds, used every day by best-selling novelists, screenwriters, non-fiction writers, students, academics, lawyers, journalists, translators and more. Scrivener won&rsquo;t tell you how to write&mdash;it simply provides everything you need to start writing and keep writing. Sign up below to enter. Winners will be randomly drawn on Friday, October 27, at 12pm Central. The drawing is for 3 licenses ($59 value each) for Scrivener, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list so you can be the first to know about these",
		"keywords": ["scrivener","writing","central","check","friday","markdown","marked","nanowrimo","organize","scrivener","sorry","winners","academics","below","beyond","brettterpstra","character","developer","drawing","ended","enter","everything","excited","featured","features","fiction","first","fledged","footnotes","fully","giveaway","giveaways","integrates","journalists","kinds","lawyers","licenses","links","mailing","maybe","mdash","notes","novelists","offer","organization","provides","randomly","reading","ready","research","rsquo","screenwriters","selling","series","simply","story","students","support","through","tools","tracking","translators","tuned","ultimate","value","visit","winner","write","writers","writing"]
	},{
		"title": "iTunesIcon updated",
		"url": "/2023/10/22/itunesicon-updated/",
		"tags": ["icons","imagemagick","iphone","itunes","itunesicon","macos","scripting","search"],
		"date": "Oct 22<span>nd</span>, 2023",
		"ts": "1698006420",
		"summary": "A long time ago I published a tool called iTunesIcon that would grab an app icon from iTunes. It worked well in its time, but has been mostly broken in recent years. It was designed mostly for writers who were reviewing apps and needed to get an app&rsquo;s icon for artwork, but could be used by anyone with a need for such things. As part of automating the giveaways I&rsquo;m running, I&rsquo;ve had a need to start grabbing app icons again, so I&rsquo;ve revived the project. This script requires installing ImageMagick for rounding the corners of iOS icons (). I previously had a shell function called that read a local app&rsquo;s icon file. These days, most local Mac apps tend to store their icons in Assets.car archives, so the default .icns file only has images up to 256 pixels in most cases. I&rsquo;ve worked around that. And when a local icon can&rsquo;t be found, I&rsquo;m falling back to searching iTunes, replicating the behavior of iTunesIcon. This script handles the following: Allow defining platform (mac, iOS, iPad, iPhone) Allow defining size (small, medium, large, or specific pixel dimensions) If the platform is Mac, test for a local copy from which to extract the icon If the platform is iOS or a local Mac app isn&rsquo;t found, search iTunes and return the first result If the platform is Mac and a local version is found, extract the icon from the Assets file to allow higher resolutions If the platform is iOS, automatically round the corners and resize the image Here&rsquo;s the (Ruby) script. It handles all of the above. Use the flag when running the script. This can be , , , or Add a modifier to the search terms in the form of , , , or , e.g. Use the flag, which can be , , or or a specific pixel dimension (square), e.g. Use a modifier in the search terms in the form of , , or a specific pixel dimension, e.g. If a local copy can be found, the asset will be extracted at any size specified. If searching iTunes, you&rsquo;re generally limited to 1024px, depending on the assets the app has provided. The nearest icon format will be downloaded, and ImageMagick will convert to specific pixel dimensions. Note that when downloading an iOS icon, the artwork provided is square, so the script will round the corners and add 10% padding around the icon (using ImageMagick) to offer similar dimensions to what Mac icons have or what you see on your iOS device screen. This is working well for me so far. I&rsquo;ll publish the&hellip;",
		"keywords": ["allow","assets","imagemagick","modifiers","platform","above","again","allow","anyone","archives","artwork","asset","assets","automatically","automating","automation","available","behavior","broken","called","commands","convert","corners","default","defined","defining","depending","designed","device","dimension","dimensions","downloaded","downloading","extract","extracted","falling","first","flags","format","found","function","generally","giveaway","giveaways","grabbing","handles","higher","iphone","itunes","itunesicon","icons","image","images","install","installing","limited","local","medium","modifier","mostly","nearest","needed","offer","options","override","padding","people","pixel","pixels","platform","previously","project","publish","published","recent","replicating","requires","resize","resolutions","return","reviewing","revived","round","rounding","rsquo","running","screen","script","search","searching","shell","similar","small","specific","square","store","terms","think","useful","using","version","worked","working","writers","years"]
	},{
		"title": "The TextExpander giveaway winners!",
		"url": "/2023/10/20/the-textexpander-giveaway-winners/",
		"tags": ["giveaway","textexpander"],
		"date": "Oct 20<span>th</span>, 2023",
		"ts": "1697826000",
		"summary": "The TextExpander giveaway has ended, and I have winners to announce! You should have received an email with details, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but TextExpander is still worth checking out. You can still save 20% off using the code at TextExpander.com. Guaranteed to improve your productivity. Next up is Scrivener . Check back every Monday through July for more giveaways. The next giveaways include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["expansion","snippet","textexpander","check","chris","congratulations","default","defaultfolderx","finazzo","folder","giveaway","guaranteed","hazel","mastodon","monday","noteplan","robot","scrivener","sungbin","terpstra","textexpander","tower","twitter","wordcounter","announce","background","brett","brettterpstra","checking","class","confetti","contact","details","didnt","easydns","email","ended","giveaway","giveaways","height","highlighter","https","image","improve","language","literatureandlatte","loading","media","nojack","noodlesoft","noscript","noteplan","notifications","original","overview","picture","plaintext","productivity","received","rouge","rsquo","scrivener","series","sorry","source","srcset","stclairsoft","subscribe","suggest","terpstra","textexpander","through","title","tower","ttscoff","twitter","upcoming","uploads","using","width","winners","wordcounterapp","worth"]
	},{
		"title": "TextExpander giveaway!",
		"url": "/2023/10/16/textexpander-giveaway/",
		"tags": ["giveaway","macos","textexpander"],
		"date": "Oct 16<span>th</span>, 2023",
		"ts": "1697461200",
		"summary": "I&rsquo;m excited to offer the next giveaway, 3 1-year subscriptions ($39.96 value each) for TextExpander. TextExpander is a long-time supporter of BrettTerpstra.com and I&rsquo;m very proud of that. It&rsquo;s the first app I install on a new Mac and I almost can&rsquo;t function without it. It saves me untold hours of typing, and with its shell scripting capabilities it goes well beyond simple text expansion. Do you want to save time and typing with text shortcuts that can expand into anything you want? Whether it’s a simple email signature, a complex code snippet, or a personalized greeting, TextExpander can help you easily create and manage those snippets. See out the TextExpander site for more info. And be sure to check out the new extension for Chrome! Sign up below to enter. Winners will be randomly drawn on Friday, October 20, at 12pm Central. The drawing is for 3 1-year subscriptions ($39.96 value each) for TextExpander, one per winner. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list so you can be the first to know about these",
		"keywords": ["expansion","snippet","textexpander","brettterpstra","central","chrome","friday","giveaway","robot","sorry","textexpander","winners","almost","below","beyond","blockquote","brettterpstra","capabilities","check","chrome","class","complex","contact","create","developer","drawing","easily","email","ended","enter","excited","expand","expansion","extension","featured","first","function","giveaway","giveaways","google","greeting","height","hours","https","image","install","introducing","loading","mailing","maybe","media","noscript","offer","original","personalized","picture","proud","randomly","reading","rsquo","saves","screenshot","scripting","series","shell","shortcuts","signature","simple","snippet","snippets","sorry","source","srcset","subscribe","subscriptions","supporter","terpstra","textexpander","through","title","tuned","typing","untold","uploads","value","visit","width","winner"]
	},{
		"title": "Automating the giveaways",
		"url": "/2023/10/14/automating-the-giveaways/",
		"tags": ["automator","developer","email","giveaway","hookmark","markdown","notifications","scripting"],
		"date": "Oct 14<span>th</span>, 2023",
		"ts": "1697288400",
		"summary": "You may have noticed I&rsquo;m running a series of giveaways on this blog. Literally every developer I&rsquo;ve reached out to has been willing to put up 1-10 licenses or 1-year subscriptions for their app, and I&rsquo;m extremely pleased with the list I&rsquo;ve put together. In an effort to keep track of all of them, I&rsquo;ve built some (if I do say so myself) impressive automation around this project, and I thought I&rsquo;d share. It&rsquo;s some mad science, but it&rsquo;s working great and I kinda want to brag about it. The announcement post containing the form to enter for the drawing, on Monday An announcement email to subscribers linking to the announcement post, also on Monday A followup email on Thursday reminding subscribers there&rsquo;s still time to enter A drawing of the winners, and notification emails sent to them, on Friday An announcement post listing the winner&rsquo;s names and upcoming giveaways, also on Friday So here&rsquo;s how it works. I have a master YAML file where each giveaway has the following info: It takes me about 10 minutes to build an entry. I have to write out my personal blurb, get a developer blurb from the website, and generate images including a screenshot (usually pulled from the website and automatically sized and converted by a Hazel script when I save it to my desktop) and a blog header and winner post header1. (Social sharing images and WEBP versions are automatically generated from the header images using RetroBatch.) So that&rsquo;s the bulk of the creation time. Slotting a new giveaway in is simply a matter of adding a new entry like above to the YAML array, and I can slot them in at any point and all of the dates will adjust accordingly. When my script runs, it goes through this YAML file and generates all of the pieces mentioned above. It has a start date hardcoded for the start of this series, and then for each giveaway entry it adds 7 days, and sets a drawing date for the following Friday. It uses ERB templates to generate the giveaway announcement (including blurbs and screenshot), the two emails, and the winner announcement (including the followup text). The winner announcement, which gets saved to my drafts folder, includes a note letting me know exactly what command to run to execute the drawing, including how many winners to draw, where to pull the fulfillment codes from, etc. The winner announcement is also \"hooked\" to the conversation with the developer using Hookmark, so&hellip;",
		"keywords": ["email","markdown","amazon","billable","brettterpstra","daniel","doing","easily","firebase","flying","friday","giveaway","hazel","hookmark","imagemagick","jekyll","literally","markdown","monday","newsletters","redacted","record","retrobatch","retrobatch","robot","sendy","slotting","social","sunday","tamer","terminal","thursday","timing","wednesday","above","adding","adjust","alert","almost","alter","announcement","anyone","apply","array","aside","automate","automatically","automation","available","background","backlink","based","because","becomes","behind","blurb","blurbs","brettterpstra","build","building","built","calendar","called","categorize","charge","cheaper","check","class","clicks","clipboard","codes","command","contact","containing","conversation","conversations","converted","copies","corporate","coupons","create","creates","creation","cushy","daily","database","dates","depends","depth","desktop","details","developer","discipline","discussion","doing","double","doubt","drafts","dragging","drawing","dropping","easily","effort","elapsed","email","emails","endnotes","enter","entrants","entries","entry","execute","extract","faster","fateful","files","flyingmeat","fnref","focusing","folder","followup","footnote","footnotes","format","freelance","fulfilling","fulfillment","fully","gaming","generated","generates","generation","giveaway","giveawayrobot","giveaways","going","grand","great","growing","guarantee","handling","hardcoded","haven","header","height","hellip","helped","highlight","highlighter","holes","hooked","hookproductivity","hourly","hours","https","iphone","ideas","image","imageautomation","images","impressive","includes","including","individual","integrated","keywords","kinda","language","ldquo","letting","license","licenses","lined","linking","links","listing","literally","loading","locally","looking","major","manually","master","media","mentioned","minutes","moving","multiple","myself","nailing","named","names","nearly","necessary","needs","noodlesoft","noscript","noteref","notes","noticed","notification","offer"]
	},{
		"title": "The Hookmark giveaway winner!",
		"url": "/2023/10/13/the-hookmark-giveaway-winner/",
		"tags": ["giveaway","hookmark"],
		"date": "Oct 13<span>th</span>, 2023",
		"ts": "1697218500",
		"summary": "The Hookmark giveaway has ended, and I have a winner to announce! You should have received an email and the developer will be in touch, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Hookmark is still worth checking out. It will change the way you work. You can still save 30% off for the next week using coupon at checkout (click on Add Discount)! By the way, Hookmark is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is TextExpander. Check back every Monday through June for more giveaways. If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["hookmark","linking","acorn","archive","bbedit","backblaze","bartender","black","check","congratulations","curio","devonthink","default","discount","dropzone","eaglefiler","fastscripts","flexibits","folder","hazel","hookmark","kaleidoscope","keyboard","maestro","marcus","marked","marsedit","mastodon","monday","noteplan","omnifocus","omnigraffle","omnioutliner","omniplan","phelan","premium","retrobatch","scrivener","setapp","soulver","spamsieve","tableflip","tamer","taskpaper","textexpander","tower","twitter","unite","wordcounter","amazing","announce","available","change","checking","checkout","click","coupon","developer","email","ended","giveaway","giveaways","hundreds","ithoughtsx","notifications","received","rsquo","series","sorry","subscription","suggest","through","touch","upcoming","using","winner","winners","worth"]
	},{
		"title": "TextExpander - focus on what's most important [Sponsor]",
		"url": "/2023/10/12/textexpander-focus-on-whats-most-important-sponsor/",
		"tags": ["sponsor","textexpander"],
		"date": "Oct 12<span>th</span>, 2023",
		"ts": "1697115600",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! When it comes to focusing my attention, nothing helps avoid mundane distractions better than not having to repeat myself in emails, type out common urls, or fix my most common misspellings. TextExpander brings all of these features to your whole team. Get your team communicating faster so they can focus on what’s most important &mdash; with TextExpander your team’s knowledge is at their fingertips. Get your whole team on the same page by getting information out of silos and into the hands of everyone that needs to use it. You can share your team’s knowledge across departments so your team is sending a unified message to your customers and isn’t spending time reinventing the wheel. Keep your company’s most used emails, phrases, messaging, URLs and more right within TextExpander. Share It Deploy the content you need with just a few keystrokes on any device, across any apps you use. TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more",
		"keywords": ["expansion","snippets","brettterpstra","chrome","deploy","expand","organize","share","smarter","store","textexpander","thanks","visit","windows","access","across","again","available","avoid","brettterpstra","brings","campaign","class","comes","common","communicatesmarter","communicating","company","content","customers","department","departments","device","distractions","emails","everyone","faster","features","fingertips","first","focus","focusing","getting","graphics","hands","having","height","helps","https","iphone","image","important","information","keystrokes","knowledge","learn","loading","mdash","media","medium","message","messaging","misspellings","mundane","myself","needs","nofollow","noscript","nothing","original","phrases","picture","podcast","readers","reinventing","repeat","right","sending","share","silos","source","spending","sponsoring","srcset","strong","terpstra","textexpander","title","unified","uploads","wheel","whole","width","within","works"]
	},{
		"title": "Hookmark giveaway!",
		"url": "/2023/10/09/hookmark-giveaway/",
		"tags": ["giveaway","hookmark","macos"],
		"date": "Oct 9<span>th</span>, 2023",
		"ts": "1696856400",
		"summary": "I&rsquo;m excited to offer the next giveaway, a Pro license ($69.99 value) for Hookmark. Hookmark is the ultimate tool for keeping track of all of your stuff. Your links, your notes, your documents, your tasks&hellip; Hookmark makes everything linkable and provides easy navigation between related objects. It takes a minute to work it into your workflow, but once you do, you&rsquo;ll wonder how you lived without it. Hookmark connects information in and between great apps such as Obsidian, Bookends, Zotero, DEVONthink, Craft, OmniOutliner Pro, Bike, Curio, Marked2, TextMate, Scrivener, Tinderbox, GoodTask, Nisus Writer, Nitro PDF, Skim, Sketch, Bike, OmniGraffle, HoudahSpot, LibreOffice, MailMate, Airmail, Apple Mail, Word, Excel, Powerpoint, BBEdit, Things and many more. Hookmark links your research and development! Sign up below to enter. A winner will be randomly drawn on Friday, October 13, at 12pm Central. The drawing is for a Pro license ($69.99 value) for Hookmark. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list so you can be the first to know about these",
		"keywords": ["hookmark","linking","airmail","apple","bbedit","bookends","central","check","craft","curio","devonthink","excel","friday","goodtask","hookmark","houdahspot","libreoffice","mailmate","marked","nisus","nitro","obsidian","omnigraffle","omnioutliner","powerpoint","scrivener","sketch","sorry","textmate","tinderbox","writer","zotero","below","between","beyond","brettterpstra","connects","developer","development","documents","drawing","ended","enter","everything","excited","featured","first","giveaway","giveaways","great","hellip","information","keeping","license","linkable","links","lived","mailing","makes","maybe","minute","navigation","notes","objects","offer","provides","randomly","reading","related","research","rsquo","series","stuff","takes","tasks","through","track","tuned","ultimate","value","visit","winner","wonder","workflow"]
	},{
		"title": "Marked and Bear",
		"url": "/2023/10/08/marked-and-bear/",
		"tags": ["customization","markdown","marked"],
		"date": "Oct 8<span>th</span>, 2023",
		"ts": "1696804260",
		"summary": "Recent releases of Marked have fixed Bear compatibility on Sonoma. As part of this, I&rsquo;ve updated the Bear style for Marked, and written a little custom preprocessor to handle Bear&rsquo;s (CommonMark) syntax properly. If you want a Marked preview styled to look exactly like Bear (with all of Marked&rsquo;s options for export, navigation, and other features), you can use the Bear style in combination with the preprocessor, but if you just want Bear&rsquo;s syntax properly interpreted, you can use the preprocessor with the style of your choosing1. To get the Bear style, go the the Style Gallery and open the Bear style. Click \"Install\" to add it to Marked in one click. For the custom preprocessor to work, you&rsquo;ll need Ruby available on your system. As far as I know, Ruby is still distributed with macOS (for now), and if you open Terminal and run , you should get a path back, e.g. . If this isn&rsquo;t the case for you and you need further help, please post on the support forum and I&rsquo;ll update the instructions as needed. For handling Bear&rsquo;s specific syntax, like , underlining, and strikethrough, you&rsquo;ll need a custom preprocessor. Save the following to a file called in a safe folder (one you won&rsquo;t move in the future). Updated: now handles making tags clickable as well, and no longer requires that the preference be set in Marked. Open terminal and run . That will make it executable, then you can just add as your custom preprocessor path in Marked->Settings->Advanced. (To get the absolute path for a file, right click it in Finder, hold down Option, and click &lsquo;Copy \"bear-preprocess.rb\" as Pathname&rsquo;. That will put the absolute path to the file in your clipboard, which you can paste for both the command and the Custom Preprocessor field.) This script will convert into Bear internal links, which will open linked notes in Bear when clicked, and handle special cases like , , and . In addition, you&rsquo;ll want to set your Processor to MultiMarkdown and enable \"#Text is tag\" and the sub-item \"Style tags\" in Settings->Processor. Note that the processing will only work if you&rsquo;re not using a custom processor (custom preprocessor like above won&rsquo;t override it). New script above handles #tags and makes them clickable. If you need additional help setting this up, just ping me on http://support.markedapp.com. If you&rsquo;re using a non-Bear Style and want underlines formatted, you can modify a&hellip;",
		"keywords": ["callback","languages","preprocessor","scripting","advanced","click","commonmark","custom","finder","gallery","handle","install","marked","multimarkdown","obsidian","pathname","preprocessor","processor","recent","regexp","settings","sonoma","style","terminal","updated","above","absolute","allows","available","backlink","believe","below","blockquote","border","bottom","brettterpstra","callback","called","chmod","choosing","class","click","clickable","clicked","clipboard","combination","coming","command","compatibility","content","convert","create","custom","decision","deletion","desired","detailed","directly","distributed","documents","encoding","endnotes","error","escape","eventually","executable","export","features","field","figcaption","figure","fixed","fnref","folder","footnote","footnotes","force","formatted","forum","frozen","fully","functionality","github","githubusercontent","handle","handler","handles","handling","header","headers","height","highlight","highlighter","highlighting","https","image","input","instructions","internal","internally","interpreted","language","ldquo","linked","linking","links","literal","little","loading","longer","lsquo","macos","makes","making","marked","markedapp","match","matchup","media","mkstyledtag","modify","navigation","needed","noscript","noteref","notes","nvultra","options","original","override","pages","paste","picture","plaintext","point","preference","preprocess","preprocessor","preview","processing","processor","properly","rdquo","releases","repurposed","requires","reversefootnote","right","rouge","rsquo","script","setting","solid","source","special","specific","srcset","stdin","strikethrough","string","strong","style","styled","styles","styling","support","syntax","system","terminal","title","titles","ttscoff","underline","underlines","underlining","understandable","updated","uploads","using","whole","width","written"]
	},{
		"title": "The Timing giveaway winner!",
		"url": "/2023/10/06/the-timing-giveaway-winner/",
		"tags": ["giveaway"],
		"date": "Oct 6<span>th</span>, 2023",
		"ts": "1696615200",
		"summary": "The Timing giveaway has ended, and I have a winner to announce! You should have received an email and the developer will be in touch, please let me know if you didn&rsquo;t hear anything! But I didn&rsquo;t win! If you didn&rsquo;t win, sorry, but Timing is still worth checking out. I guarantee it will be useful for anyone who needs to know where they spend there time, for any reason. By the way, Timing is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription. Next up is Hookmark. Check back every Monday through April for more giveaways. If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications",
		"keywords": ["productivity","timing","tracking","bbedit","bartender","black","check","congratulations","curio","default","dropzone","eaglefiler","fastscripts","flexibits","folder","hazel","hookmark","kaleidoscope","keyboard","maestro","marsedit","mastodon","monday","noteplan","omnifocus","omnigraffle","omnioutliner","omniplan","premium","scott","scrivener","setapp","soulver","spamsieve","tamer","taskpaper","textexpander","timing","tower","twitter","unite","willsey","amazing","announce","anyone","available","checking","developer","email","ended","giveaway","giveaways","guarantee","hundreds","needs","notifications","received","rsquo","series","sorry","spend","subscription","suggest","through","touch","upcoming","useful","where","winner","winners","worth"]
	},{
		"title": "Marked and Bunch updates for Sonoma",
		"url": "/2023/10/05/marked-and-bunch-updates-for-sonoma/",
		"tags": ["bunch","marked"],
		"date": "Oct 5<span>th</span>, 2023",
		"ts": "1696525860",
		"summary": "The Marked update is live for direct customers, and in review for Setapp and Mac App Store customers. Watch for updates on your channel. It fixes an issue that prevented Marked from opening any files on Sonoma, and also crashes when using with Drafts&rsquo; or Bear&rsquo;s \"Preview in Marked\" features. It should solve the issue for all versions of macOS. The Bunch update is specifically to fix modifier keys not working when clicking Bunches in the menu. E.g. you&rsquo;re supposed to be able to Cmd-Click a Bunch and open the text file in your editor of choice instead of launching it, and this wasn&rsquo;t working anymore. The current release of the Beta should solve it. I would love some feedback on whether it&rsquo;s working for you on Sonoma, and additionally whether I broke it for people on earlier versions of macOS. If the fix is solid, I&rsquo;ll release it to the main channel. You can download the beta on the Downloads page",
		"keywords": ["setapp","bunch","bunches","click","downloads","drafts","marked","preview","setapp","sonoma","store","thanks","watch","additionally","anymore","broke","channel","choice","clicking","crashes","customers","direct","download","earlier","editor","features","feedback","files","fixes","launching","macos","modifier","opening","people","prevented","quick","release","rsquo","solid","solve","specifically","supposed","updates","using","versions","working"]
	},{
		"title": "Dropzone 4, the essential drag & drop productivity enhancer [Sponsor]",
		"url": "/2023/10/05/dropzone-4-the-essential-drag-and-drop-productivity-enhancer-sponsor/",
		"tags": ["cloud","dropzone","macos","sponsor"],
		"date": "Oct 5<span>th</span>, 2023",
		"ts": "1696510800",
		"summary": "Thanks to Dropzone for sponsoring BrettTerpstra.com this week! I&rsquo;ve been a Dropzone fan for many years now, and use it daily for everything from processing images to sharing files via my S3 account. Dropzone brings everyday productivity shortcuts to your Mac. Set up your frequently used actions in the Dropzone interface, then simply drag and drop files into the shortcut icons to perform your saved actions. Move, copy, and share files in an instant, or even develop your own timesaving actions. 🚀 Drag-and-Drop Simplicity: Dropzone 4 lets you effortlessly drag and drop files and folders to your most-used destinations, whether it&rsquo;s a specific folder, cloud service, or application. It will turbocharge drag & drop and help you get things done faster. 📁 Customizable Actions: Tailor Dropzone 4 to your unique needs with a plethora of customizable actions. Create workflows that suit your daily routine, from resizing images or shortening URLs to sending files via email, all with a simple drag-and-drop. 🗃️ Stash files for later: Drop Bar allows you to keep files handy you know you&rsquo;ll need later, instead of having to dig them up from their folders. Simply drop files into Dropzone’s holding area, and they’ll stay put until you’re ready to use them again. The holding area is a feature you won’t want to give up, proving incredibly useful for putting together documents that pull in from many sources. 🌐 Cloud Integration: Upload to your favorite cloud services like Imgur, Google Drive, YouTube, SFTP servers and many more. 🧩 Extensive Plugin Support: Expand Dropzone 4&rsquo;s capabilities with our library of actions available from aptonic.com/actions Ready to supercharge your Mac experience? Join the thousands of satisfied users who have already discovered the magic of Dropzone 4. Download it today and transform the way you use drag & drop on your Mac. For a limited time for BrettTerpstra.com readers, we&rsquo;re also offering a 15% discount off a Dropzone 4 Pro Lifetime License with the coupon code . Click here to receive the discount ",
		"keywords": ["drive","favicon","google","imgur","actions","brettterpstra","brettterpstra","click","cloud","create","customizable","download","drive","dropzone","expand","extensive","google","imgur","integration","license","lifetime","plugin","ready","simplicity","simply","sonoma","sponsor","stash","support","tailor","thanks","updated","upload","youtube","account","actions","again","allows","aptonic","available","brettterpstra","brings","capabilities","class","cloud","coupon","customizable","daily","destinations","develop","discount","discovered","documents","effortlessly","email","everyday","everything","experience","faster","favorite","feature","files","folder","folders","handy","having","height","highlighter","holding","https","icons","image","images","improved","incredibly","instant","interface","language","later","library","limited","loading","macos","magic","media","needs","nofollow","noscript","offering","original","picture","plaintext","plethora","processing","productivity","proving","putting","readers","ready","receive","resizing","rouge","routine","rsquo","satisfied","saved","sending","servers","service","services","share","sharing","shortcut","shortcuts","shortening","simple","simply","source","sources","specific","sponsoring","srcset","supercharge","thousands","timesaving","title","today","together","transform","turbocharge","unique","uploads","useful","users","width","workflows","years"]
	},{
		"title": "Timing giveaway!",
		"url": "/2023/10/02/timing-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Oct 2<span>nd</span>, 2023",
		"ts": "1696251600",
		"summary": "I&rsquo;m excited to offer the next giveaway, a 1-year subscription ($108 value) for Timing. I use Timing daily and it&rsquo;s helped me automatically track time that I would never have had the discipline to manage on my own. Billable hours, time I spend on personal projects, time I spend gaming, pretty much anything I do on my Mac, my iPhone, or my iPad gets tracked and I can easily categorize based on rules (that are as easy as dragging and dropping to generate). I even integrated it with Doing for adding depth to my \"What Was I Doing\" tracking. Just keep focusing on your work while Timing records your time automatically, then review your time when you want to. Record time faster than ever with just a few clicks. See when you worked on what and how productive you were. Sign up below to enter. A winner will be randomly drawn on Friday, October 06, at 12pm Central. The drawing is for a 1-year subscription ($108 value) for Timing. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit this post on brettterpstra.com to enter! Sorry, this giveaway has ended. If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list so you can be the first to know about these",
		"keywords": ["productivity","timing","tracking","billable","central","check","doing","friday","record","sorry","timing","adding","automatically","based","below","beyond","brettterpstra","categorize","clicks","daily","depth","developer","discipline","dragging","drawing","dropping","easily","ended","enter","excited","faster","featured","first","focusing","gaming","giveaway","giveaways","helped","hours","iphone","integrated","mailing","maybe","offer","personal","productive","projects","randomly","reading","rsquo","rules","series","spend","subscription","through","track","tracked","tracking","tuned","value","visit","while","winner","worked"]
	},{
		"title": "Historical weather for Journal CLI",
		"url": "/2023/09/30/historical-weather-for-journal-cli/",
		"tags": ["journal","journaling","weather"],
		"date": "Sep 30<span>th</span>, 2023",
		"ts": "1696090260",
		"summary": "I pushed a couple updates to Journal, my command line journaling tool today. As a reminder, you can add a natural language argument to your journal command which will set the date of the entry, e.g. . This allows you to create entries in post with historical data you might have missed. One thing that it didn&rsquo;t do well, though, is to get the correct weather for any weather type questions in the journal when using past dates. This latest update is able to get historical weather data and insert it correctly in the entry. No changes required for the user, just enter a past date and Journal will figure it out. Second, I&rsquo;ve noticed my mood and sleep shifts with the moon phase. I&rsquo;m not into astrology or anything, but that seemed like useful data to track and start to draw better conclusions from. So now a question type of will include the moon phase as a key, and you can use to get just the moon phase for its own entry. The forecast in Markdown will also now include the moon phase. That&rsquo;s it, just tying up some loose ends. Journal is working pretty well for me to collect data and provide my therapist with detailed mood/behavior information. Let me know if there&rsquo;s anything it doesn&rsquo;t do that might help you out! The latest version can be installed with . Visit the Journal project page for more info",
		"keywords": ["command","interface","journal","markdown","second","visit","allows","argument","astrology","behavior","changes","collect","command","conclusions","correctly","couple","create","dates","detailed","doesn","enter","entries","entry","figure","forecast","historical","information","installed","journal","journaling","language","latest","loose","missed","natural","noticed","phase","project","pushed","questions","reminder","required","rsquo","seemed","shifts","sleep","therapist","today","track","tying","updates","useful","using","version","weather","working"]
	},{
		"title": "The CleanShot X giveaway winners!",
		"url": "/2023/09/29/the-cleanshot-x-giveaway-winners/",
		"tags": ["giveaway","macos"],
		"date": "Sep 29<span>th</span>, 2023",
		"ts": "1696006800",
		"summary": "The CleanShot X giveaway has ended, and I have three winners to announce! Each winner should have received an email with a redeem link/code, please let me know if you didn&rsquo;t hear anything! But I Didn&rsquo;t Win! If you didn&rsquo;t win, sorry, but CleanShot X is still worth checking out. It&rsquo;s by far the best app for screenshots on the Mac, no matter where or how you&rsquo;re using them. You should also consider a subscription to Setapp, which will include CleanShot X among a couple hundred other amazing apps. Next up is Timing (the perfect app for automatic time tracking on Mac). Check back every Monday through December for more giveaways. Upcoming apps include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for early access",
		"keywords": ["cleanshot","screenshot","bartender","black","brown","check","cleanshot","coming","congratulations","curio","darren","david","default","everden","fastscripts","folder","hazel","hookmark","kaleidoscope","keyboard","maestro","marsedit","mastodon","monday","noteplan","rychnowski","scott","scrivener","setapp","soulver","spamsieve","tamer","taskpaper","textexpander","timing","tower","twitter","unite","upcoming","winners","access","amazing","among","announce","automatic","checking","consider","couple","email","ended","giveaway","giveaways","hundred","received","redeem","rsquo","screenshots","series","sorry","subscription","suggest","through","tracking","using","where","winner","winners","worth"]
	},{
		"title": "Automatically sort emails to custom folders with Sanebox [Sponsor]",
		"url": "/2023/09/28/automatically-sort-emails-to-custom-folders-with-sanebox-sponsor/",
		"tags": ["email","sponsor"],
		"date": "Sep 28<span>th</span>, 2023",
		"ts": "1695909300",
		"summary": "Thanks to Sanebox for sponsoring BrettTerpstra.com again this week! I just trained 3 new senders into custom Sanebox folders today (just by moving an email from them once) and will never have to see them in my Inbox again, and will be able to easily locate them when I do want to see them. It&rsquo;s so easy! SaneBox is once again under the spotlight for their cutting-edge solutions to the age-old problem of email clutter. Having earned the endorsement of seasoned professionals, it’s worth diving deeper into another feature that makes SaneBox the power tool for email management. One feature that is particularly enchanting? Custom Folders. Imagine this: You receive countless emails daily from various sources. Newsletters from your favorite brands, updates from work, personal emails, bulk offers, and then, those pesky spam mails. Now, think of an assistant who not only sorts your emails but also does it exactly how you would. That means keeping in mind your unique preferences and priorities. That&rsquo;s what SaneBox&rsquo;s Custom Folder feature offers. At the core of SaneBox is its learning ability. For example, as you shuffle emails in and out of folders like @SaneLater or @SaneBlackHole, SaneBox observes. Over time, it finds patterns in your preferences and ensures similar emails find their rightful place automatically in the future. It’s like training your dog to fetch. Once it learns which toy is its favorite, it fetches it every single time. One particularly intriguing aspect of this feature is the flexibility it offers. Let&rsquo;s say you&rsquo;re working on a project, and you want all communications about it to be in one place. Simply create a Custom Folder named \"@ProjectX.\" As you get emails related to the project, drag a few to the new folder, and then SaneBox will quickly learn to play fetch. The beauty of SaneBox’s Custom Folder feature lies in its adaptability. It&rsquo;s not just about categorizing. It&rsquo;s about creating an email ecosystem that aligns with your work habits and priorities. The more seamless a process is, the more likely you&rsquo;ll be to use it. So that adaptability is critical. In essence, SaneBox’s Custom Folder feature is more than just about organization. It&rsquo;s about crafting a personalized email experience. It&rsquo;s a testament to how adaptive technology can be when it&rsquo;s designed with the user at its core. If you&rsquo;re still juggling with emails and feeling the stress of a cluttered&hellip;",
		"keywords": ["apple","emailtray","gmail","interface","outlook","sanebox","banner","brettterpstra","custom","folder","folders","having","imagine","inbox","newsletters","projectx","saneblackhole","sanebox","sanelater","sanebox","simply","thanks","ability","adaptability","adaptive","again","aligns","another","aspect","assistant","automatically","beauty","brands","brettterpstra","categorizing","class","clutter","cluttered","communications","countless","crafting","create","creating","critical","custom","cutting","daily","deeper","designed","discount","diving","earned","easily","ecosystem","email","emails","enchanting","endorsement","ensures","essence","example","experience","favorite","feature","feeling","fetch","fetches","finds","flexibility","folder","folders","habits","height","https","image","inbox","intriguing","juggling","keeping","ldquo","learn","learning","learns","likely","loading","mails","makes","management","media","moving","named","nofollow","noscript","observes","offers","organization","original","particularly","patterns","perhaps","personal","personalized","pesky","picture","preferences","priorities","problem","process","professionals","project","quickly","rdquo","receive","related","remember","rightful","rsquo","sanebox","seamless","seasoned","senders","shuffle","signing","similar","single","solutions","sorts","source","sources","sponsoring","spotlight","srcset","stress","subscription","technology","testament","think","title","today","trained","training","under","unique","updates","uploads","various","width","working","worth"]
	},{
		"title": "Web Excursions for September 26, 2023",
		"url": "/2023/09/26/web-excursions-for-september-26-2023/",
		"tags": ["bookmarks"],
		"date": "Sep 26<span>th</span>, 2023",
		"ts": "1695753840",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Toolbox Pro, Logger for Shortcuts, and Nautomate Snailed It, run by my friend Rosemary Orchard, has taken custody of several apps developed by Alex Hay after his tragic passing last March. They&rsquo;re in good hands, and will see the love he would want them to. iPhone 15 Pro facts and estimates I love it when Dr. Drang nerds out about Apple stuff. The SSD Edition: 2023 Drive Stats Mid-Year Review The semi-annual drive stats report from Backblaze is out (SSD edition). I love the amount of data they collect on hard drive reliability. Adding sound wave overlays to videos and pictures using FFMPEG I did not know ffmpeg could do this. Thanks, Christian! Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["iphone","adding","apple","backblaze","check","christian","drang","drive","edition","ffmpeg","logger","mindmeister","nautomate","orchard","rosemary","shortcuts","snailed","stats","thanks","toolbox","amount","annual","boosting","brainstorming","brought","collaborating","collaborative","collect","custody","developed","drive","edition","estimates","excursions","facts","ffmpeg","friend","hands","iphone","mapping","nerds","overlays","partnership","passing","pictures","productivity","reliability","report","rsquo","several","software","sound","stats","stuff","taken","tragic","using","videos"]
	},{
		"title": "CleanShot X giveaway!",
		"url": "/2023/09/25/cleanshot-x-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Sep 25<span>th</span>, 2023",
		"ts": "1695646800",
		"summary": "I&rsquo;m super excited about this one, as I consider CleanShot X to be one of the best Mac apps developed in the last few years. Hands down the best screenshot/recording app, but also just a highly elegant app all around. Note that if you&rsquo;re reading this via RSS, you&rsquo;ll need to visit the site to enter! Check out the CleanShot X website for more details on this amazing app. I have three licenses ($29 value) to offer to BrettTerpstra.com readers. Sign up below and I&rsquo;ll draw random winners on Friday, September 29th. Sorry, this giveaway has ended. If you have an app you&rsquo;d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list so you can be the first to know about these",
		"keywords": ["cleanshot","screenshot","brettterpstra","check","cleanshot","friday","hands","sorry","amazing","below","beyond","consider","details","developed","elegant","ended","enter","excited","featured","first","giveaway","giveaways","highly","licenses","mailing","maybe","offer","random","readers","reading","recording","rsquo","screenshot","series","super","through","tuned","value","visit","website","winners","years"]
	},{
		"title": "The Tap Forms giveaway winners!",
		"url": "/2023/09/22/the-tap-forms-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Sep 22<span>nd</span>, 2023",
		"ts": "1695405600",
		"summary": "The Tap Forms giveaway has ended, and I have two winners to announce! (I swear the giveaway robot has no preference for last names starting with L. It&rsquo;s purely chance.) Each winner should have received an email with a redeem link/code, please let me know if you didn&rsquo;t hear anything! But I Didn&rsquo;t Win! If you didn&rsquo;t win, sorry, but Tap Forms is still worth checking out. You can easily store and work with any kind of data. It&rsquo;s the missing database app for Mac and iOS. If you didn&rsquo;t win, you can still save 30% on the direct version with the coupon . Go to the site and click the Buy Now for Mac button to use the coupon, or download the free trial version and enter the coupon when using the in-app purchase. Next up is CleanShot X (the best screenshot app there is). Check back every Monday through December for more giveaways. Upcoming apps include: If you want to suggest an app you&rsquo;d like to see in this series, let me know on Twitter or Mastodon, and join the email list for early access",
		"keywords": ["database","tapforms","check","cleanshot","coming","congratulations","curio","default","folder","forms","hazel","hookmark","jonathan","kaleidoscope","keyboard","laniado","lionetti","maestro","mastodon","monday","noteplan","scrivener","soulver","spamsieve","tamer","textexpander","timing","tower","twitter","upcoming","winners","access","announce","button","chance","checking","click","coupon","database","direct","download","easily","email","ended","enter","giveaway","giveaways","missing","names","preference","purely","received","redeem","robot","rsquo","screenshot","series","sorry","starting","store","suggest","swear","through","trial","using","version","winner","winners","worth"]
	},{
		"title": "Journal updates with weather types and conditional questions",
		"url": "/2023/09/20/journal-updates-with-weather-types-and-conditional-questions/",
		"tags": ["dayone","journal","journaling","markdown","weather"],
		"date": "Sep 20<span>th</span>, 2023",
		"ts": "1695221160",
		"summary": "In case you missed it, I recently released Journal, a CLI for keeping a journal with structured data that can be queried and analyzed. An update is live with a couple of nifty new features. First, instead of just a type of for a question (which inserts the current condition and daily forecast), you can now specify sub-types of and/or . This outputs separate data entries to the JSON, and creates individual answers in the Markdown/Day One versions. You can still just use as the type to insert all data. Second, you can now apply conditions to questions to determine whether they&rsquo;ll be asked or not when creating an entry. Right now only time-based conditions are implemented, but I plan to add some functionality around basing a question&rsquo;s appearance on the answer to a previous question, like \"if health rating is less than 5, display the health notes question.\" But for now you can add or to any question or section to only display the question(s) at certain times of day. I needed these conditions because I like to create a mood entry in the morning with data about sleep and coffee, and in the evening I don&rsquo;t want to repeat that data, but do want to ask some different questions about how the day went. I could create two separate journals for these, but this way I can compile all of my data in one file. Questions that are skipped get a null entry in the JSON, so when I&rsquo;m parsing I just test for nil and skip entries that don&rsquo;t contain the information I&rsquo;m trying to output. Unanswered questions don&rsquo;t get added to the Markdown/Day One entries at all. This release includes a couple of bug fixes as well. I recently removed the requirement for the CLI, if it doesn&rsquo;t exist it will now just use Readline for input. When using the inputs, you can&rsquo;t CTRL-c to cancel an entry, which I&rsquo;m trying to figure out a way around right now. Update using . Visit the project page for more info and installation instructions",
		"keywords": ["interrupt","first","journal","markdown","questions","readline","right","second","unanswered","visit","added","analyzed","answer","answers","appearance","apply","asked","based","basing","because","cancel","certain","coffee","conditions","contain","couple","create","creates","creating","daily","different","display","doesn","entries","entry","evening","exist","features","figure","fixes","forecast","functionality","health","implemented","includes","individual","information","input","inputs","inserts","installation","instructions","journal","journals","keeping","missed","morning","needed","nifty","notes","output","outputs","parsing","project","queried","questions","rating","recently","release","released","removed","repeat","requirement","right","rsquo","section","separate","skipped","sleep","specify","structured","times","trying","types","using","versions"]
	},{
		"title": "Tap Forms for Mac giveaway!",
		"url": "/2023/09/18/tap-forms-for-mac-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Sep 18<span>th</span>, 2023",
		"ts": "1695042000",
		"summary": "I&rsquo;m starting up giveaways again on BrettTerpstra.com, and I&rsquo;m exited to kick it off with 2 free licenses for Tap Forms for Mac. It&rsquo;s an amazing database product that lets you organize and access your data on any device. It&rsquo;s available on Mac, iPhone, iPad and even Apple Watch. This giveaway is specifically for the Mac version. Accounts, recipes, expenses, inventory — life is full of things that we don’t want to forget or misplace. Tap Forms helps you organize all kinds of things in one place — secure, searchable, and accessible on your Mac, iPhone, iPad, and Apple Watch. Sign up below to enter. Two winners will be randomly drawn on Friday, Sept 22, at 12pm Central. Tap Forms for Mac costs $49.99, so this is a great chance at saving $50! Sorry, this giveaway has ended. I reached out to my mailing list to see what products people were interested in, and Tap Forms was a top pick. I have several more developers lined up to offer free stuff, so stay tuned. If you have an app you&rsquo;d love to see featured, let me know. Also be sure to sign up for the mailing list so you can be the first to know about these",
		"keywords": ["database","forms","macos","accounts","apple","brettterpstra","central","check","forms","friday","giveaway","robot","sorry","watch","access","accessible","again","amazing","available","below","blockquote","brettterpstra","chance","class","contact","database","developer","developers","device","ended","enter","exited","expenses","featured","first","forget","giveaway","giveaways","great","height","helps","https","iphone","image","interested","inventory","kinds","licenses","lined","loading","mailing","media","misplace","noscript","offer","organize","original","people","picture","product","products","randomly","reached","recipes","rsquo","saving","screenshot","searchable","secure","several","sorry","source","specifically","srcset","starting","stuff","subscribe","tapforms","title","tuned","uploads","version","width","winners"]
	},{
		"title": "A silly Jekyll plugin and a big Marked sale",
		"url": "/2023/09/14/a-silly-jekyll-plugin-and-a-big-marked-sale/",
		"tags": ["jekyll","marked"],
		"date": "Sep 14<span>th</span>, 2023",
		"ts": "1694715240",
		"summary": "So, a long time ago I wrote this Jekyll plugin that does countdowns and I don&rsquo;t think I ever really used it. You just give it an end date and it inserts a countdown into the post. But I needed something to count down to, so I&rsquo;m running a 40% off Marked sale using the coupon until Saturday, September 16th. Here&rsquo;s your countdown: Did it work? I hope so. Use this link to apply the coupon directly, or enter at checkout. Learn more about Marked at marked2app.com",
		"keywords": ["checkout","markdown","jekyll","learn","marked","saturday","time&#39;s","apply","checkout","count","countdown","countdowns","coupon","directly","enter","inserts","marked","needed","plugin","rsquo","running","think","using","wrote"]
	},{
		"title": "So you think you know productivity? [Sponsor]",
		"url": "/2023/09/14/so-you-think-you-know-productivity/",
		"tags": ["productivity","sponsor","textexpander"],
		"date": "Sep 14<span>th</span>, 2023",
		"ts": "1694696400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! I can&rsquo;t count the number of hours I save using TextExpander. Oh wait, I can, because they email you a report every week to let you know&hellip; So you think you know productivity? Can you name 20 different productivity methods? Maybe you&rsquo;ve heard of the Pomodoro method, the 80/20 rule, or time blocking, but have you heard of Eat the Frog? Have you set SMART goals for 2024? Ever developed an Eisenhower Matrix? Over at the TextExpander blog, we&rsquo;ve cataloged 20 of these productivity habits. There are lots of ways to boost your productivity. One of the best ways to boost your productivity is through text expansion. Type something short and get something long. Do you find yourself writing the same emails repeatedly? Why? Let TextExpander handle it and save yourself hours and even days every year. Middle school teacher Mark Philips saved 18 hours in 2022 with TextExpander Peter van Teeseling, Executive Director of Dscoop, saved over 27 hours in 2022 with TextExpander Automattic saved 693 hours in three months TextExpander can handle short messages, emails, code, or pretty much any text you can throw at it, including formatted text and hyperlinks. Try it out free for 30 days. Check out TextExpander today and get 20% off using the code ",
		"keywords": ["habit","automattic","brettterpstra","check","director","dscoop","eisenhower","executive","matrix","maybe","middle","peter","philips","pomodoro","smart","teeseling","textexpander","thanks","applies","because","blocking","boost","cataloged","count","developed","different","email","emails","expansion","formatted","goals","habits","handle","heard","hellip","hours","hyperlinks","including","industry","involves","messages","method","methods","productivity","repeatedly","report","rsquo","saved","school","short","sponsoring","teacher","think","through","throw","today","typing","using","writing"]
	},{
		"title": "Journal and integrations",
		"url": "/2023/09/11/journal-and-integrations/",
		"tags": ["health","journal","journaling","markdown"],
		"date": "Sep 11<span>th</span>, 2023",
		"ts": "1694448600",
		"summary": "I&rsquo;ve made some changes to Journal (I didn&rsquo;t mess with the data format this time) that add some functionality and will maybe help with integrating with some apps like Obisidian. First, you can now define a type. Date entries will be parsed from natural language into date objects, so on the command line you can enter something like \"yesterday 5pm\" or \"july 20 12pm\" and get a proper date object added to your JSON and Markdown entries. Great for things like logging book review dates, workout days, etc. You can also now define a type for a question, which along with a definition creates a nested data set with any dot notation keys that match. So you can define the following: This allows for more control over the structured data. It won&rsquo;t be a big deal for most people as answers were already nested within section keys and could be grouped using dot syntax, this just allows the structure to go one level deeper which may help with building analytics tools. The big change that will allow more integrations with apps like Obsidian is that all numeric and date answers are now included as YAML front matter in any individual Markdown files created. This will allow integration with existing tools like Obsidian Dataview, which allows you to create data views based on YAML data in your Obsidian notes. By pointing Journal to your Vault folder, you can have journal entries added to your vault and queryable with Dataview. I haven&rsquo;t tested this, I just noted that it should be possible with the addition of the YAML data. For the time being I&rsquo;m not including any string responses in the YAML, as that seems redundant since they&rsquo;re also included in the body text and available to search. This update won&rsquo;t affect data saved to single Markdown files or added to Day One. If you have any ideas about how this could be made more useful, please let me know! Either via the Discussions or by contacting me directly. Version 1.0.19 is out now, just install or upgrade with . See the project page for more details",
		"keywords": ["markdown","obsidian","dataview","discussions","either","first","great","journal","markdown","obisidian","obsidian","vault","version","added","allow","allows","analytics","answers","available","based","building","change","changes","command","contacting","control","create","created","creates","dates","deeper","define","definition","details","directly","enter","entries","files","folder","format","front","functionality","grouped","haven","ideas","included","including","individual","install","integrating","integration","integrations","journal","language","level","logging","match","maybe","natural","nested","notation","noted","notes","numeric","object","objects","output","parsed","people","pointing","possible","project","proper","queryable","redundant","responses","rsquo","saved","search","section","seems","since","single","string","structure","structured","syntax","tested","tools","upgrade","useful","using","vault","views","within","workout","yesterday"]
	},{
		"title": "More na updates",
		"url": "/2023/09/09/more-na-updates/",
		"tags": ["productivity","search","tagging","taskpaper"],
		"date": "Sep 9<span>th</span>, 2023",
		"ts": "1694268000",
		"summary": "I&rsquo;ve put some more time into both Journal and . The latest version of represents quite a few hours of tinkering. See the na project page for full details. In case you&rsquo;ve missed in previously, is my command line tool for reading and modifying TaskPaper files in your projects. I think the biggest thing I&rsquo;ve added is theming. You can now control the colorized output of your actions using a file at . That file is automatically written by na if it runs and it doesn&rsquo;t exist, and once it&rsquo;s there, it should be pretty self explanatory. You can use type placeholders (that would make the following text yellow, a full list of color abbreviations is at the top of the file), and you can also use and codes to get specific colors outside of the usual ANSI coloring. I&rsquo;ve added new commands like (see ), and a new option to several commands for removing the @done tag from actions. There&rsquo;s also a flag you can tie into to perform (wildcard-compatible) search and replace. Add to do a regex search and replace. There&rsquo;s a bunch of other new stuff, so I&rsquo;ll just post the collected changelog. Global option can be configured to use full extension when displaying filenames, allowing for command-clicking to open in compatible terminals Tag command Add to to save more complex queries and run with (or just ) flag to allow interactive selection of search(es) Open the todos database in an editor with A theme file is written to ~/.local/share/na/theme.yaml where you can modify the colors used for all displays Allow TAG=~PATTERN comparison for regex matching in command to undo last change or last change to file specified in arguments (added &ndash;replace) When displaying actions wider than the screen, wrap at words and indent 2 spaces from start of action (after prefix) When not showing notes, add an asterisk at the end of an action When showing notes, indent to the beginning of the action Add to archive, complete, and update to move a modified action to a new project when saving Allow to handle multiple arguments Allow wildcards when deleting saved searches Refactor request for input, no change to user experience Refined wildcard (?*) handling Better error message for when no todo is matched If STDOUT isn&rsquo;t a TTY, don&rsquo;t enable pagination, regardless of global setting Disable pagination when using &ndash;omnifocus Allow &ndash;find or &ndash;grep as synonyms for &ndash;search&hellip;",
		"keywords": ["regex","allow","change","disable","display","editor","error","escape","fixed","global","improved","journal","pattern","refactor","refined","stdout","taskpaper","templating","abbreviations","action","actions","added","affected","allow","allowing","archive","arguments","asterisk","automatically","because","beginning","biggest","bunch","change","changelog","characters","clicking","codes","collected","color","coloring","colorized","colors","command","commands","comparison","comparisons","compatible","complex","configured","containing","contains","control","creating","database","default","defined","deleting","details","dirname","displaying","displays","doesn","editor","environment","error","exact","exist","experience","explanatory","extension","extracted","filenames","files","global","gracefully","handle","handling","highlighting","hours","hyphens","including","indent","input","interactive","interpreted","invalid","irregularities","latest","local","matched","matching","message","missed","modified","modify","modifying","multiple","ndash","negative","notes","occasional","omnifocus","output","outside","pagination","parenthesis","passed","placeholders","prefix","previously","project","projects","queries","reading","regardless","regex","removing","replace","represents","reserved","restored","rsquo","running","saved","saving","screen","search","searches","selection","setting","several","share","showing","spaces","specific","string","strings","stripping","stuff","synonyms","tagged","templated","terminals","theme","theming","think","thrown","tinkering","todos","tokens","triggered","using","values","variable","version","where","wider","wildcard","wildcards","words","written","yellow"]
	},{
		"title": "Timing -- automatic time tracking for Mac AND iOS [Sponsor]",
		"url": "/2023/09/07/timing-automatic-time-tracking-for-mac-and-ios-sponsor/",
		"tags": ["macos","recording","sponsor"],
		"date": "Sep 7<span>th</span>, 2023",
		"ts": "1694091600",
		"summary": "Thanks to Timing for sponsoring BrettTerpstra.com this week! I&rsquo;ve loved Timing for years, and the new vertical timeline view is an awesome upgrade to one of my most-used apps. Time is your most precious resource. You need to know how you are spending it. Timing fixes that. It automatically tracks all your time, without you lifting a finger: Timing records how long you use each app, document, and website — without start/stop timers. These timmes can also be automatically categorized using rules, so you don&rsquo;t have to do it manually. It imports your iPhone and iPad usage from Screen Time, giving you a complete picture of all your device usage. No other time tracking app for Mac does this! In addition, Timing will also import phone calls from your iPhone, so those don&rsquo;t get lost. The same goes for meetings you attend: Timing will automatically show events from your calendar, so you never forget to record time spent in meetings again. But even when a meeting isn&rsquo;t on your calendar, Timing automatically recognizes when a call ends and lets you record time for it, so that no meeting goes untracked. Similarly, when you return to your Mac after a break, Timing will ask you what you did during your time away. All of these features are optional and configurable, of course. And its brand-new vertical timeline makes it even easier to see what you did at a glance. Timing is the one time-tracking app that will really give you a complete picture of where your time goes, all while taking you much less time to maintain than other time trackers. Not convinced yet? Read what Brett himself has to say about Timing. (Spoiler alert: He likes it, and it helps him be more productive.) Or download the free 30-day trial today and get 10% off for the first year! And if you had tried Timing before and would like to give it another shot, feel free to reach out and we&rsquo;ll send you a new trial",
		"keywords": ["iphone","timing","brett","brettterpstra","screen","spoiler","thanks","timeline","timing","vertical","again","alert","another","automatically","awesome","before","brand","break","brett","brettterpstra","calendar","calls","categorized","class","configurable","contact","convinced","device","document","download","easier","events","features","finger","first","fixes","forget","giving","glance","height","helps","himself","https","iphone","image","import","imports","lifting","likes","loading","loved","macstories","maintain","makes","manually","media","meeting","meetings","nofollow","noscript","optional","original","phone","picture","precious","productive","reach","recognizes","record","resource","return","reviews","rsquo","rules","source","spending","spent","sponsoring","srcset","strong","taking","timeline","timers","timing","timingapp","timmes","title","today","trackers","tracking","tracks","trial","tried","untracked","upgrade","uploads","usage","using","vertical","website","where","while","width","years"]
	},{
		"title": "Important Journal CLI updates",
		"url": "/2023/09/07/important-journal-cli-updates/",
		"tags": ["health","journal"],
		"date": "Sep 7<span>th</span>, 2023",
		"ts": "1694091600",
		"summary": "First, if keys were nested using dot syntax, e.g. and , it would create a hash like: As you can see, the \"health\" key got doubled and nested inside of the section key. This isn&rsquo;t the way it was supposed to work with the dot syntax. Version 1.0.15 fixes this, if a key is repeated it&rsquo;s merged with the parent key instead of nesting. I also added options for defining custom folders to save entries in. At the top level you can include with a path to any folder on your system. Journals will all save to that folder with subdirectories for each of their keys. You can instead define within a journal definition, allowing each journal to have a custom location. JSON and Markdown will be written to these folders based on settings. That should help make this tool a bit more useful, sorry for changing the data format, but better sooner than later. Check out the project page for more details",
		"keywords": ["languages","lightweight","markdown","markup","check","first","journal","journals","markdown","version","added","allowing","based","before","changing","couple","create","custom","define","defining","definition","details","doubled","entries","everyone","fixes","folder","folders","format","health","inside","journal","later","level","location","merged","nested","nesting","options","parent","project","published","quick","repeated","rsquo","section","settings","sooner","sorry","subdirectories","supposed","syntax","system","trying","updates","useful","using","wanted","within","written","yesterday"]
	},{
		"title": "Journal, a CLI for journaling",
		"url": "/2023/09/06/journal-a-cli-for-journaling/",
		"tags": ["dayone","journal","markdown"],
		"date": "Sep 6<span>th</span>, 2023",
		"ts": "1693976400",
		"summary": "I recently started couple&rsquo;s therapy to try and improve the often-complicated relationship between myself (ADHD, bipolar) and my partner (autistic) and all of the unique problems that combination of neurodivergence presents. As part of this, I was asked to keep a journal containing certain data points. I started off journaling in Day One, but immediately realized that I was collecting some numeric data that I wouldn&rsquo;t be able to do anything with unless it was stored in a database format of some kind. So I wrote a tool. Journal is a command-line tool that takes a configuration of journals, sections, and questions, presents the questions on the command line, and records the answers to JSON, as well as optionally creating Day One and Markdown versions of the entries. It can handle numeric data, string and multiline input, as well as automatically recording the daily weather for each entry. To use it you need Gum installed (). If you want to use the Day One integration, you&rsquo;ll also need to install the Day One CLI. Those are the only prerequisites. You can just use to get the command set up. It can handle multiple journal configurations and multiple output formats. It takes some configuration, but it&rsquo;s very flexible (and will probably get more flexible as new needs arise). I haven&rsquo;t written the part of this that can query the datasets created yet. That&rsquo;s going to be pretty individualized based on your needs, but I think everything should be there in the JSON to allow tracking and correlations with a little statistical analysis work. I&rsquo;ll dig into it more once I&rsquo;ve collected enough data. In the meantime, it&rsquo;s also creating nicely-formatted Day One entries so I can get an overview of my moods and journals. See the project page for details on setup and configuration. Hopefully others will find this useful, too",
		"keywords": ["hopefully","journal","markdown","allow","answers","arise","asked","autistic","automatically","based","between","bipolar","certain","collected","collecting","combination","command","complicated","configuration","configurations","containing","correlations","couple","created","creating","daily","database","datasets","details","enough","entries","entry","everything","flexible","format","formats","formatted","going","handle","haven","improve","individualized","input","install","installed","integration","journal","journaling","journals","little","meantime","moods","multiline","multiple","myself","needs","neurodivergence","nicely","numeric","often","optionally","others","output","overview","partner","points","prerequisites","presents","problems","project","query","questions","realized","recently","recording","relationship","rsquo","sections","setup","started","statistical","stored","string","takes","therapy","think","tracking","unique","useful","versions","weather","wouldn","written","wrote"]
	},{
		"title": "A bit more na work",
		"url": "/2023/08/30/a-bit-more-na-work/",
		"tags": ["productivity","taskpaper"],
		"date": "Aug 30<span>th</span>, 2023",
		"ts": "1693414920",
		"summary": "I went on a trip to Minneapolis this weekend. It went really well; I saw some great friends, ate some great food, and spent some early mornings coding at the hotel. I was just coding to kill time when I couldn&rsquo;t sleep, and playing with seemed like the perfect way to do it. The first thing I did was take a second stab at \"decomposing\" the main binary so that each command had its own file, just to make maintenance easier. Finally got that working properly. It won&rsquo;t change anything for the user, but it&rsquo;s so much nicer to look at. In addition to the and commands I added last week, the command now has a flag that can be used to remove the @done tag from an action or actions. It&rsquo;s the same as using , but I find it just a little more intuitive. This flag is mirrored as an (or ) command. I also added pagination, so for output that is longer than your screen, it will now pause using or if available, letting you page through with shortcut keys. This also applies to the command, so it&rsquo;s easier to wade through the extensive documentation that the command provides. You can disable this with , a setting which can be saved to your config. I added an command to view @done actions. It accepts , , and flags that recognize natural language dates and can be combined. You can also use to find actions tagged with any combination of tags (use comma separated list or use the flag multiple times, include a to make a tag mandatory, to negate). Any arguments passed to the command will function as a tokenized text search. And, of course, you can run it with to save a complex search for later use with the command. Speaking of saved searches, I also changed the command to allow multiple saved searches to run at once. So now if you have a saved search for low priority and one for medium priority, you can run them both together with and get combined results",
		"keywords": ["search","tagging","check","detect","finally","minneapolis","missing","speaking","accepts","action","actions","added","allow","applies","arguments","available","before","binary","change","changed","coding","combination","comma","command","commands","comparisons","complex","config","convert","couldn","dates","decomposing","descriptions","details","disable","easier","examples","extensive","first","flags","friends","function","great","hotel","installation","intuitive","language","later","letting","little","longer","maintenance","medium","mirrored","mornings","multiple","natural","negate","nicer","output","pagination","passed","pause","playing","priority","project","properly","provides","recognize","remove","replacing","results","rsquo","saved","screen","search","searches","second","seemed","separated","setting","shortcut","sleep","space","spent","strings","tagged","through","times","together","tokenized","usage","using","weekend","working"]
	},{
		"title": "Stem the tide of unread emails with SaneBox Digest from SaneBox [Sponsor]",
		"url": "/2023/08/24/stem-the-tide-of-unread-emails-with-sanebox-digest-from-sanebox-sponsor/",
		"tags": ["email","sponsor"],
		"date": "Aug 24<span>th</span>, 2023",
		"ts": "1692882000",
		"summary": "Thanks to SaneBox for sponsoring BrettTerpstra.com again this week! I rely on my SaneBox Digest to get an overview of all the emails that (thankfully) skipped my inbox without having to wade through them all. Highly recommend! Drowning in a deluge of daily emails and struggling to keep up with the significant ones? Enter SaneBox Digest, an exceptional feature of SaneBox that offers you a concise summary of your email activity. Instead of constantly wading through piles of unimportant emails, the Digest provides you with a neat overview of your day&rsquo;s communications at a glance. More than just a quick recap, the Digest integrates flawlessly into your SaneBox journey. It delivers a daily or weekly email that lists your unread messages and summarizes their content, enabling you to pinpoint crucial communications without being overwhelmed by the inconsequential ones. Think of it as your inbox&rsquo;s personal news broadcaster, highlighting the headlines while filtering out the noise. With the Digest, you&rsquo;re empowered to take control of your emails and ensure you&rsquo;re always in the loop without the unnecessary clutter",
		"keywords": ["apple","digest","outlook","sanebox","brettterpstra","check","digest","drowning","enter","highly","sanebox","thanks","think","activity","again","broadcaster","clutter","communications","concise","constantly","content","control","crucial","daily","delivers","deluge","email","emails","empowered","enabling","exceptional","feature","filtering","flawlessly","glance","having","headlines","highlighting","inbox","inconsequential","integrates","journey","lists","messages","noise","offers","overview","overwhelmed","personal","piles","pinpoint","provides","quick","recap","recommend","rsquo","significant","skipped","sponsoring","struggling","summarizes","summary","thankfully","through","today","unimportant","unnecessary","unread","wading","weekly","while"]
	},{
		"title": "Some na updates and new commands",
		"url": "/2023/08/22/some-na-updates-and-new-commands/",
		"tags": ["productivity","prompt","regex","tagging","taskpaper"],
		"date": "Aug 22<span>nd</span>, 2023",
		"ts": "1692709200",
		"summary": "I&rsquo;ve updated na with some new stuff I thought I&rsquo;d share. First off, I wanted an easy way to archive all @done actions in one swoop without having to use a lot of flags and switches to locate them and move them. So I added an command, which takes a search string as an argument, but also has a switch that will archive all @done tasks. So you can just run , select the file to affect if there are multiple available, and presto, \"archive all finished\" is done, just like in TaskPaper. I also added a command that will add a @done tag to whatever action matches your search (menu provided for multiple results), or all matches using the switch. It&rsquo;s basically a shortcut for . It&rsquo;s aliased as as well. Both the and commands have a switch that allows you to add a note (prompted if there&rsquo;s nothing piped to it). All of the matching options from the command are available, including for searching by tag and for doing a regular expression search. has a switch that will simultaneously add a @done tag and move the action to the Archive. I know of a few people making extensive use of . If you&rsquo;re among them and have a feature request, don&rsquo;t be shy about posting an issue or contacting me directly",
		"keywords": ["command","utility","archive","check","first","taskpaper","action","actions","added","aliased","allows","among","archive","argument","available","command","commands","contacting","directly","doing","expression","extensive","feature","finished","flags","having","including","making","matches","matching","multiple","nothing","options","people","piped","posting","presto","project","prompted","regular","results","rsquo","search","searching","share","shortcut","simultaneously","string","stuff","switch","switches","swoop","takes","tasks","thought","updated","using","wanted","whatever"]
	},{
		"title": "Convert RegExRX native files to Markdown snippets",
		"url": "/2023/08/21/convert-regexrx-native-files-to-markdown-snippets/",
		"tags": ["markdown","regex","regexrx"],
		"date": "Aug 21<span>st</span>, 2023",
		"ts": "1692622800",
		"summary": "I love RegExRX for testing regular expressions. It has all the features I could want from such an app, including the ability to copy a working regex out prepared for a range of languages. It&rsquo;s what I&rsquo;ve stuck with for years. As I experiment with my regexes, I&rsquo;ll save them in RegExRX, creating a file in my Snippets folder (where Snibbets works). In order to make these searchable with Snibbets, I use a script to convert the XML-based file to a Markdown file with the flags, search string, and the replace string and test text if they exist. I turned this into a gem for anyone who should happen to run into such a need. You can install the tool with . Once installed, just use to output a bunch of Markdown files from a directory of files. You can also convert a single file just by providing a file link as the argument instead of a directory. There are options for manipulating the filename, the Markdown template, and the output directory. See the docs for more info. While I hope this is useful to someone, it was something I useful enough to me to invest the time in, so it&rsquo;s already paid off sufficiently. I just thought I&rsquo;d share&hellip; just in case",
		"keywords": ["snippet","markdown","regexrx","snibbets","snippets","while","ability","anyone","argument","based","bunch","convert","creating","directory","enough","exist","experiment","expressions","features","filename","files","flags","folder","happen","hellip","including","install","installed","invest","languages","manipulating","options","output","prepared","providing","range","regex","regexes","regular","replace","rsquo","script","search","searchable","share","single","string","stuck","sufficiently","template","testing","thought","turned","useful","where","working","works","years"]
	},{
		"title": "Kaleidoscope 4.1: Now with Git File History (and a special coupon) [Sponsor]",
		"url": "/2023/08/17/kaleidoscope-4-dot-1-now-with-git-file-history-and-a-special-coupon-sponsor/",
		"tags": ["sponsor"],
		"date": "Aug 17<span>th</span>, 2023",
		"ts": "1692277200",
		"summary": "Thanks to Kaleidoscope for sponsoring BrettTerpstra.com again this week! The addition of Git History diffing is excellent, and I&rsquo;m excited to share it with everybody. Review versions of text and image files &mdash; and even folders full of files &mdash; with the world’s most powerful file comparison app. Kaleidoscope gives you powerful tools to use at each stage of the development cycle. Now with version 4.1, Kaleidoscope continues to innovate by directly integrating with Git to show you a history for a single file. This makes it incredibly easy to track changes to a file over time. Check out this blog post for a detailed overview of how you can use this powerful new integration. As Michael Tsai wrote: \"&hellip; Kaleidoscope makes some of these tasks really easy. There are many ways to get it to open a single file, and then it automatically loads the history (and even the previous version, if you want). It’s easy to navigate the history to pick which versions you want to compare. I’ve seen many different apps implement this type of interface, and Kaleidoscope’s version may be the best.\" Syntax coloring, with multiple built-in themes. Transform any comparison into a merge document that can be edited inline. Text filters to clean up diffs by removing irrelevant data, such as time stamps, object addresses and unique identifiers. Kaleidoscope Prism, a new helper app in the menu bar to quickly launch comparisons even if Kaleidoscope is not running. Debugger integration for Python developers. File properties show metadata, including size, file type, dates, and encoding. A welcome window that speeds up the processes of creating new comparisons or finding recent ones. Subscriptions start at $8 per month for a yearly plan. Use the coupon code (valid until August 31, 2023) to get 20% off for the first year. Check it out today",
		"keywords": ["history","kaleidoscope","merge","brettterpstra","check","debugger","history","kaleidoscope","michael","prism","python","subscriptions","syntax","terpstra","thanks","transform","verwer","added","addresses","again","automatically","brettterpstra","brilliant","built","buttons","changes","class","clean","clicking","coloring","compare","comparison","comparisons","continues","coupon","creating","cycle","dates","detailed","developers","development","different","diffing","diffs","directly","document","edited","encoding","everybody","excellent","excited","exciting","features","files","filters","finding","first","folders","gives","height","hellip","helper","highlighter","history","https","identifiers","image","including","incredibly","inline","innovate","integrating","integration","interface","irrelevant","kaledoscope","kaleidoscope","language","launch","ldquo","loading","loads","makes","mdash","media","merge","metadata","missed","multiple","navigate","nofollow","noscript","object","original","overview","picture","plaintext","powerful","processes","properties","quickly","rdquo","recent","removing","rouge","rsquo","running","share","simple","single","source","speeds","sponsoring","srcset","stage","stamps","tasks","themes","through","title","today","tools","track","unique","uploads","valid","version","versions","welcome","width","window","world","wrote","yearly"]
	},{
		"title": "Web Excursions for August 14, 2023",
		"url": "/2023/08/14/web-excursions-for-august-14-2023/",
		"tags": ["bookmarks","coffee","cptsd","youtube"],
		"date": "Aug 14<span>th</span>, 2023",
		"ts": "1692029100",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. zmd: Access Handy Utilities and Services in CLI zmd (zmd.ee) is an experiment by Mighil. It hosts a bunch of handy ulities and services you can access in CLI via curl. BatchPhoto 5 Batch photo processing app BatchPhoto just released version 5, updated for modern platforms and OSs, and adding SFTP upload and hot folders. Instant Coffee – Bold Bean Coffee Roasters I&rsquo;ve been using this instant coffee when traveling for years. It won&rsquo;t beat a cup from your favorite brewing setup, but it beats the pants off of most coffees they offer in hotel rooms. Just add hot water and stir. Kelly R. Minter (Ask a Therapist) - YouTube Another great resource for CPTSD and RTS, with special interest in LGBTQ+ folks. Angel DeSantis - YouTube Angel is a YouTuber who grew up in an apocalyptic christian cult and offers tips on dealing with Religious Trauma Syndrome and Complex PTSD. I&rsquo;ve found her very helpful lately",
		"keywords": ["drinks","religious","syndrome","trauma","access","angel","angeldesantis","another","batch","batchphoto","brett","cptsd","cleanmymac","coffee","complex","desantis","handy","instant","kelly","kellyrminter","lgbtq","mighil","minter","religious","roasters","services","syndrome","therapist","trauma","utilities","youtube","youtuber","absolute","access","adding","apocalyptic","batchphoto","beats","boldbeancoffee","border","brettterpstra","brewing","brought","bunch","christian","class","coffee","coffees","collections","dealing","display","excursions","experiment","favorite","folders","folks","found","great","handy","height","helpful","hidden","holding","hosts","hotel","https","image","impactradius","instant","interest","loading","macpaw","media","modern","noscript","offer","offers","original","pants","partnership","photo","picture","platforms","position","processing","producthunt","released","resource","rooms","rsquo","services","setup","source","special","speed","srcset","style","title","tools","traveling","ulities","updated","upload","uploads","using","version","visibility","water","width","years","youtube"]
	},{
		"title": "Choosing the right prefix for your TextExpander snippets [Sponsor]",
		"url": "/2023/08/10/choosing-the-right-for-your-textexpander-snippets-sponsor/",
		"tags": ["mobile","snippet","sponsor","textexpander"],
		"date": "Aug 10<span>th</span>, 2023",
		"ts": "1691672400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Choosing the right prefix can be a real head scratcher, so Josh presents some great tips this week. Do you want to save time and typing with text shortcuts that can expand into anything you want? Whether it’s a simple email signature, a complex code snippet, or a personalized greeting, TextExpander can help you easily create and manage those snippets. But how do you choose a good prefix for your snippets? A prefix is a symbol or letter that you type before your snippet abbreviation to trigger the expansion. For example, if you have a snippet for your phone number with the abbreviation “phn”, you can use a prefix like comma comma (,,) to type “,,phn” and get your phone number instantly. Choosing a good prefix can make your Snippets more convenient and consistent. But different prefixes have different advantages and disadvantages. That’s why we asked some TextExpander experts &mdash; like Brett &mdash; to share their tips and tricks on how to choose the best prefix for your Snippets. Comma comma (,,): This prefix is easy to type and remember, and it doesn’t interfere with punctuation or grammar. However, it may not work well on mobile devices, where you have to switch keyboards to access the comma. Semicolon (;): This prefix is also easy to type and remember, but has the same mobile drawbacks as comma comma. Period (.): This prefix is very convenient and accessible, especially on mobile devices. However, it may interfere with sentences or URLs that end with a period, or with some programming languages that use it. X: This prefix easy to access on mobile but may cause unintended expansions. TextExpander works across all your devices and platforms, such as Windows, Mac, iOS, and Chrome. You can also sync your snippets across devices. And if you work on a team, you can share your snippets with your colleagues using TextExpander for Teams. So what are you waiting for? Try TextExpander today and see how much time and typing you can save with text shortcuts. You’ll be amazed by how much more productive and efficient you can be with TextExpander. Visit our website to learn more about TextExpander and get started with a free trial. Check out TextExpander today and get 20% off using the code . And don’t forget to check out our blog post for more tips on choosing a good prefix for your snippets",
		"keywords": ["metric","numeral","prefix","snippet","spamming","systems","wordpress","brett","brettterpstra","check","choosing","chrome","comma","effort","however","minimize","semicolon","snippets","terpstra","teams","textexpander","thanks","video","vimeo","visit","watch","windows","abbreviation","access","accessible","across","advantages","amazed","asked","before","bottom","brettterpstra","business","cause","check","choose","choosing","class","colleagues","comma","complex","consistent","container","convenient","create","devices","different","disadvantages","doesn","drawbacks","easily","efficient","email","especially","example","expand","expansion","expansions","experts","figure","forget","grammar","graphics","great","greeting","height","highlighter","https","image","instantly","interfere","keyboards","language","languages","learn","letter","loading","mdash","media","minimizeeffort","mobile","nofollow","noscript","original","padding","personalized","phone","picture","plaintext","platforms","player","prefix","prefixes","presents","productive","programming","punctuation","remember","right","rouge","scratcher","sentences","share","shortcuts","signature","simple","snippet","snippets","source","sponsoring","srcset","started","strong","style","switch","symbol","terpstra","textexpander","title","today","trial","tricks","trigger","typing","unintended","uploads","using","video","videoid","vimeo","waiting","website","where","width","works"]
	},{
		"title": "Orchard Resales: get yourself a Mac mini, cheap [Sponsor]",
		"url": "/2023/08/03/orchard-resales-get-yourself-a-mac-mini-cheap-sponsor/",
		"tags": ["macos","server","sponsor"],
		"date": "Aug 3<span>rd</span>, 2023",
		"ts": "1691067600",
		"summary": "Thanks to Orchard Resales for sponsoring BrettTerpstra.com this week! If you&rsquo;re looking for an older Mac mini to use as a server or entertainment center, you can pick up used 2012/2014 models dirt cheap! I use a 2012 Mac mini as a basement server, running headless (no keyboard or monitor) and controlled over screen sharing. It runs Docker (and a few containers that give me things like network speed charts and VPN tunneling), Plex, and all of my home automation with all of my controllers hooked up to its USB ports. I also have a Synology, but you can easily set up file storage and serving with a Mac mini and a big external RAID drive. The one I run in my basement is a 2012 with a 500GB SSD and 16GB RAM. I&rsquo;ve never needed to upgrade it any further to get everything I need out of it. Want to set up your own, or have another use in mind for an old mini? Well, thanks to Orchard Resales you can pick one up for as little as $50 US. Deck one out with 16GB of RAM and an SSD and you&rsquo;ll come out around $100. For a whole server, and it&rsquo;s as easy to set up as using a Mac. And if you need spare parts, you can get non-functional Mac minis starting at just $15. No, these can&rsquo;t run the latest macOS, but for 99% of uses, they don&rsquo;t need to, and if you&rsquo;re really into it, you can use OpenCore Legacy Patcher to get all the functionality you need. Check out Orchard Resales today and get started with your own server! Or buy a bunch and make a server farm",
		"keywords": ["drive","macos","solid","brettterpstra","check","docker","legacy","opencore","orchard","patcher","resales","synology","thanks","another","automation","basement","bunch","center","charts","cheap","containers","controlled","controllers","drive","easily","entertainment","everything","external","functional","functionality","headless","hooked","keyboard","latest","little","looking","macos","minis","models","monitor","needed","network","older","parts","ports","rsquo","running","screen","server","serving","sharing","spare","speed","sponsoring","started","starting","storage","thanks","today","tunneling","upgrade","using","whole"]
	},{
		"title": "Sanebox: your email lifesaver [Sponsor]",
		"url": "/2023/08/01/sanebox-your-email-lifesaver/",
		"tags": ["sponsor"],
		"date": "Aug 1<span>st</span>, 2023",
		"ts": "1690901100",
		"summary": "Thanks to Sanebox for sponsoring BrettTerpstra.com again this week! I&rsquo;ve been using it for years and I can&rsquo;t imagine my email inbox without it. Drowning in emails? Enter SaneBox &mdash; your lifesaver. It&rsquo;s a VIP service that sifts through your inbox, separates the important from the trivial, and serves up a neat digest. It works with any email provider, saving you 12+ precious hours every month. But that&rsquo;s not all. Fed up with pesky marketers? SaneBlackHole sends them packing with one click. Worried about forgotten follow-ups? SaneReminders has got your back. Too many non-urgent emails? Just hit the SaneSnooze button. And those countless attachments? SaneAttachments organizes them in your Dropbox, Evernote, Box - you name it. TechCrunch, Forbes, The New York Times, all vouch for it. Sign up today and save $25 on any subscription. It’s about time we tamed our inboxes",
		"keywords": ["apple","email","evernote","outlook","banner","brettterpstra","dropbox","drowning","enter","evernote","forbes","saneattachments","saneblackhole","sanebox","sanereminders","sanesnooze","sanebox","techcrunch","thanks","times","worried","again","attachments","brettterpstra","button","class","click","countless","digest","email","emails","forgotten","height","hours","https","image","imagine","important","inbox","inboxes","lifesaver","loading","marketers","mdash","media","nofollow","noscript","organizes","original","packing","pesky","picture","precious","provider","rsquo","sanebox","saving","sends","separates","serves","service","sifts","source","sponsoring","srcset","subscription","tamed","through","title","today","trivial","uploads","urgent","using","vouch","width","works","years"]
	},{
		"title": "Personal update: CPTSD edition",
		"url": "/2023/07/30/personal-update-cptsd-edition/",
		"tags": ["learning","personal"],
		"date": "Jul 30<span>th</span>, 2023",
		"ts": "1690747440",
		"summary": "I&rsquo;m afraid you&rsquo;ve been seeing a lot of sponsored posts and not enough posts from me lately, so I thought I&rsquo;d try to explain why. After a relationship in my life was destabilized and I had an outsized reaction to it, I started trying to figure out what was going on with me. I was pointed toward Complex PTSD and from there I discovered that Religious Trauma Syndrome, while not a part of the DSM, was a recognized thing, and that the causes and symptoms fit me perfectly. I&rsquo;ve spent the last couple of weeks trying to unpack what this means for me. So much of the me I&rsquo;ve come to know is explained by this: my attention issues, my memory problems, my emotional dysregulation, my drug addictions, and even my Bipolar Disorder can all be tied to RTS and CPTSD. I grew up as a \"different\" kid in a fundamentalist church. As a young child I had urges and thoughts that I constantly feared would send me to hell. When I wasn&rsquo;t worried about my eternal soul, I was worried about my non-Christian friends and their eternal souls. By the time I was in Middle School I was drinking and trying to cope with what amounts to a constant fight or flight response, in addition to grief. Being neurodivergent, queer, and highly sensitive was not a good combination for me in the church I grew up in. And I was taught to put all of my value, all credit for my successes, and all forms of attachment into God, not earthly things. So when I decided the church wasn&rsquo;t good for me (or, in my mind, for anyone), I had the secondary trauma of leaving. Becoming emotionally estranged from my family, losing my Christian friends, and losing a god, the one thing that I had ever believed could save me. I still have a lot to learn about attachment theory, but it&rsquo;s safe to say that I never felt securely attached to any people in my life, from my earliest memories. Which, to be fair, are very sparse, because a symptom of CPTSD is amnesia, if I understand it correctly. I&rsquo;ve always wondered why everyone else remembered so many things from their younger years and I only had occasional memories of moments. Not events, not periods, nothing substantial, only snippets. I couldn&rsquo;t remember who was there, how I felt about them, only whether I felt safe or scared in that moment. And most of what I remember is feeling scared. I started therapy with a new counselor last week. She actually has a psychology PhD and does trauma-informed therapy, and I think&hellip;",
		"keywords": ["complex","religious","syndrome","therapy","trauma","becoming","bible","bipolar","cptsd","christian","christians","complex","disorder","faith","hopefully","middle","religious","saturday","school","syndrome","trauma","youtube","accept","addictions","afraid","against","agnostic","almost","amnesia","amounts","anyone","asshole","atheist","attached","attachment","avoided","battle","because","behind","believe","believed","believing","blame","breakfast","capital","causes","child","childhood","church","coincidence","combination","constant","constantly","constitutionally","correctly","couldn","counselor","couple","credit","decided","declared","defined","definitely","depend","destabilized","develop","different","disassociate","discovered","doesn","doomed","drinking","dysregulation","earliest","earthly","emotional","emotionally","enough","estranged","eternal","eternity","events","everyone","exhausting","exist","expect","explain","explained","external","family","feared","feeling","fight","figure","flailing","flight","forced","forms","fought","friends","frightened","fundamentalist","going","grapple","grief","guess","happening","haven","having","heart","helpful","heresy","highly","hopes","hospital","hours","incapable","informed","ingrained","insecurities","interest","issues","learn","learned","leaving","looking","losing","makes","making","mdash","memories","memory","mistake","moments","morning","moving","multiple","myself","nervous","neurodivergent","nothing","occasional","outsized","parents","people","perfectly","periods","person","pointed","posts","prayed","problems","psychology","queer","raised","reacting","reaction","reading","realize","recognized","reestablish","relationship","religion","remember","remembered","repeating","response","rsquo","scared","secondary","sects","securely","security","seeing","sensitive","serious","seriously","shoulder","since","snippets","souls","sources","sparse","specific","spent","sponsored","started","stopped","stronger","successes","successfully","symptom","symptoms","system","taught","teens","theist","theory","therapist","therapy","think","thought","thoughts","times","tools"]
	},{
		"title": "BetterTouchTool: Introducing floating menus [Sponsor]",
		"url": "/2023/07/20/bettertouchtool-introducing-floating-menus-sponsor/",
		"tags": ["bettertouchtool","customization","sponsor"],
		"date": "Jul 20<span>th</span>, 2023",
		"ts": "1689858000",
		"summary": "Thanks to BetterTouchTool for sponsoring BrettTerpstra.com this week! I am a huge fan of BetterTouchTool and use it all day every day on my Mac. I wouldn&rsquo;t know what to do without it. From customizing my keyboard shortcuts to adding infinite gestures to my trackpad to running my entire Stream Deck setup, there&rsquo;s nothing this little utility can&rsquo;t do. I think BetterTouchTool is well known to readers of this blog (thanks Brett!), so I won&rsquo;t go into the details of the many things you can do with it. Instead I want to promote a powerful new feature that has been added to BTT recently and is currently in beta phase: Floating Menus. Imagine them as highly flexible, widget-like menus that you can place virtually anywhere on your screen.  You can attach them to specific positions in specific windows, to specific screens, the current mouse position and many more. You can specify whether they float on top, stick them to your desktop or have them behave like normal windows (and more).  They can always be visible, expand on mouse hover or be shown/hidden via any trigger in BTT. A Floating Menu contains either standard buttons, or widgets like sliders or even web view items. Their appearance is completely customizable. All items are fully scriptable via AppleScript or Javascript, and soon there will be a plugin system to load custom widgets. The Floating Menus will soon become the basis for numerous existing BetterTouchTool features, such as Stream Deck and Notch Bar support and several predefined actions. These will gradually transition to utilize the Floating Menu rendering and scripting engine making them more flexible and robust by streamlining maintenance & future development. Additionally, the upcoming (entirely new) version of the iOS BTT Remote app will be capable of rendering your custom Floating Menus on your iPhone or iPad.  You can find various Floating Menu examples on share.folivora.ai. For example have a look at the Notch menu, which is invisible by default but expands from your Macbook&rsquo;s Notch on hover. Another nice example is the \"Mini Emoji Menu\" preset: it places a little transparent dot on the left edge of the active window, which, when hovered, shows multiple custom emoji which you can insert by clicking. The documentation for this new feature is already available, and you can always come to the community site to discuss or request features. Now that I have a solid working base, I can easily built on it&hellip;",
		"keywords": ["applescript","emoji","graphical","hyperlink","interfaces","widget","additionally","another","applescript","btbtt","bettertouchtool","brett","brettterpstra","emoji","floating","imagine","javascript","macbook","menus","notch","remote","stream","thanks","actions","active","added","adding","anywhere","appearance","attach","available","basis","behave","brettterpstra","built","buttons","capable","class","clicking","community","completely","contains","coupon","custom","customizable","customizing","default","desktop","details","development","easily","either","emoji","engine","entire","entirely","example","examples","expand","expands","feature","features","flexible","float","floating","floatingmenus","folivora","fully","gestures","gradually","height","hidden","highlighter","highly","hover","hovered","https","iphone","image","infinite","invisible","items","keyboard","language","ldquo","license","little","loading","maintenance","making","media","menus","mouse","multiple","nofollow","normal","noscript","nothing","original","phase","picture","places","plaintext","plugin","position","positions","powerful","predefined","preset","promote","rdquo","readers","recently","rendering","report","robust","rouge","rsquo","running","screen","screens","scriptable","scripting","setup","several","share","shortcuts","shown","shows","sliders","solid","source","specific","specify","sponsoring","srcset","standard","stick","streamlining","support","system","thanks","think","title","trackpad","transition","transparent","trial","trigger","upcoming","uploads","utility","utilize","various","version","visible","widget","widgets","width","window","windows","working","wouldn"]
	},{
		"title": "TextExpander: maybe you can buy more time [Sponsor]",
		"url": "/2023/07/13/maybe-you-can-buy-more-time-sponsor/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Jul 13<span>th</span>, 2023",
		"ts": "1689253200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! I recently had a great time doing a panel about my use of TextExpander for the TextExpander Virtual Summit, and got to talk about how I&rsquo;ve been using TextExpander since the very beginning, tips I&rsquo;ve learned, and which of my snippets are my favorites. I&rsquo;ll share some more of those here soon. Time is something you can never buy more of. Or is it? Do you have too much on your plate? Are you so busy that you don’t have time for the things that really matter to you? Being busy isn’t necessarily a good thing, but there is one word that can free up your time and focus: no. But many of us have a hard time saying no. With the help of productivity expert David Sparks, we created a Snippet that produces a different variant of \"no\" every time you type . TextExpander can do that because it supports advanced scripting with JavaScript, AppleScript, and shell scripts. With a little bit of coding knowledge, you can run wild with Snippets. The only limit is your imagination. We created that Snippet as part of David’s talk at our recent Virtual Summit, where he talked about intentionally using your time. One of David’s many lessons is that every time you say \"yes\" to something, it means saying \"no\" to something else. That’s just one small way TextExpander can save you time. Many customers save several work days yearly with simple Snippets for their name, email address, and common email replies. Starting at just $3.33 per month for individuals and $8.33 per month for teams, TextExpander can give you back time, the one thing you normally can&rsquo;t buy for any price. Check out TextExpander today and get 20% off using the code . Speaking of Brett, be sure to check out the recording of his appearance at our Virtual Summit panel",
		"keywords": ["applescript","email","snippet","applescript","brett","brettterpstra","check","david","javascript","snippet","snippets","sparks","speaking","starting","summit","terpstra","textexpander","thanks","virtual","address","advanced","appearance","because","beginning","brettterpstra","check","class","coding","common","create","created","customers","different","doing","email","expert","favorites","focus","graphics","great","group","height","highlighter","https","image","imagination","individuals","intentionally","knowledge","language","ldquo","learned","lessons","limit","little","loading","media","necessarily","nofollow","normally","noscript","original","panel","picture","plaintext","plate","price","produces","productivity","random","rdquo","recent","recently","recording","replies","responses","rouge","rsquo","saying","scripting","scripts","several","share","shell","simple","since","small","snippets","source","sponsoring","srcset","summit","supports","takeyourtimeback","talked","teams","terpstra","textexpander","title","today","uploads","using","variant","virtual","where","width","yearly"]
	},{
		"title": "Web Excursions for June 29, 2023",
		"url": "/2023/06/29/web-excursions-for-june-29-2023/",
		"tags": ["bookmarks"],
		"date": "Jun 29<span>th</span>, 2023",
		"ts": "1688057880",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Post-Twitter Diaspora Options Some opinions on Mastodon and Bluesky. Personally I wish ill of Bluesky and have high hopes for Mastodon. But I&rsquo;m certain it won&rsquo;t pan out like that. Brave Search No Longer Using Bing A Michael Tsai two-fer this week. Their own index, based on Tailcat, is working better than DuckDuckGo/Bing for me now. Hopefully, Apple will add built-in support to Safari. Worth testing out, even if Brave isn&rsquo;t going to be my primary browser&hellip; Xnapper I&rsquo;m still a die-hard CleanShot fan, but this little tool makes some gorgeous screenshots ready for social sharing, with tools for auto-balancing, changing backgrounds, and redacting email addresses and other text. Simple and beautiful. Pixabay A large collection of excellent royalty-free photos and audio tracks. LaunchBar/Ask-ChatGPT A ChatGPT LaunchBar action. Allows continuing conversation, predefined prompts, clipboard interaction, and can open results as a Markdown file ready for use",
		"keywords": ["brave","chatgpt","mastodon","screenshot","twitter","xnapper","allows","apple","bluesky","brave","chatgpt","check","cleanshot","diaspora","duckduckgo","hopefully","launchbar","longer","markdown","mastodon","michael","options","personally","pixabay","safari","search","setapp","simple","tailcat","twitter","using","worth","xnapper","access","action","addresses","audio","backgrounds","balancing","based","beautiful","brought","browser","built","certain","changing","clipboard","collection","continuing","conversation","email","excellent","excursions","going","gorgeous","hellip","hopes","hundreds","index","interaction","little","makes","monthly","opinions","partnership","photos","predefined","primary","prompts","ready","redacting","results","royalty","rsquo","screenshots","sharing","social","subscription","support","testing","today","tools","tracks","working"]
	},{
		"title": "Sanebox, your email concierge [Sponsor]",
		"url": "/2023/06/29/sanebox-your-email-concierge-sponsor/",
		"tags": ["email","sponsor"],
		"date": "Jun 29<span>th</span>, 2023",
		"ts": "1688043600",
		"summary": "As I&rsquo;ve said before, I&rsquo;m a long time user and lover of Sanebox. Thanks to them for sponsoring again this week. Here&rsquo;s a user story from Thomas Yuan. Well, here&rsquo;s a funny thing: I started using SaneBox because my email was an utter disaster, and I needed something to save me from the deluge. Little did I know that I was stepping into a world where email isn’t just manageable, it&rsquo;s&hellip; well, sane. I know, I know&hellip; SaneBox is like having your own personal email concierge. It&rsquo;s not just a filter - oh no, that&rsquo;s underselling it. It&rsquo;s like a highly-trained butler who goes through your mail, knows what&rsquo;s important, and presents you with only the choicest pieces of correspondence. Everything else? Neatly sorted away, out of sight, out of mind. Setting up SaneBox is as easy as pie. And I&rsquo;m not talking about some complicated lattice-top apple pie here. I mean one of those simple, comforting pumpkin pies. You just connect your email account, and voila, SaneBox starts its magic. It learns from your actions, your patterns, tailoring its sorting to your specific needs. Now, the main feature here is the @SaneLater folder. It&rsquo;s like a second inbox, except it&rsquo;s where all the non-urgent emails go to hang out. Newsletter from that one store you bought socks from 3 years ago? That&rsquo;s a @SaneLater item. Automated system alert about a software update? You bet that&rsquo;s going in @SaneLater. What&rsquo;s more, you can customize it to your heart&rsquo;s content. There&rsquo;s @SaneBlackHole for those pesky emails you never want to see again, and @SaneNews for newsletters and the like. You can even create your own folders, and SaneBox will learn to sort your emails accordingly. And don&rsquo;t get me started on @SaneReminders. Ever sent an email and needed a reminder if nobody replies? Just CC or BCC to 1week@sanebox.com, and if there&rsquo;s no reply in a week, it pops back up in your inbox. It&rsquo;s like a boomerang made out of pure organizational power. Sure, there are other email management tools out there. But SaneBox stands out for its simplicity, its flexibility, and, most of all, its effectiveness. It&rsquo;s like it took my unruly, wild-west email inbox and turned it into a sleek, streamlined, email-answering machine. And, in a world where every spare minute counts, who wouldn&rsquo;t want that? So, if you&rsquo;ve got an email inbox that&rsquo;s more like a black&hellip;",
		"keywords": ["apple","nofollow","outlook","sanebox","automated","check","everything","little","neatly","newsletter","saneblackhole","sanebox","sanelater","sanenews","sanereminders","sanebox","setting","thanks","thomas","account","actions","affordable","again","alert","answering","apple","banner","because","before","black","boomerang","bought","brettterpstra","butler","center","change","cherry","choice","choicest","class","comforting","commitment","complicated","concierge","connect","content","control","correspondence","counts","create","customize","deluge","difference","digital","disappointed","disaster","effectiveness","efficient","email","emails","except","experience","explore","extension","feature","filter","flexibility","flexible","folder","folders","funny","going","guides","having","heart","height","hellip","helped","highly","https","image","important","inbox","inexpensive","knows","lattice","learn","learns","lifestyle","living","loading","lover","machine","magic","manageable","management","media","minute","monthly","needed","needs","newsletters","nobody","nofollow","noscript","offers","organizational","original","packed","patterns","personal","pesky","picture","pieces","plans","presents","promise","pumpkin","reminder","replies","reply","rsquo","sanebox","second","sight","simple","simplicity","sleek","socks","software","sorted","sorting","source","spare","specific","sponsoring","srcset","stands","started","starting","starts","stepping","store","story","streamlined","subscription","sundae","system","tailoring","talking","through","title","today","tools","trained","trial","turned","underselling","unruly","unsure","uploads","urgent","useful","using","utter","voila","where","whirl","width","world","wouldn","years"]
	},{
		"title": "Remembering Yeti",
		"url": "/2023/06/27/remembering-yeti/",
		"tags": ["personal"],
		"date": "Jun 27<span>th</span>, 2023",
		"ts": "1687882740",
		"summary": "My cat died a couple weeks ago. I had him for 20 years and he&rsquo;s left a large hole in my life. I know not everybody gets cats the way cat people do, but he was honestly one of my closest friends. I just wanted to write a bit about him now that the grief is a bit less raw and just remember him for the legend he was. My ex and I were around when Yeti&rsquo;s mom had her litter. She had health problems and sadly had to be euthanized shortly after Yeti and his siblings were weaned. I had my pick of the litter. I had recently lost a tuxedo cat (Trouble) to a pit bull attack, and thought I&rsquo;d take the one tuxedo in the litter. Aditi&rsquo;s mom suggested I also take this one bashful kitten who had a hairline similar to mine. I agreed. Jezebel (the Tuxedo) became Aditi&rsquo;s cat, and Yeti almost immediately became very bonded to me. I&rsquo;ve always been thankful I was talked into taking him. Both Yeti and Jezebel were polydactyl, and Yeti&rsquo;s front paws had six toes each. I almost named him Big Foot, but given his long, thick white hair, \"Yeti\" seemed more apropos. Yeti displayed what can only be anthropomorphized as \"empathy.\" He always understood when I was sad or sick and would lay by me, placing one paw on my thigh, or curl up on the couch behind me and put his paw on my shoulder. And when I was happy or comfortable, he would be in my lap. He loved to sit facing me with his paws on my chest and give me nose bumps. He learned very young that licking my nose repeatedly was a bit painful, and would just give one lick or tap and then stop. Speaking of understanding pain, Yeti learned at a very young age that his claws and teeth hurt me, and after he got past the part of his life where he would try to climb my leg with his sharp little kitten claws, he never bit or scratched anybody, ever. I once held him while a urinary crystal was removed through his urethra; he held onto my arm and yowled, but never clawed or bit, which was impressive. I think if someone was squeezing a rock through my private bits I would probably try to bite the nearest arm I could. Jezebel passed away under the care of Aditi a few years back. We honestly never expected Yeti to outlive her, but he lived to 19 years and 9 months and I enjoyed every minute of it. I&rsquo;ve spent more time with Yeti than with any human in my entire life. He was always around. I never even saw my parents that much from 0-18. And I&rsquo;ve never had a romantic&hellip;",
		"keywords": ["mourning","aditi","friday","jezebel","saturday","seriously","speaking","thursday","trouble","tuxedo","accepted","agreed","almost","anthropomorphized","anybody","appreciate","apropos","asleep","attack","bashful","became","behind","beloved","bonded","breaths","bumps","caring","chest","clawed","claws","climb","closest","comfortable","consider","couch","couple","covers","crawled","crystal","decision","devastated","displayed","dozen","empathy","ending","energetic","enjoy","enjoyed","entire","eternally","euthanized","eventually","everybody","exhaled","expected","expecting","facing","fairy","family","fight","friends","front","goodbye","grateful","great","grief","hairline","happy","health","heart","hellip","helped","himself","honestly","horrible","human","humans","imagine","impressive","kidney","kitten","laptop","learned","legend","licking","litter","little","lived","living","longer","longest","loved","loving","middle","minute","missing","misunderstanding","moved","named","nearest","nearly","night","office","outlive","painful","pancreatitis","parents","partner","passed","patience","peaceful","peacefully","people","person","pictures","placing","plenty","polydactyl","pounds","prepare","prime","private","problems","recently","relationship","remember","removed","repeatedly","returned","right","rolled","romantic","rsquo","sadly","scares","scratched","seemed","sharp","shortly","shoulder","siblings","similar","spent","squeezing","stayed","suggested","taking","talked","teeth","thankful","thick","thigh","think","thought","through","times","together","tribute","tuxedo","under","understanding","urethra","urinary","video","waited","wanted","weaned","weeks","where","while","white","worked","worth","write","years","young","yowled"]
	},{
		"title": "Snibbets 2.0.34",
		"url": "/2023/06/17/snibbets-2-dot-0-34/",
		"tags": ["snibbets","snippet"],
		"date": "Jun 17<span>th</span>, 2023",
		"ts": "1687012980",
		"summary": "I released a new version of Snibbets this morning that solves one peculiarity: if you have multiple snippets in one file but any of them don&rsquo;t contain code blocks, then the titles and display would get weird. Now you can have sections of a snippet file (separated by ATX headers) that contain just notes. If a section contains just notes and no code, then the notes will be output for that section, even when not using or having set in config. This just allows for uses of Snibbets as both a note reference and a snippet manager. It probably won&rsquo;t effect people who are using it \"as intended,\" but opens up new use cases. To get the latest version, use . See the project page for more details",
		"keywords": ["rubygems","snibbets","allows","blocks","config","contain","contains","details","display","having","headers","intended","latest","manager","morning","multiple","notes","opens","output","peculiarity","people","project","released","rsquo","section","sections","separated","snippet","snippets","solves","titles","using","version","weird"]
	},{
		"title": "Free up some time with TextExpander [Sponsor]",
		"url": "/2023/06/08/free-up-some-time-with-textexpander-sponsor/",
		"tags": ["sponsor","textexpander"],
		"date": "Jun 8<span>th</span>, 2023",
		"ts": "1686229200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! What would you do with a little more time in your week? Repetitive typing, little mistakes, searching for answers – they’re all taking precious minutes from you and your team. With TextExpander, you can take back your time so you can focus on what matters most in your business. The way we work is changing rapidly. Make work happen wherever you are by saying more in less time and with less effort using TextExpander. TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["snippet","brettterpstra","chrome","repetitive","textexpander","thanks","visit","windows","accurate","answers","available","brettterpstra","business","campaign","changing","class","consistent","effort","first","focus","graphics","happen","height","https","iphone","image","learn","little","loading","matters","media","medium","message","minutes","mistakes","nofollow","noscript","original","picture","podcast","precious","productive","rapidly","readers","saying","searching","source","sponsoring","srcset","takeyourtimeback","taking","terpstra","textexpander","title","typing","uploads","using","wherever","width"]
	},{
		"title": "Doing with multiple sections",
		"url": "/2023/06/03/doing-with-multiple-sections/",
		"tags": ["doing"],
		"date": "Jun 3<span>rd</span>, 2023",
		"ts": "1685811240",
		"summary": "Funny story: I got a feature request for mdless to allow multiple sections to be specified in the output, but I misread the notification as a request for Doing. So I spent a couple hours adding multiple section handling to an array of Doing commands and happily reported the result to the user, who was very confused by the version number I gave him. I apologized and have now added multiple section handling to mdless, which was a lot less work than adding it to Doing. So I might as well write a blog post about the Doing feature nobody asked for, I guess. Most of Doing&rsquo;s many commands allow for the specification of a particular section, e.g. the command can limit its results to just one section, or the command can tag the last X entries from a given section. Now, almost all of these commands can take multiple sections, either specified as or by using multiple flags in the same command, e.g. . This allows a little more flexibility, especially for display commands. It also means you can perform actions on a more limited set of entries without limiting it to just a single set. It (obviously) doesn&rsquo;t apply to the command or other entry commands because an entry can only be in one section. By the way, section names are fuzzy matched, so you can specify that you want results from both Currently and Later (assuming you have such sections) with . If I expand this further, I&rsquo;ll allow negative arguments as well, such as to exclude the Archive section. But for now it&rsquo;s just multiple sections. That&rsquo;s all for now, just figured I&rsquo;d mention it since I put the effort into it. You can update to the latest with (which might require , depending on your setup)",
		"keywords": ["productivity","tracking","archive","doing","funny","later","actions","added","adding","allow","allows","almost","apologized","apply","arguments","array","asked","assuming","because","command","commands","confused","couple","depending","display","doesn","effort","either","entries","entry","especially","expand","feature","figured","flags","flexibility","fuzzy","guess","handling","happily","hours","latest","limit","limited","limiting","little","matched","mdless","mention","misread","multiple","names","negative","nobody","notification","output","particular","reported","results","rsquo","section","sections","setup","since","single","specification","specify","spent","story","using","version","write"]
	},{
		"title": "Some Ultimate Hacking Keyboard configuration tips",
		"url": "/2023/05/27/some-ultimate-hacking-keyboard-configuration-tips/",
		"tags": ["customization","keyboard"],
		"date": "May 27<span>th</span>, 2023",
		"ts": "1685208000",
		"summary": "This post will only be of interest to those using the Ultimate Hacking Keyboard (UHK), specifically with the lefthand key cluster module. I recently added some customizations I thought might be worth mentioning to those who happen to have this setup. For those who don&rsquo;t, maybe read on and be tempted by the possibilities&hellip; The latest version of the Agent software for the UHK allows the definition of up to four additional Function layers, or sets of keys that are mapped when a modifier is held down. You&rsquo;re probably used to the Mod layer, which is how you turn I/J/K/L into arrow keys, etc. when you hold the Mod key, and the Fn layer, which turns 1 into F1 when you hold the Fn key. By clicking the down arrow on the layer bar, you can now check boxes next to Fn2-Fn5 layers to enable them. Then you can assign keys to trigger them, which is where the key cluster module comes in. The key cluster module provides 3 extra keys to the right of your B key and Space key (by default it&rsquo;s the Mod key, but I swap my Mod and Space keys). I initially assigned these to ⌘+R on the top (⌘+B when Mod is held, creating Run and Build buttons in Xcode and other IDEs, and a Refresh button in most other apps), and Enter and Backspace on the bottom two keys (Numpad Return and Forward Delete when Mod or Fn is held). But then I realized they could further function as triggers for other layers. You can assign a secondary function to any key, which is an action that&rsquo;s performed when it&rsquo;s held while another key is pressed. For example, I change the default Mouse key into Caps Lock (which becomes my Hyper key along with Karabiner Elements), and use the secondary function on the Tab key so that when it&rsquo;s held in combination with other keys, it triggers the Mouse layer. The bottom left key of the module is a very natural reach for the left thumb, and was the first layer I created. I added a Fn2 layer, and then assigned the secondary function of that key to trigger the Fn2 layer when held. Now I can map anything on the right side, and on the left side I can map anything easily reached by my remaining fingers when my left thumb is holding the module key down. I assigned A-G (home row) keys to F20-F24, which I then use with BetterTouchTool to trigger actions. I also assigned the block of keys from Y-O down to N-. on the right side to produce characters I commonly use in coding, such as curly/square/angle brackets. It took a while to get used&hellip;",
		"keywords": ["customization","hacking","keyboard","layer","mechanical","ultimate","agent","backspace","bettertouchtool","bonus","build","command","elements","enter","function","hacking","hyper","karabiner","keyboard","mouse","numpad","pgdown","refresh","return","space","splurge","ultimate","ultimatehackingkeyboard","xcode","action","actions","added","affects","agent","allows","angle","another","arrow","assign","assigned","becomes","block","bottom","boxes","brackets","brettterpstra","button","buttons","change","characters","cheat","check","checking","class","clicking","cluster","coding","combination","combiner","comes","commonly","complex","controls","created","creating","curly","customizations","default","definition","develop","easily","elements","entire","essentially","everything","example","expand","extensive","extra","fingers","first","function","functions","github","gives","handed","happen","haven","having","height","hellip","highly","holding","https","hyper","ideas","image","interest","interested","interesting","karabiner","keyboard","keycluster","keycombo","keymap","keymaps","latest","layer","layers","lefthand","letter","little","loading","looked","mapped","mapping","maybe","media","memory","mentioning","mistake","modifier","module","mouse","muscle","natural","navigation","needs","noscript","original","performed","picture","possibilities","practice","pressed","produce","product","professionals","programming","provides","reach","reached","reaching","realized","recently","recommend","remaining","remember","repositioned","right","rsquo","scroll","scrolling","secondary","separated","setup","sheets","simply","software","source","specifically","speed","square","srcset","symbol","tempted","thought","thumb","title","trackpad","trigger","triggers","turns","ultimatehackingkeyboard","uploads","using","version","where","while","whole","width","worth","wrests","wrist"]
	},{
		"title": "Never let your email inbox exceed its quota again [Sponsor]",
		"url": "/2023/05/18/never-let-your-email-inbox-exceed-its-quota-again-sponsor/",
		"tags": ["email","sponsor"],
		"date": "May 18<span>th</span>, 2023",
		"ts": "1684424400",
		"summary": "Thanks to Sanebox for sponsoring BrettTerpstra.com this week! Sanebox has just introduced a new feature called Deep Clean, a way to reclaim your storage quota with smart batch deletes of old emails. Check it out for free and save yourself the headache of running out of space. Is your email close to going over its storage limit? With our new free tool Deep Clean, you&rsquo;ll never have to worry again. Use Deep Clean to quickly sort and delete unnecessary emails in bulk so you never have to pay for extra storage again. The best part? It&rsquo;s free",
		"keywords": ["batch","email","quota","brettterpstra","check","clean","sanebox","thanks","again","batch","called","close","deletes","email","emails","extra","feature","going","headache","introduced","limit","quickly","quota","reclaim","rsquo","running","smart","space","sponsoring","storage","unnecessary","worry"]
	},{
		"title": "Using ChatGPT with TextExpander [Sponsor]",
		"url": "/2023/05/11/using-chatgpt-with-textexpander-sponsor/",
		"tags": ["artificial","chatgpt","email","intelligence","snippet","utility","writing"],
		"date": "May 11<span>th</span>, 2023",
		"ts": "1683810000",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! ChatGPT is eating the world, but it’s still in its infancy. There are times when the service isn’t available or you don’t have time to wait as the AI slowly churns out an answer. Here’s a thought: pair ChatGPT with TextExpander. Generate your content with ChatGPT, save it as a TextExpander Snippet, and then you can edit it to your liking and deploy it at any time with a short abbreviation or our Inline Search. Pretend you are a customer success manager for a utilities and energy company. Write 5 different emails responding to a customer about their inquiry about an incorrect monthly utilities bill. Write the emails with a happy, helpful, and professional tone of voice. ChatGPT dutifully writes 5 emails you can use in this scenario, which you can then copy and paste into TextExpander as Snippets. From there, you can edit them and easily share them with your team. Note from Brett: you can also use TextExpander fill-ins to generate new prompts. Change \"an incorrect monthly utilities bill\" into a fill-in where you can change the problem to solve, and presto, custom ChatGPT prompt without repeating yourself. Of course, you can adapt this technique for any line of work where you need a library of standardized messages, like IT, recruiting, or sales—anywhere you can automate routine tasks so you can focus on what matters. TextExpander is great for handling routine messages like a customer referral email, new employee welcome notes, or a job offer email",
		"keywords": ["cyberspace","digital","email","engine","internet","marketing","nofollow","optimization","search","brett","brettterpstra","change","chatgpt","check","inline","pretend","search","smarter","snippet","snippets","terpstra","textexpander","thanks","write","abbreviation","adapt","answer","anywhere","automate","available","blockquote","brettterpstra","change","chatgpt","churns","class","communicatesmarter","company","content","custom","customer","deploy","different","dutifully","easily","eating","email","emails","employee","energy","focus","graphics","great","handling","happy","height","helpful","highlighter","https","image","incorrect","infancy","inquiry","language","ldquo","library","liking","loading","manager","matters","media","messages","monthly","nofollow","noscript","notes","offer","original","paste","picture","plaintext","presto","problem","professional","prompt","prompts","rdquo","recruiting","referral","repeating","responding","responses","rouge","routine","sales","scenario","service","share","short","simply","slowly","solve","source","sponsoring","srcset","standardized","success","supercharge","tasks","technique","templates","terpstra","textexpander","thought","times","title","today","uploads","using","utilities","voice","welcome","where","width","world","writes","wrote"]
	},{
		"title": "NiftyMenu update for Ventura",
		"url": "/2023/05/04/niftymenu-update-for-ventura/",
		"tags": ["niftymenu"],
		"date": "May 4<span>th</span>, 2023",
		"ts": "1683208260",
		"summary": "Not so long ago I wrote a little script that would generate an HTML playground of any MacOS app&rsquo;s menu bar, primarily for the purpose of generating screenshots. It has a full automation API and you can script screenshots with fuzzy name matching, meaning menu items names and positions can change and your automated screenshots will still work. It&rsquo;s a very specific use case, but I shared it because it took way too much time and I would love it if it helped even one other person. Yesterday I updated the menu styling to match Ventura, which uses new submenu indicators, slightly smaller font sizes by default, and slight changes to background opacity and hue. The results should look like a passable rendition of the latest operating system now. You can check out the demo here. NiftyMenu also got its own project page on this site, with full documentation and installation instructions",
		"keywords": ["screenshot","macos","niftymenu","ventura","yesterday","automated","automation","background","because","change","changes","check","default","fuzzy","generating","helped","indicators","installation","instructions","items","latest","little","match","matching","meaning","names","opacity","operating","passable","person","playground","positions","primarily","project","rendition","results","rsquo","screenshots","script","shared","sizes","slight","slightly","smaller","specific","styling","submenu","system","updated","wrote"]
	},{
		"title": "Web Excursions for April 29, 2023",
		"url": "/2023/04/29/web-excursions-for-april-29-2023/",
		"tags": ["bookmarks"],
		"date": "Apr 29<span>th</span>, 2023",
		"ts": "1682781300",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Everything wrong with Twitter’s new verification system. I lost my blue checkmark in April, and by the time it happened, I was grateful to have it gone. It used to actually mean something, now it&rsquo;s just a badge of support for Musk and his leadership. Default Folder X 6.0: A tour of what’s new Love the Quick Search idea. Beta is available for download if you&rsquo;re a registered DFX user. Pixelmator Photo gets AI-powered selective adjustments and a new Pixelmator is now Photomator, and comes with AI selection tools that are very tempting. Auto Tape Wrapping Machine Is Amazing For Cable Management I wish I was handier (and had a lot more tools), this is exactly the kind of hack I would love to build on a whim. What the Chef!? Enter your available ingredients, get a recipe to use them. In my experimentation, it actually did a great job without requiring a grocery store trip for additional ingredients. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["cooking","pixelmator","twitter","amazing","backblaze","brett","cable","check","default","enter","everything","folder","machine","management","photo","photomator","pixelmator","quick","search","twitter","wrapping","adjustments","affordably","amazing","available","backblaze","backs","badge","brettterpstra","brought","build","cable","check","checkmark","class","cloud","comes","computer","default","download","entire","everything","excursions","experimentation","features","folder","funeral","grateful","great","grocery","hackaday","handier","happened","height","holding","https","image","ingredients","leadership","loading","machine","management","media","noscript","original","partnership","photo","photomator","picture","pixelmator","powered","recipe","registered","reliably","requiring","rsquo","secure","securely","selection","selective","slate","source","srcset","stclairsoft","store","support","system","technology","tempting","title","today","tools","uploads","verification","width","wrapping","wrong"]
	},{
		"title": "SaneBox could be your secret weapon against email overload [Sponsor]",
		"url": "/2023/04/27/sanebox-could-be-your-secret-weapon-against-email-overload-sponsor/",
		"tags": ["email","sponsor"],
		"date": "Apr 27<span>th</span>, 2023",
		"ts": "1682600400",
		"summary": "Thanks to SaneBox for sponsoring BrettTerpstra.com again this week! I don&rsquo;t know what I would do without it. Ever feel like you&rsquo;re drowning in a sea of emails? You&rsquo;re not alone. We know the struggle of managing important emails while fighting spam messages with flashy sales. For every 10 emails from sources you don’t even remember subscribing to, you get one important one. When you find it, it feels like you’ve already finished a long task, doesn’t it? Finding important messages shouldn’t feel like a battle between you and your inbox. In fact, why do you have to sort through all these unimportant files in the first place? In a world of relentless digital communication, email overload is a common struggle. But SaneBox can help you to conquer your inbox once and for all! Using AI, SaneBox learns your email habits and sorts incoming messages precisely, so you can achieve the ultimate victory: a perfectly organized inbox. AI-Powered: SaneBox&rsquo;s algorithms learn your email behavior and customize your inbox management experience. So, if you want to see your favorite brand’s discounts in the same inbox as your collaborator’s messages, you’ve got it! Personalized Prioritization: High-priority emails stay in your main inbox, while lower-priority messages move to a separate folder for later review. Focus-Driven Features: With tools like Do Not Disturb, you can pause incoming emails and concentrate on your tasks without distractions. You can come back to them whenever you’re ready. Universal Compatibility: SaneBox works with any email service. So whether you’re using Gmail, Yahoo, or Outlook, you can tame that inbox. Smart Filtering: Automatically sorts emails based on your habits and priorities as soon as they reach your inbox. It’s like having a personal assistant to filter your inbox (but without the awkward daily interactions). SaneNoReplies: Tracks messages you&rsquo;ve sent without a response, making it easy to follow up. Customizable Folders: Organize your emails effortlessly with custom-made folders for all your categories and priorities. When it comes to pricing, Sanebox is an inexpensive choice. You can get a free trial to experience the difference in email management without any commitment. Plus, the app offers flexible monthly plans starting at just $7. It’s really that affordable! Check out SaneBox today, sign up today and save $25 on your subscription",
		"keywords": ["email","gmail","outlook","sanebox","webmail","automatically","brettterpstra","check","compatibility","customizable","disturb","driven","features","filtering","finding","focus","folders","gmail","organize","outlook","personalized","powered","prioritization","sanebox","sanenoreplies","sanebox","smart","stands","thanks","tracks","universal","using","yahoo","achieve","affordable","again","algorithms","alone","assistant","awkward","based","battle","behavior","between","brand","brettterpstra","categories","choice","class","collaborator","comes","commitment","common","communication","concentrate","conquer","custom","customize","daily","difference","digital","discounts","distractions","doesn","drowning","effortlessly","email","emails","experience","explore","favorite","features","feels","fighting","files","filter","finished","first","flashy","flexible","folder","folders","habits","having","height","https","image","important","inbox","incoming","inexpensive","interactions","later","learn","learns","loading","lower","making","management","managing","media","messages","monthly","nofollow","noscript","offers","organized","original","overload","overview","pause","perfectly","personal","picture","plans","precisely","pricing","priorities","priority","quick","reach","ready","relentless","remember","response","rsquo","sales","sanebox","separate","service","shouldn","sorts","source","sources","sponsoring","srcset","stands","starting","strong","struggle","subscribing","subscription","tasks","through","title","today","tools","trial","ttscoff","ultimate","unimportant","uploads","using","victory","whenever","while","width","works","world"]
	},{
		"title": "Web Excursions for April 25, 2023",
		"url": "/2023/04/25/web-excursions-for-april-25-2023/",
		"tags": ["bookmarks"],
		"date": "Apr 25<span>th</span>, 2023",
		"ts": "1682444880",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Swell AI: Automate writing podcast shownotes & articles Swell AI automates writing articles, summaries, social posts, time-stamped show notes and more for your podcasts and videos. Luciole - Typeface Luciole (French for “firefly”) is a new typeface developed explicitly for visually impaired people. LetsAsk.AI Another way to build a chatbot for a website, using your own data. Tested it out with the Marked help website, did a pretty good job. Not good enough to include the chatbot in the help yet, but I see potential. kudoai/duckduckgpt DuckDuckGo add-on that brings the magic of ChatGPT to search results. Trackify Analytics for Spotify. If you like seeing your music listening quantified in various ways, this is an intriguing service for just that. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["artificial","duckduckgo","intelligence","luciole","openai","analytics","another","automate","backblaze","brett","chatgpt","check","duckduckgo","french","letsask","luciole","marked","spotify","swell","tested","trackify","typeface","affordably","articles","automates","backblaze","backs","blockquote","brettterpstra","brings","brought","build","chatbot","class","cloud","computer","developed","duckduckgpt","enough","entire","everything","excursions","explicitly","firefly","github","height","holding","https","image","impaired","intriguing","kudoai","letsask","listening","loading","luciole","magic","media","music","noscript","notes","original","partnership","people","picture","podcast","podcasts","posts","potential","quantified","reliably","results","search","secure","securely","seeing","service","shownotes","social","source","srcset","stamped","summaries","swellai","title","today","trackify","typeface","uploads","using","various","videos","vision","visually","website","width","writing"]
	},{
		"title": "Static blogs and Mastodon",
		"url": "/2023/04/21/static-blogs-and-mastodon/",
		"tags": ["blogging","jekyll","markdown","mastodon","scripting"],
		"date": "Apr 21<span>st</span>, 2023",
		"ts": "1682099340",
		"summary": "I use FeedPress to handle this blog&rsquo;s RSS feeds. It reads my statically-generated RSS feed and gives me subscriber stats, as well as the ability to send new posts to social media endpoints. But it lacks Mastodon integration, and I&rsquo;m spending most of my time on Mastodon lately (find me at @ttscoff@nojack.easydns.ca). So I wanted my new posts on this blog to automatically post to Mastodon. The script in this post could be used with any blog that generates an RSS feed, but is mostly geared toward static blogs. I got started with a post from Dr. Drang called \"Announcing New Posts on Mastodon\". It included a Python script that I referenced to create a Ruby script for my needs. Thanks to the Doc for getting me started! You can find the script here. See below for configuration and usage. To configure the script, at minimum, you need your Mastodon endpoint and an auth key. Your endpoint is generally your Mastodon instance URL with appended to it, e.g. . I&rsquo;m not sure if this is ever not the case. The auth key can be generated by going to your Mastodon homepage, clicking the Settings gear icon, and choosing Development. Create a new application with any name, your blog url as the website, and leave the Redirect URI as is. Make sure it at least has permission to . You&rsquo;ll then see a client key, a client secret, and an access token. All you need is the access token for this script. You&rsquo;ll also need to configure the RSS feed. The script can parse JSON or XML feeds of your blog (local files or URLs) to find the latest post. If you want to use a JSON feed, set to either a local JSON file ( is fine for your HOME directory) or a JSON feed url. If you&rsquo;re using an XML feed, set to , and set to either a local file or url. With FeedPress, my JSON is generated from my XML and both feeds can take a few minutes to update, and the most immediate list of posts I have is the local file generated with my site, so that&rsquo;s what I have mine set to. That way I can run this script immediately after a new deploy and still get the latest post. The rest of the settings in the script are the template used for the status (), an optional query string that can be appended to the URL for campaign tracking, etc. (), and then a few options for updating front matter. I imagine most people won&rsquo;t need the front matter bit, but the options are commented if you need them. It records what it posts to a local JSON file (location set with ), so it&hellip;",
		"keywords": ["formats","&#39;toot","again","announcing","closing","configuration","create","deploy","development","drang","endpoint","front","feedpress","front","javascript","mastodon","markdown","mastodon","optionally","posts","presumably","python","query","rakefile","rather","redirect","stderr","stdout","string","settings","template","toots","thanks","twitter","updating","usage","ability","above","access","account","affordable","again","although","announcing","anyway","appended","associated","automatically","available","avoiding","backlink","before","below","binary","blogs","brettterpstra","called","campaign","checking","chmod","choosing","class","clicking","client","closing","commented","config","configuration","configure","configured","considered","constant","create","created","creates","dashes","debug","decided","default","deploy","deployed","described","detect","direct","directory","disable","disabled","doesn","doubled","easydns","editing","either","endnotes","endpoint","endpoints","entirely","eventually","false","feedpress","feeds","files","fnref","footnote","footnotes","front","fully","geared","generally","generated","generates","getting","github","gives","going","great","hacky","handle","hardcoded","having","height","helpful","highlight","highlighter","homepage","https","image","imagine","immediate","included","index","inject","instance","integration","invoke","lacks","language","latest","ldquo","leancrew","leave","library","likes","links","loading","local","location","manual","mastodon","match","meaning","media","minutes","mostly","multiple","named","naming","necessary","needs","newest","nojack","noscript","noteref","offer","optional","options","original","output","parameter","parse","people","permission","picture","plaintext","podcasts","posts","private","properly","publish","query","rather","rdquo","reads","reasons","rebuild","recommend","record","referenced","removes","renders","reply","requires","resulting","returns","reversefootnote","right","rouge","rsquo","running","scenario","scheme","script"]
	},{
		"title": "Markdown to Bike conversion",
		"url": "/2023/04/18/markdown-to-bike-conversion/",
		"tags": ["markdown"],
		"date": "Apr 18<span>th</span>, 2023",
		"ts": "1681841340",
		"summary": "I&rsquo;m liking outlining in Jesse Grossjean&rsquo;s latest app, Bike, for my outlining needs. It&rsquo;s a simple outliner that can save the content of its outlines to Bike files, OPML documents, or plain text. And its native document format is plain HTML that&rsquo;s easy to work with. As an aside, Jesse just released Shortcut actions for Bike, making it possible to do some automation of Bike and Bike documents. I haven&rsquo;t played around with it much yet, but if you&rsquo;re into Shortcuts, check out what&rsquo;s available. One thing that Bike lacks is an easy way to convert Markdown lists to Bike outlines. It can actually read indented plain text just fine, but the list markers are included in the node text, and blank lines become empty nodes instead of being compressed. Running a list through a Markdown processor and saving as can often create an invalid file, as Bike requires every list item to contain a paragraph tag, not bare text. I initially played around with running Markdown through a Markdown processor and then manipulating the output, but ultimately went with a much simpler version that compresses newlines and removes list markers, putting the resulting indented text in your clipboard. Pasting the result into a Bike document should almost always yield the expected result. Save the script below as in your PATH and run . It can be called as a pipe or on a file. To call it as a pipe, run . To call it on a file, just provide the path to the file as an argument: . The results will be placed in your clipboard, ready to paste into a Bike document. Hope that&rsquo;s of use to somebody",
		"keywords": ["macos","outliner","grossjean","jesse","markdown","pasting","running","shortcut","shortcuts","actions","almost","argument","aside","automation","available","below","blank","called","check","clipboard","compressed","compresses","contain","content","convert","create","document","documents","empty","expected","files","format","haven","included","indented","invalid","lacks","latest","liking","lists","making","manipulating","markers","native","needs","newlines","nodes","often","outliner","outlines","outlining","output","paragraph","paste","placed","played","possible","processor","putting","ready","released","removes","requires","resulting","results","rsquo","running","saving","script","simple","simpler","somebody","through","version","yield"]
	},{
		"title": "Snibbets plain text code snippet manager reborn",
		"url": "/2023/04/16/snibbets-plain-text-code-snippet-manager-reborn/",
		"tags": ["developer","markdown","nvultra","scripting","search","snibbets","snippet"],
		"date": "Apr 16<span>th</span>, 2023",
		"ts": "1681659180",
		"summary": "Over 20 years of writing scripts and apps I&rsquo;ve collected a lot of \"snippets\" of code that I save whenever I solve a problem and think I&rsquo;ll want the solution again in the future. I like these snippets to include notes and links, and I need to be able to easily search them and grab the code when I need it without much effort. That&rsquo;s why I wrote Snibbets back in 2020. I&rsquo;ve now refactored Snibbets as a gem and vastly improved its capabilities. I wanted the simplicity of creating snippets in nvUltra and searching them quickly from the command line, getting just the code I need with a few keystrokes. I keep iTerm in Visor mode, so it&rsquo;s a hotkey away, and just as convenient as any quick find panel in a dedicated snippet management app. Snibbets now has its own project page where you can read all about its features and options. You can also see all the code, file bug reports, and make feature requests on GitHub. Here&rsquo;s a quick overview, though. A snippet is just a Markdown file, where the filename becomes the title, optionally with additional extensions that help the syntax highlighter, e.g. . The document can contain tags in MultiMarkdown metadata format, titles as headlines, additional notes, and the code snippet either indented or fenced with optional language specifier. A single document can contain multiple snippets, separated with headlines as titles for each one. Snippets all go into one folder. You don&rsquo;t need to organize them into directories, that would defeat the purpose of the full text search in Snibbets. You can open that directory in any app that can handle it, such as nvUltra or Obsidian, and have full access for editing and creating new snippets. To search your snippets, just run . It will use a combination of Spotlight, , and to find matches. If there&rsquo;s more than one match, you&rsquo;ll get a menu, and if the selected file contains more than one snippet, you&rsquo;ll get a second menu. The code from the snippet is output to the console without any accompanying notes. You can run with to open the selected snippet in your editor to see all of the notes or update the code. You can also use to open the snippet in nvUltra, assuming you&rsquo;re on the beta. You can also run with to copy just the code to your clipboard in addition to displaying it in the console. Run to see all available options. When multiple results/snippets are detected, a menu is generated. If you have fzf installed&hellip;",
		"keywords": ["clipboard","highlighting","snippet","source","syntax","&#39;https","brett&#39;s","check","failing","files","filtering","github","highlighting","keeps","markdown","multimarkdown","obsidian","paypal","pygments","search","searching","skylighting","snibbets","snippets","sponsor","spotlight","support","syntax","terms","visor","above","access","action","again","align","allowing","allows","almost","animated","appreciated","aside","assuming","available","avoid","background","backlink","banner","based","becomes","blocks","border","bottom","brettterpstra","button","capabilities","caption","center","charmbracelet","class","clipboard","collected","combination","command","commands","config","configure","console","contain","contains","convenient","creating","dedicated","defeat","definitions","detected","directories","directory","displaying","document","donate","donating","easily","editing","editor","effort","either","endnotes","enter","extensions","feasible","feature","features","fenced","figure","filename","files","filtering","finder","fnref","folder","footnote","footnotes","format","frame","fuzzy","generated","getting","github","gives","glamorous","going","great","greatly","handle","header","headlines","height","hidden","highlight","highlighter","highlighting","hotkey","hours","https","iterm","iframe","image","improved","indented","input","installations","installed","installing","instant","junegunn","keystrokes","label","language","ldquo","links","loading","looks","makes","management","manager","markdown","match","matches","media","metadata","method","multiple","muted","narrow","needed","noscript","noteref","notes","nvultra","nvultra","optional","optionally","options","organize","original","output","overview","padding","panel","paypalbutton","paypalform","picked","picture","piped","plaintext","playsinline","position","poster","problem","project","projects","quick","quickly","radius","rdquo","recommend","redirected","refactored","relative","repeat","reports","requests","results","reversefootnote","rouge","rsquo","scripts","search","searching","second","selected","separate","separated","shell","shown"]
	},{
		"title": "Syntax highlighting is fun, and you won't believe this one weird trick",
		"url": "/2023/04/14/syntax-highlighting-is-fun-and-you-wont-believe-this-one-weird-trick/",
		"tags": ["markdown","scripting"],
		"date": "Apr 14<span>th</span>, 2023",
		"ts": "1681504800",
		"summary": "Over the last couple of days I got obsessed with wrangling my code snippet collection, once again. It&rsquo;s not healthy, but it is what it is. I dug back into Snibbets, a tool for managing code snippets as plain text Markdown files that I started back in 2020. I actually got it to a really good point today, but I&rsquo;m realizing that it&rsquo;s getting bloated enough that it needs to become a gem before I&rsquo;m ready to hype it up. The current version and mostly-up-to-date documentation are up on GitHub, though, so feel free to peek in the meantime. But that&rsquo;s not what I&rsquo;m here to tell you about. In the process of working on Snibbets, I wrote a little routine that could turn a file extension into a programming language name for tagging purposes, and vice versa. It seemed ripe for making a little one-off utility, so I&rsquo;ve posted a standalone version to GitHub. I&rsquo;m going to be using it when I&rsquo;m doing technical writing and including code samples in languages I don&rsquo;t usually work with. When you create a fenced code block, you can add a \"lexer\" to the opening fence, e.g. , which helps most platforms with properly syntax highlighting it. But then I find myself working on someone else&rsquo;s Terraform code and I&rsquo;m unsure whether that&rsquo;s a supported language for syntax highlighting. Now I can just run or and it will tell me all about it. What the available lexers are, what common extensions are associated with it, you know, the works. I built this by taking the output of and running it through a few regular expressions to make a parseable data set. Then I took the output of to add a few more lexers (though those don&rsquo;t have extensions listed and I don&rsquo;t know many of the more obscure ones, so that data serves to search for a valid lexer, but nothing else). The script itself just builds a queryable object out of the data and offers a few different ways to get at the data (you can see the whole set at the bottom of the script). The easiest way to use it is like I mentioned above: just pass a file extension or language name to it as an argument and it will give you back the info you need. There&rsquo;s more documentation in the comments of the script. Just thought I&rsquo;d share it! Check out the gist if you&rsquo;re interested",
		"keywords": ["github","highlighting","lexers","syntax","check","github","markdown","snibbets","terraform","above","again","argument","associated","available","before","bloated","block","bottom","builds","built","collection","comments","common","couple","create","different","doing","easiest","enough","expressions","extension","extensions","fence","fenced","files","getting","going","healthy","helps","highlighting","including","interested","itself","language","languages","lexer","lexers","listed","little","making","managing","meantime","mentioned","mostly","myself","needs","nothing","object","obscure","obsessed","offers","opening","output","parseable","platforms","point","posted","process","programming","properly","queryable","ready","realizing","regular","routine","rsquo","running","samples","script","search","seemed","serves","share","snippet","snippets","standalone","started","supported","syntax","tagging","taking","technical","thought","through","today","unsure","using","usually","utility","valid","versa","version","whole","working","works","wrangling","writing","wrote"]
	},{
		"title": "I forgot about the Titlecase API",
		"url": "/2023/04/13/i-forgot-about-the-titlecase-api/",
		"tags": ["titlecase"],
		"date": "Apr 13<span>th</span>, 2023",
		"ts": "1681414320",
		"summary": "I made a little web service back in 2015 and somewhere in the following 7 years I forgot about it. I&rsquo;ve been adding title-casing to various projects and plugins and keep writing new code for it&hellip; which was the whole reason I built the API to begin with. It just accepts a text string and returns an AP titlecased version as plain text. That&rsquo;s it. No bells or whistles, but if you need to incorporate title casing into a script or a Shortcut or anything else that can make a quick call to the web, it&rsquo;s a great answer. Just make a call to , where contains the url encoded string you want to title case. You can play with it on the test page, which will also show you the url to use to get the same result. That&rsquo;s all. It&rsquo;s a silly little thing, but if I&rsquo;ve forgotten about it, I bet everyone else did, too, and it might just be handy for someone",
		"keywords": ["writing","shortcut","accepts","adding","answer","begin","bells","built","casing","contains","encoded","everyone","forgot","forgotten","great","handy","hellip","incorporate","little","plugins","projects","quick","returns","rsquo","script","service","silly","somewhere","string","title","titlecased","various","version","where","whistles","whole","writing","years"]
	},{
		"title": "Cure burnout with TextExpander [Sponsor]",
		"url": "/2023/04/13/cure-burnout-with-textexpander-sponsor/",
		"tags": ["sponsor","textexpander"],
		"date": "Apr 13<span>th</span>, 2023",
		"ts": "1681390800",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! Read on for some tips on avoiding the burnout associated with repetitive tasks. Are you feeling burnt out? How would you even know? Here are some common signs: Emotional exhaustion A depletion of empathy, caring, and compassion A decreased sense of accomplishment One of the common causes of burnout is performing work that doesn’t matter. Repetitive, menial tasks that eat up your time but don’t offer any fulfillment. Things like filling out forms, typing the same code blocks over and over, and sending responses to common customer problems that are the junk food of work: they take up space but leave you feeling empty. TextExpander kicks drudgery to the curb. Save up those boring little chunks of text you type over and over, turn them into Snippets, and then drop them in anywhere with a short trigger, freeing up your time for what actually matters. Getting more sleep or hitting the gym are two other things that can alleviate stress and burnout. Another thing that can help is spending time outside. Let TextExpander handle the dull stuff so you can go enjoy this beautiful springtime weather. Get 20% off using the code . And if you can’t get away from your desk today, try this guided mindfulness exercise, which can help you regain your focus and your calm",
		"keywords": ["burnout","mindfulness","occupational","stress","another","brettterpstra","burnout","check","effort","emotional","exercise","getting","mindfulness","minimize","preventing","repetitive","snippets","terpstra","textexpander","thanks","video","vimeo","accomplishment","again","anywhere","associated","avoiding","beautiful","blocks","boring","bottom","brettterpstra","burnout","burnt","caring","causes","chunks","class","common","compassion","container","customer","decreased","depletion","doesn","drudgery","empathy","empty","enjoy","exercise","exhaustion","feeling","figcaption","figure","filling","focus","forms","freeing","fulfillment","graphics","guided","handle","height","highlighter","hitting","https","image","kicks","language","leave","little","loading","matters","media","menial","mindfulness","minimizeeffort","nofollow","noscript","offer","original","outside","padding","performing","picture","plaintext","player","preventing","problems","regain","repetitive","responses","rouge","sending","sense","short","signs","sleep","source","space","spending","sponsoring","springtime","srcset","stress","stuff","style","subscription","tasks","terpstra","textexpander","title","today","trigger","typing","uploads","using","video","videoid","vimeo","weather","width"]
	},{
		"title": "Just checking in",
		"url": "/2023/04/12/just-checking-in/",
		"tags": ["blogging","mentalhealth","sleep","support"],
		"date": "Apr 12<span>th</span>, 2023",
		"ts": "1681332060",
		"summary": "I haven&rsquo;t been posting much besides sponsored posts and web excursions for a while now. I figured it was time for a checkin for the sake of those who check this blog regularly, and especially for the benefit of those who offer financial support to me and all my projects. As you probably know, I have bipolar disorder. Most of my project releases and blogging spurts correlate with manic episodes. And manic episodes are bad for me &mdash; they result in a severe sleep deficit that is shortening my life. But I&rsquo;ve been remarkably stable lately, the downside of which is no late night coding/creating binges or the inescapable bursting of ideas that I just have to share with the world. It means I do my job, I maintain and support my commercial software, I fix reported bugs in my free projects, and I go to bed. It doesn&rsquo;t lead to a lot of fun software releases, blog posts, or new ideas in general. Sleep is good, stagnation kills me. I&rsquo;ve recently been realizing that my version of \"stable\" is more akin to depression. The thing is, I can&rsquo;t take antidepressants without risking triggering a manic phase, which leaves me in a position where I either have to be depressed, or deal with the life-shortening effects of constant mood fluctuation. But I think I have a potential solution&hellip",
		"keywords": ["behavior","depression","disorders","health","human","mania","sleep","antidepressants","benefit","besides","binges","bipolar","blogging","bursting","check","checkin","coding","commercial","constant","correlate","creating","deficit","depressed","depression","disorder","doesn","downside","effects","either","episodes","especially","excursions","figured","financial","fluctuation","general","haven","hellip","ideas","inescapable","kills","leaves","maintain","manic","mdash","night","offer","phase","position","posting","posts","potential","project","projects","realizing","recently","regularly","releases","remarkably","reported","risking","rsquo","severe","share","shortening","sleep","software","solution","sponsored","spurts","stable","stagnation","support","think","triggering","version","where","while","world"]
	},{
		"title": "Keep your software up-to-date effortlessly with MacUpdater [Sponsor]",
		"url": "/2023/04/06/keep-your-software-up-to-date-effortlessly-with-macupdater-sponsor/",
		"tags": ["sponsor"],
		"date": "Apr 6<span>th</span>, 2023",
		"ts": "1680786000",
		"summary": "Thanks to MacUpdater for sponsoring BrettTerpstra.com this week! I&rsquo;m a dedicated user and swear by this app for keeping my system updated. The latest version just makes everything even easier. MacUpdater scans and displays all installed software on your Mac &mdash; see at a glance which apps or plugins are out of date, and click to automatically update them! MacUpdater provides version information for over 60,000 apps (and growing) and over 6,000 of the most popular apps can be updated directly from within MacUpdater with a single click MacUpdater also now supports automatic, zero-click PKG installs The Pro edition adds support for audio and media plugins MacUpdater is flexible &mdash; you can control MacUpdater from the main app, the menubar, or the command line It&rsquo;s a universal build and fully compatible with Apple Silicon Optional zero-click, fully-automatic, scheduled app updates (PRO) Added Apple-silicon migration assistant to help move to new Macs Find out which of your Rosetta-based apps could be &lsquo;Apple Silicon&rsquo;-native if you update or upgrade to the latest version Find out which of your &lsquo;Rosetta&rsquo; based apps could be Silicon-native if you reinstall them Track supported branches other than the &lsquo;Latest Version&rsquo; When an app vendor also supports an old branch of an app with further updates, users have the choice of either using the latest version or tracking the updates to the major version which they are using You can see a list of apps that currently support this feature (more will be added based on user requests) Select how apps should be updated (auto, custom updater, manual update) Attach and display Finder-compatible tags and comments to your apps, and support custom homepages or updater apps via clickable comments Save 15% on MacUpdater with code . Check it out today",
		"keywords": ["macos","macupdate","macupdater","added","apple","attach","brettterpstra","check","finder","latest","macupdater","optional","rosetta","silicon","thanks","track","version","added","assistant","audio","automatic","automatically","based","branch","branches","build","choice","click","clickable","command","comments","compatible","control","custom","dedicated","directly","display","displays","easier","edition","either","everything","feature","flexible","fully","glance","growing","homepages","information","installed","installs","keeping","latest","lsquo","major","makes","manual","mdash","media","menubar","migration","native","plugins","popular","provides","reinstall","requests","rsquo","scans","scheduled","silicon","single","software","sponsoring","support","supported","supports","swear","system","today","tracking","universal","updated","updater","updates","upgrade","users","using","vendor","version","within"]
	},{
		"title": "Find which of your favorite apps are on Setapp, revisited",
		"url": "/2023/04/04/find-which-of-your-favorite-apps-are-on-setapp-revisited/",
		"tags": ["scripting","setapp"],
		"date": "Apr 4<span>th</span>, 2023",
		"ts": "1680645480",
		"summary": "Back in 2019 I wrote a little script that would parse your Applications folder and tell you which of your apps were available on Setapp. The goal was to help you figure out which apps you were already using that were also on Setapp, so you could use the Setapp version and direct a little of your subscription fee to your favorite developers. The script parses the setapps/apps page to see what apps are available, and the markup has changed since I originally wrote the script. Thankfully, Chuck Plater updated the script in a fork to work with the current markup. I&rsquo;ve implemented his changes in the original script and it&rsquo;s once again working fine. To use the script, save it to a text file called , then run on it. Once you&rsquo;ve done that, you should be able to execute and get a list of applications you use that are also available on Setapp. Thanks to Chuck for the fix. I hope all Setapp subscribers will go to the trouble of using the Setapp version of apps they already own, it really does help the developers (and this script makes it easy). If you&rsquo;re not already a Setapp user, here&rsquo;s my affiliate link to start using hundreds of apps for $10 a month",
		"keywords": ["distribution","github","software","applications","chuck","plater","setapp","thankfully","thanks","affiliate","again","applications","available","called","changed","changes","developers","direct","execute","favorite","figure","folder","hundreds","implemented","little","makes","markup","original","originally","parse","parses","rsquo","script","setapps","since","subscribers","subscription","trouble","updated","using","version","working","wrote"]
	},{
		"title": "Curio 25 with Smart Collections [Sponsor]",
		"url": "/2023/03/16/curio-25-with-smart-collections/",
		"tags": ["sponsor"],
		"date": "Mar 16<span>th</span>, 2023",
		"ts": "1678971600",
		"summary": "Thanks to Curio for sponsoring BrettTerpstra.com this week! What if your digital notebook allowed you to create at-a-glance dashboards and checklists using queries to pull in and consolidate information from all across your project into lists, mind maps, or Kanban collections? We call them Smart Collections and that&rsquo;s what we&rsquo;re introducing in Curio 25 Professional, the latest release of our flagship note-taking and brainstorming app for macOS. Create a new list, mind map, or Kanban stack then specify a query expression. Immediately it will dynamically fill itself with matching figures from across your notebook. A query can be as simple as or or as sophisticated as . Even better, these dynamic collections contain live instances of the original figures. Edit an item&rsquo;s text or change dates, tags, or other meta attributes, and those changes are instantly reflected back to the original figures. In addition to Smart Collections, Curio 25&rsquo;s Search shelf has been completely overhauled to support this powerful query language. And the query language itself, also used by Curio&rsquo;s instant Quick Find feature, has been greatly extended with even more functionality to help you find exactly what you&rsquo;re looking for. Curio, first introduced almost 20 years ago, is the most advanced notebook application for note-taking, brainstorming, and research. It provides all the tools and functionality you need to be more productive and get stuff done. New traditional license purchasers can save 20% using the code . Visit zengobi.com to learn more today",
		"keywords": ["brainstorming","information","kanban","retrieval","brettterpstra","collections","create","curio","kanban","professional","quick","search","smart","thanks","visit","across","advanced","allowed","almost","attributes","brainstorming","change","changes","checklists","collections","completely","consolidate","contain","create","dashboards","dates","digital","dynamic","dynamically","expression","extended","feature","figures","first","flagship","functionality","glance","greatly","information","instant","instantly","introduced","introducing","itself","language","latest","learn","license","lists","looking","macos","matching","notebook","original","overhauled","powerful","productive","project","provides","purchasers","queries","query","reflected","release","research","rsquo","shelf","simple","sophisticated","specify","sponsoring","stack","stuff","support","taking","today","tools","traditional","using","years","zengobi"]
	},{
		"title": "Web Excursions for March 14, 2023",
		"url": "/2023/03/14/web-excursions-for-march-14-2023/",
		"tags": ["bookmarks","fonts"],
		"date": "Mar 14<span>th</span>, 2023",
		"ts": "1678815420",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. swiftGPT.app - The native macOS app for ChatGPT I&rsquo;ve tried a few of these, and this one is my favorite for a native chat-like experience for ChatGPT on macOS. Includes cost tracking and chat history. di-sukharev/opencommit GPT CLI to auto-generate impressive commits in 1 second. My commit messages are pretty specifically geared toward auto-generating changelogs, but for non-changelog commits, this is pretty cool Modern Font Stacks System font stack CSS organized by typeface classification for every modern OS. The fastest fonts available. No downloading, no layout shifts, no flashes — just instant renders. Inline See a web page with a font style you want to steal? Here&rsquo;s the Chrome extension to do it&hellip; Mottle: Build your own chatbot using just a .txt file I want to make an \"Ask Brett\" chatbot by uploading the entire contents of BrettTerpstra.com to this service",
		"keywords": ["artificial","chatgpt","intelligence","brett","brettterpstra","build","chatgpt","chrome","cleanmymac","includes","inline","modern","mottle","stacks","system","absolute","aifjpngbegpnahbmnajckckddcgfnodk","authuser","available","blockquote","border","brettterpstra","brought","changelog","changelogs","chatbot","chrome","class","classification","commit","commits","contents","detail","display","downloading","entire","excursions","experience","extension","fastest","favorite","flashes","fonts","geared","generating","github","google","height","hellip","hidden","history","holding","https","image","impactradius","impressive","inline","instant","layout","ldquo","loading","macos","macpaw","media","messages","modern","modernfontstacks","mottle","native","noscript","opencommit","organized","original","partnership","picture","position","producthunt","rdquo","renders","rsquo","second","service","shifts","source","specifically","speed","srcset","stack","steal","style","sukharev","swiftgpt","swiftgpt","title","tools","toward","tracking","tried","typeface","uploading","uploads","using","visibility","webstore","width"]
	},{
		"title": "Get your ChatGPT on with TextExpander [Sponsor]",
		"url": "/2023/03/09/get-your-chatgpt-on-with-textexpander-sponsor/",
		"tags": ["sponsor","textexpander"],
		"date": "Mar 9<span>th</span>, 2023",
		"ts": "1678370400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Read on for some ways TextExpander can aid your ChatGPT experience. Everyone’s talking about ChatGPT, the AI text generation tool, and what it’ll mean for the future of work. Why would a company pay someone to code or write when a machine can do just as well or better than a human? There’s just one little snag: the rule of GIGO—garbage in, garbage out—still applies. Give ChatGPT a vague prompt, and it’ll return a vague response. To obtain truly excellent answers and content, you must give it more input—detailed, exact instructions specifying the result you want. It’s an emerging art called prompt engineering. You may spend hours developing a great prompt that gives you the exact results you want. But then what? That’s where TextExpander comes in. It’s a powerful auto-complete tool that’s the perfect complement to ChatGPT. To prove it, we’ve created a Public Group of amazing ChatGPT Snippets that we’ve collected from TextExpander users. Want to format ChatGPT’s output in Markdown? Try the Snippet . Want to translate the contents of your clipboard into Spanish? Try . Those just scratch the surface. Thanks to writing instructor Ryan Briggs, we have the Snippet, which evaluates the quality of a technical memo, and , which identifies all the twists and turns from a scene of a screenplay. To learn more, check out How to Use ChatGPT with TextExpander and keep your eyes on the TextExpander blog for more ChatGPT Snippets and tips. When you’re ready to try it out, get 20% off using the code TERPSTRA. Head to textexpander.com/terpstra today",
		"keywords": ["computing","markdown","snippet","brettterpstra","briggs","chatgpt","everyone","group","markdown","public","smarter","snippet","snippets","spanish","terpstra","textexpander","thanks","amazing","answers","applies","brettterpstra","called","chatgpt","check","class","clipboard","collected","comes","communicatesmarter","company","complement","content","contents","created","detailed","developing","emerging","engineering","evaluates","exact","excellent","experience","format","garbage","generation","gives","graphics","great","group","height","hours","https","human","identifies","image","input","instructions","instructor","learn","little","loading","machine","media","nofollow","noscript","openai","original","output","peermemo","picture","powerful","prompt","prove","quality","ready","response","results","return","scene","scratch","screenplay","snippets","source","specifying","spend","sponsoring","srcset","storyreversalsteps","surface","talking","technical","terpstra","textexpander","title","today","translate","truly","turns","twists","uploads","users","using","vague","where","width","write","writing"]
	},{
		"title": "Howzit with named variables",
		"url": "/2023/03/07/howzit-with-named-variables/",
		"tags": ["developer","howzit","markdown","productivity"],
		"date": "Mar 7<span>th</span>, 2023",
		"ts": "1678210320",
		"summary": "I had a sleepless morning and decided to flesh out a Howzit feature I&rsquo;ve been meaning to get around to. In case you&rsquo;ve missed it, Howzit is my \"Markdown makefile\" tool that allows you to keep track of project notes, specs, and scripts in a convenient Markdown file that can be searched and neatly displayed, and can contain directives to execute project-related commands conveniently. As of version 2.1.0, you can now define and name positional variables when creating a topic in your build notes. For example: As you can see above, you define the names in parenthesis after the topic title, and can then refer to them using . Then you can call (arguments are passed after , everything before that is a topic search string). Stupid example as it would take longer to type that out than a simple copy command is worth, but it&rsquo;s very handy in larger scripts. Variables can be passed between topics when using directives by adding square brackets at the end of the include topic title. So if I were going to call the above example from within another topic, I would use . Arguments are separated by commas. You can also use variables within the square brackets, so if the parent topic had already defined a variable (or set it in front matter), you could use . This is a change in behavior. Before arguments were only positional, and if the command line contained one or more arguments, they would be , , etc. for every topic. This new method allows a parent topic to take specific arguments and provide them as needed to included subtopics in the order that the included topic requires. A big thing that this allows is the creation of reusable topics that perform a specific function which can be included by multiple parent topics. Changing the parameters of the directive within the parent topic will change the behavior of the nested snippet. You can add default values to any variable, making it optional, with . This works when defining variables in topic titles, e.g. , or in a placeholder, e.g. . The value after the colon can contain spaces, but there should be no spaces around the colon. By the way, if you define metadata at the top of a build note, you would usually access the values with the syntax. Metadata values also become available as variables with the syntax and are populated before any command line arguments, so if they have the same name as a variable, they&rsquo;ll serve as fallbacks if no argument is given (but only when using the syntax&hellip;",
		"keywords": ["arguments","makefile","parameter","arguments","before","changing","default","defining","enjoy","getting","homebrew","howzit","markdown","metadata","named","optional","providing","started","stupid","using","values","variables","above","access","adding","allows","another","argument","arguments","available","before","behavior","between","brackets","build","change","check","colon","command","commands","commas","contain","contained","convenient","conveniently","creating","creation","decided","default","define","defined","defining","detailed","directive","directives","displayed","everything","example","execute","fallbacks","feature","flesh","front","function","going","handy","haven","included","installation","installed","instructions","larger","longer","makefile","making","meaning","metadata","method","missed","morning","multiple","names","neatly","needed","nested","notes","optional","parameters","parent","parenthesis","passed","placeholder","populated","positional","project","related","rendering","requires","reusable","rsquo","scripts","search","searched","separated","serve","simple","sleepless","snippet","spaces","specific","specs","square","started","string","subtopics","syntax","template","title","titles","topic","topics","track","using","usually","value","values","variable","variables","version","within","works","worth"]
	},{
		"title": "Web Excursions for March 06, 2023",
		"url": "/2023/03/06/web-excursions-for-march-06-2023/",
		"tags": ["bookmarks"],
		"date": "Mar 6<span>th</span>, 2023",
		"ts": "1678136160",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. This roundup got a little ChatGPT heavy, but with the release of the API on March 1st and the promise of a free-to-use version moving forward, seems like a good time to start exploring integrations. shapehq/slack-chatgpt Integrate ChatGPT into Slack using Cloudflare Workers. Nice proof of concept, and totally usable. Scribble Diffusion Turn your sketch into a refined image using AI. This is actually a really cool way to generate very specific AI images, using a rough sketch and a short description to get results closer to what I&rsquo;m imagining (I&rsquo;m not great at prompts). Fast sketch-to-image render times, too. First look: Mac mini with M2 Pro MacStadium&rsquo;s Brian Stucki gives a first look at (and teardown of) the Mac mini with M2 Pro. Using ChatGPT with BetterTouchTool Andreas offers some ways to integrate ChatGPT and OpenAI into your system using BetterTouchTool. I swear that app can do anything. Drafts ChatGPT Conversation Action Use ChatGPT in Drafts",
		"keywords": ["openai","slack","action","andreas","bettertouchtool","brian","chatgpt","check","cloudflare","conversation","diffusion","drafts","first","integrate","macstadium","openai","scribble","setapp","slack","stucki","using","workers","access","brought","chatgpt","closer","concept","description","excursions","exploring","first","gives","great","heavy","hundreds","image","images","imagining","integrate","integrations","little","monthly","moving","offers","partnership","promise","prompts","proof","refined","release","results","rough","roundup","rsquo","seems","shapehq","short","sketch","slack","specific","subscription","swear","system","teardown","times","today","totally","usable","using","version"]
	},{
		"title": "Kaleidoscope: Spot the differences, merge in seconds [Sponsor]",
		"url": "/2023/02/23/kaleidoscope-spot-the-differences-merge-in-seconds-sponsor/",
		"tags": ["sponsor","tools"],
		"date": "Feb 23<span>rd</span>, 2023",
		"ts": "1677160800",
		"summary": "Thanks to Kaleidoscope for sponsoring BrettTerpstra.com this week! Review versions of text and image files—and even folders full of files—with the world&rsquo;s most powerful file comparison app. Compare directories side by side: With powerful data filtering, Kaleidoscope makes it easy to filter for what you are looking for and drill down to see more.  Version Control: View grouped changes from Git, Subversion, Mercurial, Bazaar, or Perforce in one clear changeset. Unix Tooling: Integrate the tool with the power of the command line. Send anything that can be written to a file or a Unix pipe to Kaleidoscope for inspection. Three-Way Merge: Working on a branch? Let Kaleidoscope help you merge your changes cleanly and easily on first attempt.  Works with content from anywhere: Kaleidoscope accepts content no matter where it&rsquo;s located. Drag and drop files and folders, or use the Clipboard, macOS Services, the Share menu, or the command line, as well as many pre-configured integrations. Get 20% off by using coupon code at kaleidoscope.app",
		"keywords": ["kaleidoscope","mercurial","programming","banner","bazaar","brettterpstra","clipboard","compare","control","debugger","integrate","kaleidoscope","mercurial","merge","perforce","services","share","subversion","terpstra","thanks","tooling","version","working","works","xcode","accepts","anywhere","branch","brettterpstra","changes","changeset","class","cleanly","clear","command","commands","comparison","configured","content","coupon","cycle","debug","development","directories","drill","easily","files","filter","filtering","first","folders","gives","grouped","height","highlighter","https","image","inspection","integrations","kaleidoscope","ksdiff","language","loading","located","looking","macos","makes","media","merge","nofollow","noscript","original","output","picture","plaintext","powerful","rouge","rsquo","source","sponsoring","srcset","stage","strong","title","tools","uploads","using","versions","where","width","world","written"]
	},{
		"title": "Web Excursions for February 22, 2023",
		"url": "/2023/02/22/web-excursions-for-february-22-2023/",
		"tags": ["bookmarks"],
		"date": "Feb 22<span>nd</span>, 2023",
		"ts": "1677090660",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. catppuccin/catppuccin It&rsquo;s been quite a while since I found a new terminal/IDE theme I thought was truly sexy. MindPane - MindPane - Turns every web page into a Mind Map MindPane is a Chrome extension that visualizes the web page you are reading as a Mind Map, where you can quickly get the main structure of the document, and easily navigate through topics. FelixKratz/SketchyBar A highly customizable macOS status bar replacement. I think I probably found this via OneThingWell, but I lost track&hellip; james-stoup/heatwave Visualize your git commits with a heat map in the terminal, similar to GitHub&rsquo;s contribution graph. Safurai - AI Code Assistant AI coding assistant for VS Code that can write code, add documentation, write tests, and refactor code for you automatically. Free in beta and almost enough to get me to switch to VS Code. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["control","development","environment","github","integrated","version","assistant","backblaze","check","chrome","felixkratz","github","mindpane","onethingwell","safurai","sketchybar","turns","visualize","affordably","almost","assistant","automatically","backs","brought","catppuccin","cloud","coding","commits","computer","contribution","customizable","document","easily","enough","entire","everything","excursions","extension","found","graph","heatwave","hellip","highly","james","macos","navigate","partnership","quickly","reading","refactor","reliably","replacement","rsquo","securely","similar","since","status","stoup","structure","switch","terminal","tests","theme","think","thought","through","today","topics","track","truly","visualizes","where","while","write"]
	},{
		"title": "Memory not what it used to be? TextExpander can help [Sponsor]",
		"url": "/2023/02/16/memory-not-what-it-used-to-be-textexpander-can-help-sponsor/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Feb 16<span>th</span>, 2023",
		"ts": "1676556000",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander is a powerful auto-complete tool that also serves as a potent memory aid. For instance, if you code in Swift, TextExpander user Christian Walters has created a handy Snippet Group to automate things like animations, buttons, and ForEach loops. If you want to create a button, simply type and TextExpander handles the rest. But what if you can’t remember the swbtn abbreviation? No problem. TextExpander’s powerful inline search feature helps you quickly look up the Snippet you need. Do you sometimes forget names, addresses, and other key bits of information? We all do. Create a TextExpander Snippet for it and give it a name you can easily remember, like “Business Address.” Now you can use TextExpander inline search to quickly pull up and insert that address anywhere you type. Would you like to know more? Learn about TextExpander best practices to discover the best ways to name and abbreviate your Snippets so they’re always easy to find. When you’re ready to try it out, get 20% off using the code . Head to textexpander.com/terpstra today",
		"keywords": ["smile","address","brettterpstra","business","christian","create","effort","foreach","group","learn","minimize","snippet","snippets","swift","terpstra","textexpander","thanks","walters","abbreviate","abbreviation","address","addresses","animations","anywhere","automate","brettterpstra","button","buttons","class","create","created","discover","easily","feature","forget","graphics","group","handles","handy","height","helps","highlighter","https","image","information","inline","instance","language","learn","loading","loops","media","memory","minimizeeffort","names","nofollow","noscript","original","picture","plaintext","potent","powerful","practices","problem","quickly","ready","remember","rouge","search","searching","serves","simply","snippets","sometimes","source","sponsoring","srcset","swbtn","terpstra","textexpander","title","today","uploads","using","width"]
	},{
		"title": "Gather 2.1 with saved presets",
		"url": "/2023/02/07/gather-2-dot-1-with-saved-presets/",
		"tags": ["gather","markdown"],
		"date": "Feb 7<span>th</span>, 2023",
		"ts": "1675802460",
		"summary": "I put out version 2.1.0 of the Gather CLI today. It adds a couple of fixes and one feature that I think is worth mentioning. Gather has a lot of command line options. This makes it very flexible, but it&rsquo;s a PITA to remember all of the settings for a specific action. With v2.1+ you can add to a long command to save it with a name, and then recall those flags and switches with next time you run it. To save a command you do have to have a valid call, which means you must include , , or pass a URL as an argument in the command. The URL provided is not stored, only the command line options used in the call (meaning if the command uses , future calls to that config will also require STDIN input). The config files are stored as YAML in . These files can be edited by hand, and you can duplicate a file with a new name to create a new config manually. The flag just searches for a file in this directory, so it doesn&rsquo;t have to be created with the flag. You can use in Shortcuts/Services. You&rsquo;ll need to define the configuration on the command line (or manually create it), but can then reference it from anywhere you can call Gather. To update to the latest version, download the package below. If you&rsquo;ve successfully installed via Homebrew, you should be able to just run . Gather CLI v2.1.12 Download Gather CLI v2.1.12 A Frankenstinian combination of html2text and Arc90 Readability. This command line tool makes clipping web pages into Markdown text without ads and comments simple. Published 01/04/12. Updated 12/16/25. Changelog Donate &bull; More info&hellip",
		"keywords": ["configuration","changelog","donate","download","frankenstinian","gather","homebrew","markdown","published","readability","stdin","services","shortcuts","updated","above","action","anywhere","argument","below","calls","clipping","combination","command","comments","config","configuration","couple","create","created","define","directory","doesn","download","duplicate","edited","example","feature","files","fixes","flags","flexible","hellip","input","installed","latest","looks","makes","manually","meaning","mentioning","options","package","pages","recall","remember","rsquo","searches","settings","simple","specific","stored","successfully","switches","think","today","valid","version","worth"]
	},{
		"title": "Increment Templated Service/PopClip update",
		"url": "/2023/02/06/increment-templated-service-slash-popclip-update/",
		"tags": ["extension","popclip","service","tools"],
		"date": "Feb 6<span>th</span>, 2023",
		"ts": "1675701900",
		"summary": "I&rsquo;ve updated the Increment Templated Service and PopClip extension. It&rsquo;s a small update, but the tool is useful enough that I want to highlight it. The Increment Templated Service and PopClip extension allow you to write text with placeholders, and then repeat that text multiple times, using the placeholders to make changes in each iteration. It gets more complex, and you can define start/end points, increment values, use string arrays, and reference index numbers in each iteration. See the PopClip extension docs for a more detailed explanation (anything that works in the PopClip extension also works in the Service.) The update that I&rsquo;ve just released allows reference placeholders to contain more complex math equations. In an iteration, you can include for a 1-indexed reference, or for a zero indexed reference. Previously you could include one mathematical operator, e.g. in the placeholder. Now you can include any mathematical expression, e.g. . Not a big deal, and if I didn&rsquo;t think this little tool deserved more attention, the update on its own wouldn&rsquo;t be enough to prompt a post. But it&rsquo;s one of those tools that you don&rsquo;t use every day, but when you need it, it&rsquo;s a timesaver. Worth having in your toolkit, either as a Service (Quick Action), or as a PopClip extension. Just as a side tip, you can use as a modulus operator in equations, so getting even-odd numbering is as easy as . Shortly after writing this, I decided to add one more feature to the Service/extension. You can now specify an array of strings after a modifier, allowing insertion of strings based on an index. To do so, include a separator, followed by a comma-separated list of strings. They&rsquo;ll be inserted based on the result of the index reference (zero-indexed, so 0 is the first element). For example: That should cover what few variations aren&rsquo;t already handled. Increment Templated Service v3.0.2 Download Increment Templated Service v3.0.2 Repeats a selected block of text a specified number of times, replacing placeholders with the count of the current item with variable start and end numbers. Published 07/01/12. Updated 02/06/23. Changelog Donate &bull; More info&hellip; Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["action","extension","increment","quick","action","becomes","brett","changelog","donate","download","downloads","extensions","increment","markdown","popclip","previously","published","quick","repeats","service","shortly","templated","updated","worth","allow","allowing","allows","array","arrays","based","below","block","changes","comma","complex","contain","count","cover","decided","define","deserved","detailed","either","element","enough","equations","example","explanation","expression","extension","extensions","feature","first","followed","getting","handled","having","hellip","highlight","increment","index","indexed","inserted","insertion","iteration","little","mathematical","minute","modifier","modulus","multiple","numbering","numbers","operator","parallel","placeholder","placeholders","points","prompt","released","repeat","replacing","rsquo","selected","separated","separator","small","specify","string","strings","think","times","timesaver","toolkit","tools","updated","useful","using","values","variable","variations","versions","works","wouldn","write","writing"]
	},{
		"title": "Web Excursions for February 03, 2023",
		"url": "/2023/02/03/web-excursions-for-february-03-2023/",
		"tags": ["bookmarks","comments","prompt"],
		"date": "Feb 3<span>rd</span>, 2023",
		"ts": "1675457880",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Dockhunt Share the apps in your Dock and see what everyone else is using (only shows apps pinned to Dock). Power users love this stuff, I know I do. Tweet To Image - Create beautiful shareable images from tweets. A free service to create nice shareable images from tweets. Paste a tweet link, get a beautiful image. Options for light/dark, size/format, and show/hide interactions. Very nice. The Movie Database API The API I&rsquo;ve always wished IMDb had. Free for non-commercial use. Effective GPT - Get accurate ChatGPT prompts I&rsquo;ve been really into exploring ChatGPT lately. It&rsquo;s amazing for everything from email replies to source code comments, given the right input. This site compiles good ChatGPT prompts and lets users down/upvote them. Doesn&rsquo;t seem to have a lot of voting clout yet, but it&rsquo;s a great source for prompts that can generate exactly the right kind of content. ReplyBox - Privacy-Focused Comment System Starting at $5/mo and 15x lighter than Disqus, this privacy-focused comment system seems like a win. I&rsquo;m happy with Remarkbox for now, but always good to see new gladiators in the arena. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["disqus","internet","media","privacy","social","twitter","world","chatgpt","check","comment","create","database","disqus","dockhunt","doesn","effective","focused","image","mindmeister","movie","options","paste","privacy","remarkbox","replybox","share","starting","system","accurate","amazing","arena","beautiful","boosting","brainstorming","brought","clout","collaborating","collaborative","comment","comments","commercial","compiles","content","create","email","everyone","everything","excursions","exploring","focused","format","gladiators","great","happy","image","images","input","interactions","light","lighter","mapping","partnership","pinned","privacy","productivity","prompts","replies","right","rsquo","seems","service","shareable","shows","software","source","stuff","system","tweets","upvote","users","using","voting","wished"]
	},{
		"title": "Stuff I'm Using in 2023",
		"url": "/2023/02/01/stuff-im-using-in-2023/",
		"tags": [],
		"date": "Feb 1<span>st</span>, 2023",
		"ts": "1675287540",
		"summary": "I just wanted to take a moment once again to point you to my \"Stuff I Use\" page on this site. It&rsquo;s a bunch of my favorite tools and services with whom I have affiliate agreements, meaning if you try them and also love them, I get a little bit of the money you pay for them. Doesn&rsquo;t cost you any extra; it&rsquo;s a marketing cost for the developers. Only things I truly love make it onto that page, and I will stand behind anything listed there. The latest addition is Tower, the Git GUI app for Mac and Windows that makes me smile every time I use it. If you use Git in any serious capacity, check it out, I think you&rsquo;ll love it. So if you&rsquo;re looking for cool stuff and/or ways to support what I do, check out the Stuff I Use",
		"keywords": ["affiliate","services","doesn","stuff","tower","windows","affiliate","again","agreements","behind","bunch","capacity","check","developers","extra","favorite","latest","listed","little","looking","makes","marketing","meaning","money","point","rsquo","serious","services","smile","stand","stuff","support","think","tools","truly","wanted"]
	},{
		"title": "PopClip extensions and modifier keys",
		"url": "/2023/02/01/popclip-extensions-and-modifier-keys/",
		"tags": ["extension","keyboard","popclip"],
		"date": "Feb 1<span>st</span>, 2023",
		"ts": "1675277700",
		"summary": "I mentioned in a recent post that I was getting unexpected behavior when using modifier keys with PopClip. Quite a few of my PopClip extensions provide alternate actions when triggered while holding down Control, Shift, Command, or Option. But as of recent versions of PopClip, holding down Option is a global shortcut that displays the result in the PopClip bar, and holding Shift forces the result to copy to the clipboard instead of pasting, overriding extension preferences. I spoke with Nick from Pilot Moon about this and he let me know that you can override this new behavior with a command in Terminal. If you want my extensions to function and provide all of their alternate options, open Terminal and paste this into it: Once you do that, extensions like BulletList, which creates numbered lists when you hold down Option, will once again provide the expected behaviors when modifiers are held. Nick mentioned he&rsquo;s considering some alternative options for providing multi-action extensions, which is really exciting to me. Having to remember even one modifier key per extension is a pain, and extensions like CriticMarkup, which has 4 different modes based on modifier keys, are basically impossible to remember well enough to get the right result on the first try every time. I look forward to what Nick does on this front &mdash; his ideas sounded very appealing. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["extension","modifier","brett","bulletlist","changelog","command","control","criticmarkup","donate","download","extensions","having","markdown","pilot","popclip","published","shift","terminal","updated","action","actions","again","alternate","appealing","based","behavior","behaviors","clipboard","command","considering","creates","different","displays","enough","exciting","expected","extension","extensions","first","forces","front","function","getting","global","hellip","holding","ideas","impossible","lists","mdash","mentioned","modes","modifier","modifiers","multi","numbered","options","override","overriding","paste","pasting","preferences","providing","recent","remember","right","rsquo","shortcut","sounded","spoke","tools","triggered","unexpected","useful","using","versions","while","writing"]
	},{
		"title": "PopClip extensions update",
		"url": "/2023/01/24/popclip-extensions-update/",
		"tags": ["extension","gather","popclip","searchlink"],
		"date": "Jan 24<span>th</span>, 2023",
		"ts": "1674574500",
		"summary": "I&rsquo;ve updated my PopClip Extensions to v1.44. This update includes a revised nvUltra extension (that actually works), and a new SearchLink extension. The nvUltra extension allows you to set a permanent notebook to use, and then whenever it&rsquo;s run it will add a new note with the selected text. Simple, convenient. I may eventually incorporate Gather into this and allow selecting rich (HTML) text and converting to Markdown, but for now it&rsquo;s designed for plain text. The SearchLink extension requires that SearchLink be installed, but if it doesn&rsquo;t locate it in the expected location when it runs, it will install it automatically. In case you missed it, I also recently updated the WebMarkdown extension to use Gather, and if Gather isn&rsquo;t installed when you run it, it will download the package for you and walk you through installation. I&rsquo;ve noticed lately that some of my extensions that have alternate behaviors when holding Option are acting strangely, showing the result in the popup and putting it in the clipboard instead of pasting it. I need to talk to Pilot Moon about why that&rsquo;s happening, but will update as needed once I get some answers. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["macos","pilot","popclip","brett","changelog","donate","download","extensions","gather","markdown","pilot","popclip","published","searchlink","simple","updated","webmarkdown","acting","allow","allows","alternate","answers","automatically","behaviors","below","clipboard","convenient","converting","designed","doesn","download","eventually","expected","extension","extensions","happening","hellip","holding","includes","incorporate","install","installation","installed","latest","location","missed","needed","notebook","noticed","nvultra","package","pasting","permanent","popup","putting","recently","requires","rsquo","selected","selecting","showing","strangely","through","tools","updated","useful","versions","whenever","works","writing"]
	},{
		"title": "I completely refactored SearchLink and now I should probably stop",
		"url": "/2023/01/22/searchlink-refactored/",
		"tags": ["browser","history","markdown","plugin","scripting","search","searchlink","service","spotlight"],
		"date": "Jan 22<span>nd</span>, 2023",
		"ts": "1674406080",
		"summary": "A couple more SearchLink updates before I take a little break from mad coding on it. As of this writing the current release version is SearchLink v2.3.36. I&rsquo;ve done some major refactoring, added some new searches, and I wrote a full test suite that revealed some bugs that needed fixing. First &mdash; and this won&rsquo;t affect you much but I&rsquo;m pretty happy with it &mdash; I refactored the entire script as a Gem that actually works. You can download the repository and run to build the gem, which can then be installed with and will provide you with a working executable that takes raw input on STDIN (piped in with ) or accepts filenames as arguments. This won&rsquo;t matter to most people in the least, but it&rsquo;s great for my testing (I also wrote a complete test suite that&rsquo;s easily updated). Now that the code is broken up into logical pieces, it&rsquo;s much, much easier to maintain. I have a build script (run with ) that compiles the whole thing to a single Ruby script to use in the SearchLink Services, copies it to my clipboard, and opens the SearchLink Services in Automator for updating their scripts. It&rsquo;s a Very Good System&trade;. Second, I refactored all of the various searches into a plugin architecture. SearchLink used to have separate, very long methods for determining whether a search was valid with a bunch of regexes, then another very long case statement for handling the various searches based on the type. Now, every search is in its own class file and defines its own triggers and available searches, and I can add and remove searches very easily. Determining which plugin to run takes four lines of code, and the help/docs can be easily generated. It also opens the door for allowing custom plugins, so you can add your own searches that are more complex than the Custom Searches you can define in the configuration. It just takes a little Ruby, and there are enough examples that even non-Ruby programmers should be able to hack their way through creating a plugin. By the way, SearchLink now has a redesigned distribution method, tagging releases on GitHub and uploading a zip with codesigned Services to each release. This means that the URL for getting the latest version is always , which makes keeping everything pointing to the latest version much simpler. And of course, it&rsquo;s all automated with Howzit. Another Very Good System&trade;. While most of the recent work has gone into refactoring the code, I did&hellip;",
		"keywords": ["duckduckgo","google","search","world","writing","another","answers","automator","bookmark","brave","changelog","chrome","chromium","commands","custom","devonthink","determining","donate","download","duckduckgo","first","fixed","genius","gists","github","history","housekeeping","howzit","instant","markdown","microsoft","overly","plist","published","remove","stdin","safari","seachlink","searchlink","searches","second","services","social","speaking","spotlight","stackoverflow","stuff","system","updated","while","accepts","added","alert","allowing","another","answer","architecture","arguments","attribute","automated","automatically","available","background","based","before","below","block","bookmark","bookmarks","breadth","break","broad","broken","browser","build","bunch","changelog","characters","check","class","click","clipboard","codesigned","coding","command","commented","compiles","complex","configuration","constant","copies","couple","create","creating","custom","default","define","defined","defines","definition","descriptions","determining","distribution","document","documents","download","easier","easily","editor","embeds","encode","encoded","enough","entire","everything","example","examples","executable","expansion","expecting","extract","figure","filenames","files","filter","fixed","fixes","fixing","generated","getting","great","handle","handling","handy","happy","hellip","highlights","history","improved","improvements","including","inclusion","inline","input","install","installed","invalid","keeping","latest","leave","leaving","library","linking","links","little","local","logical","lyrics","maintain","major","makes","match","matching","mdash","method","methods","narrowing","needed","needs","newer","opens","options","output","outputs","overriding","overview","people","pieces","piped","plugin","plugins","pointing","precise","previews","process","processes","programmers","project","properly","provides","query","quick","recent","redesigned","refactored","refactoring","regex","regexes","release","releases","relevant","remove","report","repository","resulting"]
	},{
		"title": "SearchLink -- better searches, better results",
		"url": "/2023/01/16/searchlink-better-searches-better-results/",
		"tags": ["browser","markdown","search","searchlink","video"],
		"date": "Jan 16<span>th</span>, 2023",
		"ts": "1673910120",
		"summary": "Here&rsquo;s another short video for SearchLink. The better your search, the better your results. You&rsquo;re a web professional, you know how to Google, so put your query-crafting skills to use to harness the convenience of SearchLink. By adding the right keywords to a search, you&rsquo;re guaranteed to get the link you were hoping for without leaving your editor. Find out more about SearchLink on the project page, and check out the wiki for all of the documentation",
		"keywords": ["duckduckgo","google","search","world","writing","google","searchlink","adding","another","check","convenience","crafting","editor","guaranteed","harness","hoping","keywords","leaving","professional","project","query","results","right","rsquo","search","short","skills","video"]
	},{
		"title": "SearchLink -- browser history, bookmarks, and Pinboard",
		"url": "/2023/01/16/searchlink-browser-history-pinboard-and-accurate-searching/",
		"tags": ["browser","markdown","searchlink","video"],
		"date": "Jan 16<span>th</span>, 2023",
		"ts": "1673903460",
		"summary": "I made you a video with some SearchLink tips. Note that I&rsquo;m using SearchLink 2.3.15+ in these videos. First up, how would you like to be able to instantly access any page you&rsquo;ve visited in any browser? Or be able to instantly recall pages you&rsquo;ve bookmarked in your browser or on Pinboard? Here you go: As always, find out more about SearchLink on the project page, and check out the wiki for all of the documentation",
		"keywords": ["duckduckgo","google","information","search","technology","world","writing","first","pinboard","searchlink","access","bookmarked","browser","check","instantly","pages","project","recall","rsquo","using","video","videos","visited"]
	},{
		"title": "SearchLink 2.3 -- improved inline search for Markdown writers",
		"url": "/2023/01/16/searchlink-2-dot-3-improved-inline-search-for-markdown-writers/",
		"tags": ["browser","history","markdown","search","searchlink","youtube"],
		"date": "Jan 16<span>th</span>, 2023",
		"ts": "1673879040",
		"summary": "I&rsquo;ve bumped SearchLink up to v2.3, with a whole bunch of new features. I&rsquo;m going to continue the SearchLink tips series as I have time, but for now, here&rsquo;s a rundown of what&rsquo;s new. I&rsquo;ve moved the entire project into a GitHub repository where you can view the code and download the codesigned Services, and I&rsquo;ve split the documentation up from the beast of a single-page document into a wiki that should be more manageable moving forward. This also allowed for some automation in testing and deployment, which should prevent mishaps. DuckDuckGo Zero Click search allows you to first check for DuckDuckGo&rsquo;s Zero Click response (Instant Answers), which for certain searches (like ones where you want a dictionary definition or wikipedia page) will often reveal an instant link to an authoritative page. If no link is found in the result, it will fall back to running a standard search, so you can use it instead of or and see if you prefer the results. Browser history and bookmarks I repaired the Safari History and Bookmarks search, updated the Chrome searches, and added support for Edge, Brave, and Firefox. See Searching Browser History and Bookmarks. Pinboard search More major improvements to Pinboard searching, including caching to speed up search times. Titler Run SearchLink on a single fully-qualified URL to turn it into a Markdown link with the page title as linked text (using Gather if installed). Run SearchLink on a url ending in : to turn it into a reference link with title generated from hostname and/or url path. YouTube search Added a YouTube search. Results are solid if your search has enough of the correct words to find a video. More help You can run SearchLink on the word \"help\" for a popup overview of searches, but now you can also run it on \"docs\" or \"wiki\" to open the wiki in your browser. More embeds Use to create a YouTube embed iframe. Use to create an embed from a Tweet link. See Creating Embeds for more info. Allow space before per-document meta keys to allow nesting in YAML headers Refine software (!s) search. Ignore apple.com links, don&rsquo;t include \"mac\" in search terms De-slugify reference titles when pulled from URL path, remove extensions Fallback title when Gather fails to get a page title Download SearchLink below, see the project page for info, and visit the wiki for all the updated documentation. The latest releases can now always be found at github.com/&hellip;",
		"keywords": ["bookmark","browsers","community","duckduckgo","engines","github","internet","safari","search","websites","added","allow","answers","bookmarks","brave","browser","changelog","chrome","click","creating","donate","download","duckduckgo","embeds","fallback","firefox","fixes","gather","github","history","ignore","improvements","instant","markdown","miscellaneous","pinboard","published","refine","results","safari","searchlink","searching","services","titler","updated","youtube","added","allow","allowed","allows","apple","authoritative","automation","available","beast","before","below","bookmarks","browser","bumped","bunch","caching","certain","changelog","check","codesigned","continue","create","definition","deployment","dictionary","document","download","editor","embed","embeds","ending","enough","entire","extensions","fails","features","first","found","fully","generated","github","going","headers","hellip","history","hosted","hostname","iframe","improvements","including","installed","instant","latest","leaving","linked","links","major","manageable","mishaps","moved","moving","nesting","often","overview","popup","prefer","prevent","project","pulled","qualified","releases","remove","repaired","repository","response","results","reveal","rsquo","rundown","running","search","searches","searching","searchlink","series","shiny","single","slugify","software","solid","space","speed","split","standard","support","terms","testing","times","title","titles","ttscoff","updated","using","video","visit","where","whole","wikipedia","words"]
	},{
		"title": "SearchLink goes to the movies (and other updates)",
		"url": "/2023/01/13/searchlink-goes-to-the-movies/",
		"tags": ["search","searchlink"],
		"date": "Jan 13<span>th</span>, 2023",
		"ts": "1673630580",
		"summary": "I had a rough week last week, stomach issues kept me in bed for almost six days. Finally got some relief yesterday, and am now catching up on work and pumping out some ideas I had while I was out of action (starting with SearchLink). As a regular part of doing show notes for Overtired, I need authoritative links for TV, movie, and actor information. I always create links in my show notes using SearchLink, so having an accurate search for a given link type saves me a lot of time. Thus far I&rsquo;ve always used a custom search () that just did a site-specific search of IMDb (this is included as an example custom search in default installs). This works well enough, but I recently discovered an alternative database that provides an actual API for more accurate results. The Movie Database (TMDb) provides a complete search API, and it&rsquo;s free for non-commercial use. And believe me, as cool as I think SearchLink is, it definitely fits the non-revenue-generating clause of the agreement. So I&rsquo;ve added 4 new searches to SearchLink. Just in case you&rsquo;ve been using SearchLink (or want to get started) but didn&rsquo;t know about this handy trick: you can quickly see a list of all available searches, including any custom searches you&rsquo;ve defined, by typing , selecting it, and running SearchLink on it. A popup will be displayed listing all your options. !tmdb general search query This runs a \"multi\" search across people, tv shows, and movies. This would be similar to a site-specific search of imdb.com using Google or DuckDuckGo, but is less vulnerable to ambiguity. !tmdba actor name Actor search. See notes below regarding spelling. !tmdbt tv show name TV search. Links to the main TMDb landing page for a matching television show title. This page includes the cast and episode lists. !tmdbm movie title Movie search. Links to the TMDb page for a matching movie. The end result of these searches is a link to an info page on themoviedb.org. These appear to be as accurate as IMDb, and have the info I most want (studio/network, cast and crew, air date, season/episode list for tv shows). I don&rsquo;t see any major difference between the TMDb and IMDb info, at least for my uses. It&rsquo;s just presented a little differently (and I think I like TMDb&rsquo;s presentation better). The API does not like fuzzy matching. If you misspell a title or name, you&rsquo;ll get no results. It&rsquo;s perfect if you know exactly what you want to&hellip;",
		"keywords": ["database","movie","movies","shows","actor","aside","before","black","changelog","check","database","discovery","donate","download","duckduckgo","ender","finally","gather","google","hollywood","homebrew","improved","integration","lastly","linking","links","markdown","mastodon","mirror","movie","neither","notes","overtired","pinboard","previously","published","quick","searchlink","searches","twitter","updated","above","abstract","accurate","across","action","actor","added","agreement","almost","ambiguity","announcing","appear","assume","authoritative","available","becomes","believe","below","between","biggest","bookmark","catching","change","check","clause","commercial","completely","conversion","couple","create","custom","customizable","database","default","defined","definitely","description","details","difference","differently","directly","discovered","discussion","displayed","documenting","doing","download","editor","embedding","enders","enough","episode","episodes","exact","example","faster","figured","first","force","fuzzy","general","generating","great","guessing","handle","handles","handy","haven","having","hellip","hours","ideas","ignoring","included","includes","including","incorrect","information","installed","installs","internal","issues","lacks","landing","latest","leaving","linked","linking","links","listing","lists","little","longer","looking","major","match","matching","mdash","middle","mileage","misspell","morning","movie","movies","multi","network","notes","occasionally","offering","options","pages","parsed","partials","people","popular","popup","possibilities","presentation","presented","processing","profile","project","provides","pumping","punctuation","query","queryable","quickly","recently","regular","relief","remember","results","retrieve","return","returned","returning","revamped","revenue","right","rough","routines","rsquo","running","saves","search","searches","searching","season","section","seems","selected","selecting","settings","shows","similar","specific","spell","spelling","spellings","started","starting","stomach"]
	},{
		"title": "Delight customers in less time with TextExpander [Sponsor]",
		"url": "/2023/01/12/delight-customers-in-less-time-with-textexpander/",
		"tags": ["sponsor"],
		"date": "Jan 12<span>th</span>, 2023",
		"ts": "1673532000",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Quickly reply to emails and chats from a library of responses so you can provide full answers to common questions and issues. Keep your whole team on the same page with access to responses that can be personalized on the fly. Whether it’s email, chat, or social media, TextExpander works anywhere and everywhere that your team types. Drop commonly used content into a TextExpander snippet and give it an abbreviation. Share your snippet with your entire team. Just type a few characters to trigger your snippet and the content expands anywhere you type. Get 20% off using the code . Head to textexpander.com/terpstra today",
		"keywords": ["snippet","textexpander","brettterpstra","customer","delight","quickly","share","smarter","terpstra","textexpander","thanks","abbreviation","access","allows","answers","anywhere","brettterpstra","campaign","characters","chats","class","common","commonly","communicatesmarter","content","customers","eliminate","email","emails","entire","everywhere","expands","faster","fingertips","graphics","height","highlighter","https","image","issues","keystrokes","language","library","loading","media","medium","nofollow","noscript","original","personalized","picture","plaintext","podcast","questions","repetitive","reply","responses","rouge","snippet","social","source","sponsoring","srcset","terpstra","textexpander","title","today","trigger","types","typing","uploads","using","whole","width","works"]
	},{
		"title": "Marked 2.6.18 with 100% less jitter",
		"url": "/2023/01/03/marked-2-dot-6-18-with-100-percent-less-jitter/",
		"tags": ["marked","scripting"],
		"date": "Jan 3<span>rd</span>, 2023",
		"ts": "1672761060",
		"summary": "The latest version of Marked 2, 2.6.18, is released for direct customers and in review for Setapp and Mac App Store customers. It has two things that I think will be of interest to many. Too much coffee? Not enough? First, I finally figured out a way to stop the Table of Contents and other fixed-position elements from jittering when the preview scrolls. That started with the last OS as a result of new rubber-banding in web views. I could set the body to fixed position and scroll the containing div, but that broke all of the positioning that Marked needs to do for things like bookmarking and header navigation. After months of experimenting, I decided, just for giggles, to try other positioning values on the body element. Eventually found that temporarily setting it to would stop the jitter and not break my ability to get document-relative positions. In my testing I haven&rsquo;t found any notable repercussions to this, so I&rsquo;m releasing it. Using Marked is significantly better now, what without elements jumping around and such. Second, over the last couple of years, many users have run into complications when embedding their own scripts. It used to be that every time the preview updated, Marked did a full page load, which would then run scripts triggered by onload. But a few versions back I modified the page load such that new content is injected into the container div without requiring a reload. This was a major step forward in usability, but it meant that those custom scripts wouldn&rsquo;t trigger again after the initial load. So I worked up a solution that allows you to \"hook\" the update function, triggering any function whenever the preview updates. It&rsquo;s a simple script block you can embed along with your custom script, e.g. Mermaid. If you use it on every document, you can injected the scripts with a custom preprocessor. See Embedding Scripts for details on . A few other fixes showed up in this release as well. Visit the changelog for a full list",
		"keywords": ["element","jitter","contents","embedding","eventually","first","marked","mermaid","scripts","second","setapp","store","table","using","visit","ability","again","allows","banding","block","bookmarking","break","broke","changelog","coffee","complications","container","containing","content","couple","custom","customers","decided","details","direct","document","element","elements","embed","embedding","enough","experimenting","figured","finally","fixed","fixes","found","function","giggles","haven","header","hellip","initial","injected","interest","jitter","jittering","jumping","latest","major","meant","modified","navigation","needs","notable","onload","position","positioning","positions","preprocessor","preview","relative","release","released","releasing","reload","repercussions","requiring","rsquo","rubber","script","scripts","scroll","scrolls","setting","showed","significantly","simple","solution","started","temporarily","testing","think","trigger","triggered","triggering","updated","updates","usability","users","values","version","versions","views","whenever","worked","wouldn","years"]
	},{
		"title": "Comment Flags Service with long options",
		"url": "/2022/12/31/comment-flags-service-with-long-options/",
		"tags": ["comments","developer","service","terminal"],
		"date": "Dec 31<span>st</span>, 2022",
		"ts": "1672515780",
		"summary": "I&rsquo;ve updated the Comment Flags Service to handle long options. Comment Flags takes a terminal command and adds markup so you can comment on each flag/switch in the command for the purposes of documentation: The previous version of this Service could only handle short options, like or combined short options like . It ignored long options like because I assumed that long options were verbose enough to make sense. I recently changed my mind on that, so now the Service includes comment markers for long options as well. Here&rsquo;s a quick video of running the Service in TextBuddy. (Aside: to run macOS Services in TextBuddy, you need to run a little command in Terminal.. Also, I don&rsquo;t know why my Services are showing up twice, as seen in the video, right now. Mysterious.) Comment Flags Service v1.0.1 Download Comment Flags Service v1.0.1 A Service to make pretty comments for switches/flags in command line examples Published 03/25/21. Updated 12/31/22. Changelog Donate &bull; More info&hellip",
		"keywords": ["command","comment","aside","changelog","comment","donate","download","flags","mysterious","published","service","services","terminal","textbuddy","updated","assumed","because","changed","command","commands","comment","comments","documenting","enough","examples","flags","handle","hellip","ignored","includes","little","macos","markers","markup","options","quick","recently","right","rsquo","running","sense","short","showing","switch","switches","takes","terminal","tools","twice","updated","verbose","version","video","writing"]
	},{
		"title": "Brett's Favorites 2022 - Hardware",
		"url": "/2022/12/31/bretts-favorites-2022-hardware/",
		"tags": ["hardware"],
		"date": "Dec 31<span>st</span>, 2022",
		"ts": "1672466400",
		"summary": "I spent a fair amount on hardware this year, and most of it was very satisfying. Here are some of my favorites. My favorite piece of hardware this year was my Mac Studio. I got the M1 Max chip, 64GB RAM, and a 2TB hard drive. Best Mac I&rsquo;ve ever owned. $3200 US. On the budget side of the list, I have to mention these handy little gear ties. I&rsquo;d always been partial to Velcro One-Wraps (which I still love), but these are great for situations where you want to be able to wrap and unwrap cables quickly. They attach to a single cable, then bend around a bunch (or a coiled cable). Easy to expand and rewrap, and they don&rsquo;t wear out the way hook and pile closures do. They come in short ($5 US) and long ($9 US) packs. This little device gives you single XLR input, headphone output, and one big dial to adjust gain, headphone levels, and mix. It has a 75w pre-amp (and phantom power if you need it). That&rsquo;s enough to power my Shure SM7B without a CloudLifter, which means this single piece of hardware replaced my Scarlett Solo, my CloudLifter, and my A/B mic mute (it has a capacitive touch button on top, just tap it to mute the mic completely). $160 USD. Speaking of Elgato, I expanded my Stream Deck lineup with the Stream Deck + this year, too. It adds 4 dials with a touch screen readout, in addition to 8 of the usual Stream Deck buttons. I can control my Elgato Key Light (brightness and temperature) and Wave Link levels, easily swiping between controls. And Andreas of BetterTouchTool has indicated upcoming support for the dials, so there&rsquo;s going to be even more fun to be had. $200 USD. It&rsquo;s always driven me nuts that I can never find a power strip with outlets configured to handle all of my various converters and plugs. They never have the configuration I happen to need to cover all the bases. Then I found this rackmount power supply from Pyle that has 16 plugs on the back, each on a couple inches of cable. You can fit any power adapter of any size on each one and have plenty of room for the next one. It&rsquo;s sitting on my desk between my monitors (it has rubber feet for desktop use), and offers three 3-prong outlets on the front, as well as a 5V/2A USB charging port. $71 USD. Just a super-handy little charger for your laptop and two USB devices, all in one compact form factor. Takes up less space than Apple&rsquo;s wall warts, and has smart charging for multiple devices. $60 US. We&rsquo;ve had a few&hellip;",
		"keywords": ["anker","apple","elgato","govee","andreas","anker","apple","backlighting","bettertouchtool","brown","charger","cherry","cloudlifter","compact","docker","elgato","express","foldable","govee","hacking","having","keyboard","light","portable","scarlett","shure","speaking","station","stream","studio","synology","takes","ultimate","velcro","white","wraps","active","adapter","added","adjust","affordable","amount","attach","available","bachelor","backlighting","based","basement","bases","because","before","between","bought","brightness","budget","built","bunch","button","buttons","cable","cables","cache","camera","capacitive","cards","charger","charging","closures","coiled","comes","compact","completely","computing","configuration","configured","control","controls","converters","couple","cover","dearly","desktop","device","devices","dials","doesn","drive","driven","drives","dropped","easily","enclosure","enough","everything","expand","expanded","fastest","favorite","favorites","finally","finding","found","front","functionality","gives","going","great","handle","handles","handy","happen","hardware","headphone","inches","indicated","input","insane","internet","jealous","laptop","latest","layer","levels","lighting","lineup","little","loved","mechanical","mention","mentioned","method","modem","modules","monitors","multiple","normally","offers","options","outages","outlets","output","owned","packs","partial","phantom","phone","picked","piece","plenty","plugs","pointed","positioned","previously","price","process","prong","quickly","rackmount","readout","recently","replaced","results","rewrap","router","rsquo","rubber","running","satisfying","screen","setup","shifts","short","sides","single","sitting","situations","smart","solution","source","space","speeds","spent","station","storage","strip","strips","style","super","support","swiping","switches","takes","temperature","tester","think","through","thumb","touch","towers","tried","truly","unwrap","upcoming","updated"]
	},{
		"title": "Shooting Stars with iTelescope.net",
		"url": "/2022/12/21/shooting-stars-with-itelescope-dot-net/",
		"tags": ["astronomy","astrophotography","learning","photography"],
		"date": "Dec 21<span>st</span>, 2022",
		"ts": "1671648900",
		"summary": "I&rsquo;ve been posting a lot of astrophotography to social media lately, and am constantly fielding the question \"how did you do that?\" So allow me to explain, for the sake of being able to link to this next time someone asks. And ooh, look, I fixed my Jekyll Flickr plugin&hellip; I use a service called iTelescope, which gives you remote access to a bunch (24 at present) of telescopes positioned around the world (New Mexico, Spain, Chile, Australia). It&rsquo;s a monthly subscription (multiple levels available) that adds \"points\" to your account. Each telescope has a session/imaging price that deducts from your points when you use one. Getting a great image takes a little planning, and the process is a bit circuitous, but once you get the hang of it you can spend your points wisely. iTelescope will show you what celestial bodies are available to any given observatory at the current time. You determine what you want to photograph, then log into a scope that can see it and program the shot. iTelescope interfaces with Telescopius. Telescopius can show you how each iTelescope scope will frame any target. Once you know what image you want and what scope to shoot it on, you create a plan. In most cases this involves setting exposure times and binning for each color filter (red, green, blue, etc.), but there are a couple of scopes that have a \"color filter\" that can shoot a full-spectrum image in one pass. You set up your \"program\" and schedule it to run at an opportune time for what you&rsquo;re photographing and its position in the sky. Only one person can use a scope at a time, so you use a calendar to reserve your time on your telescope of choice. You set your reservation time (150% of the total exposure time), specify which plan to run, and wait until the morning after to get a notification that tells you whether the imaging was able to complete or not. You&rsquo;re obviously at the mercy of the weather and telescope malfunctions, but there&rsquo;s no charge if your run isn&rsquo;t able to complete. Once the photos are taken, you can download all the images from the iTelescope FTP server. You get JPEGs, TIFFs, and FITS format images (raw and calibrated). Ideally you work with the calibrated FITS images (which automatically apply the dark/bias frame calibrations), loading stacks of each color filter into an astrophotography app and adjusting the balance and levels until you get the image you want. There&rsquo;s a learning curve to all of this&hellip;",
		"keywords": ["space","telescopes","affinity","apple","australia","beavers","chile","flickr","getting","honestly","ideally","jpegs","jekyll","mexico","persona","photo","props","spain","tiffs","telescopius","unofficial","weblog","access","account","action","adjusting","affordable","allow","amazing","apply","astrophotography","automatically","available","background","balance","before","binning","blogged","bodies","bunch","calendar","calibrated","calibrations","called","celestial","charge","choice","circuitous","color","constantly","couple","create","creating","curve","deducts","download","everything","exciting","expendable","explain","exposure","fielding","filter","first","fixed","format","founder","frame","gives","grandfathered","great","green","hellip","highly","hundreds","iphone","itelescope","image","images","imaging","income","interface","interfaces","involves","learn","learned","learning","levels","little","loading","looking","malfunctions","media","mercy","mobile","monthly","morning","multiple","myriad","notification","observatory","opportune","original","owned","particular","person","photograph","photographing","photos","planning","plans","plugin","points","position","positioned","posting","price","process","processing","program","published","recommend","remote","removal","removes","reservation","reserve","rsquo","schedule","scope","scopes","server","service","session","setting","shoot","shooting","showed","since","social","software","space","specify","spectrum","spend","stacks","stars","started","subscribed","subscription","system","systems","taken","takes","target","telescope","telescopes","tells","think","times","tipping","tools","trial","tutorial","tutorials","using","videos","watching","weather","webinars","websites","wisely","works","world","years"]
	},{
		"title": "Expanding your communication with TextExpander",
		"url": "/2022/12/21/expanding-your-communication-with-textexpander/",
		"tags": ["sponsor","textexpander"],
		"date": "Dec 21<span>st</span>, 2022",
		"ts": "1671639540",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! Get your team communicating faster with TextExpander, and keep your team’s knowledge at their fingertips. Put information in the hands of your team, outside of silos. Your team could be sending a unified message to your customers without reinventing the wheel. Store It: Keep your company’s most used emails, phrases, messaging, URLs and more right within TextExpander. Expand It: Deploy the content you need with just a few keystrokes on any device, across any apps you use. TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit TextExpander.com for more info",
		"keywords": ["smile","textexpander","brettterpstra","chrome","deploy","expand","share","store","textexpander","thanks","visit","windows","access","across","again","available","brettterpstra","campaign","class","communicating","company","content","customers","device","emails","faster","fingertips","first","graphics","hands","height","https","iphone","image","information","keystrokes","knowledge","loading","media","medium","message","messaging","nofollow","noscript","original","outside","phrases","picture","podcast","readers","reinventing","right","sending","silos","source","sponsoring","srcset","takeyourtimeback","terpstra","textexpander","title","unified","uploads","wheel","whole","width","within","works"]
	},{
		"title": "Brett's Favorites 2022 - Personal Projects",
		"url": "/2022/11/30/bretts-favorites-2022-personal-projects/",
		"tags": ["bunch","doing","gather","howzit","markdown","marked","nvultra","personal","searchlink","support","tools"],
		"date": "Nov 30<span>th</span>, 2022",
		"ts": "1669826340",
		"summary": "Here&rsquo;s a rundown of the personal projects I&rsquo;ve focused the most on in 2022. A lot of heart and soul (and manic energy) went into these. If any of them prove useful to you, monetary support is always welcomed and appreciated! Bunch Bunch is my text-based Mac automation app. Think DOS batch files or AppleScript with simplified syntax, all launched from a handy menu bar item. Bunch saw a ton of updates this year. Improvements to conditional logic, tagging, heredoc support for embedded scripts, and more new features than I can mention. Check out the changelog to see all of the updates. doing Doing is my command line time tracking app that helps you remember what you were doing last, what you&rsquo;ve done, and how much time you spent on it. Doing saw more updates than I could possibly list. It&rsquo;s become a very full-fledged app at this point, with great time tracking and expansive display options. If you have doing installed, you can see all the changes from 2022 by running . Gather Gather is my command line tool for \"markdownifying\" a website, converting it to Markdown for archiving in your notes. It was a chance for me to learn more about Swift, and became an obsession for a little while. It turned into a very useful utility. howzit Howzit is a command line utility that allows you to take notes on a project in Markdown, and embed runnable commands in it. You can query your notes for a specific topic, and then run all of the commands for that topic automatically. Like a Makefile for your projects, but with better descriptions and notes. Howzit was originally a self-contained script, but this year saw a complete reworking of it as a Ruby gem that can be installed with . If you want to see the development progress, check out the Howzit changelog. Everything from version 1.2.0 on is the progress from this year. na Not Narcotics Anonymous, but Next Action. It&rsquo;s a tool for command-line interaction with TaskPaper files, allowing you to store per-project todo lists in every directory and immediately see what needs to be worked on next. This year saw NA packaged as a gem as well, and added the ability not just to parse and display actions, but to add and modify them. It&rsquo;s now fully qualified as a way to work with TaskPaper files without ever leaving the command line. SearchLink I maintain that this is the most useful tool I&rsquo;ve ever made. It allows you to write very simple syntax in a Markdown file&hellip;",
		"keywords": ["changelog","command","communication","document","interface","languages","lightweight","markdown","markup","technical","action","anonymous","apple","applescript","bunch","check","doing","everything","gather","github","hookmark","howzit","improvements","makefile","markdown","marked","narcotics","searchlink","silicon","swift","taskpaper","think","ability","access","actions","added","adding","address","allowing","allows","amazing","amount","anymore","appreciated","archiving","automatically","automation","based","batch","became","bookmarks","browser","bucks","chance","changelog","changes","check","command","commands","commercial","compatibility","complications","conditional","contained","continued","converting","daily","decade","delays","descriptions","deserves","development","directory","display","doing","donation","dying","email","embed","embedded","energy","ensuring","expansive","falls","features","files","fixes","fledged","focused","fully","going","great","handy","haven","heart","helps","heredoc","howzit","including","individual","installed","interaction","launched","learn","leaving","lists","little","lives","logic","loved","mailing","maintain","manic","markdownifying","mention","modify","monetary","needs","notes","nvalt","nvultra","obsession","optimize","options","originally","packaged","parse","people","personal","podcast","point","possibly","previewing","project","projects","promised","prove","qualified","query","released","releases","remember","requests","reworking","right","rsquo","rundown","runnable","running","script","scripts","significant","simple","simplified","specific","spend","spent","store","stretch","support","switching","syntax","tagging","topic","tracking","turned","updated","updates","updating","useful","using","utility","various","version","waiting","website","welcomed","where","while","wondering","worked","write","years"]
	},{
		"title": "Web Excursions for November 25, 2022",
		"url": "/2022/11/25/web-excursions-for-november-25-2022-part-1/",
		"tags": ["bookmarks","editor","popclip","scripting","themes"],
		"date": "Nov 25<span>th</span>, 2022",
		"ts": "1669410600",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Has it really been over four months since I published a one of these roundups? Automation failure, sorry. Here&rsquo;s a bunch! By the way, if you&rsquo;re looking for the Black Friday software deals, check out Michael Tsai&rsquo;s list. And if you want 30% off of Marked 2, just use the coupon at checkout. neovide/neovide: No Nonsense Neovim Client in Rust This is a simple graphical user interface for Neovim (an aggressively refactored and updated Vim editor). Where possible there are some graphical improvements, but functionally it should act like the terminal UI. Adds some nice animations, blurred floating windows, and remote TCP support. marcusbuffett/pipe-rename: Rename your files using your favorite text editor A great CLI to rename your files in batch using your favorite text editor. PopClip extension snippets PopClip can now create extensions with YAML, just type it, select it, and watch PopClip do some magic. Check out this video from my buddy Jay Miller. yuya-takeyama/jr: jq like JSON processor for Rubyists I know Ruby isn&rsquo;t the most popular language these days, but it&rsquo;s what I&rsquo;m fastest in for scripting. This command line JSON processor lets you use Ruby to create queries and maps for parsing JSON on the command line. I like it. MacMenuBar.com A curated directory of 700+ Mac menu bar apps. Small apps to help you become more productive and maximize your workflow with MacOS. (Just in case your menu bar had some room left in it.) webredone/theme-redone Theme Redone is a custom WordPress theme starter/framework with its own Gutenberg blocks solution and a CLI that speeds up the block creation process. It&rsquo;s been a while since I was motivated to build my own WordPress theme (since I switched to Jekyll), but I run the Overtired website on WP and have been itching to improve the layout. This seems like a great way to scaffold a new theme when I get around to it&hellip; Dendron \"Dendron is a note taking tool that helps technical teams organize and reference any amount of information.\" Interesting knowledge management solution leveraging VS Code. Hat tip to Jay Miller. charmbracelet/gum: A tool for glamorous shell scripts 🎀 A clever bunch of functions for prettifying your shell scripts. Nice inputs, menu selections, option filtering, and more. I&rsquo;ve implemented support for these in a few of my CLIs&hellip;",
		"keywords": ["architecture","command","express","interface","software","studio","visual","alfehxp","amazon","automation","blackfriday","backblaze","black","brett","check","client","dendron","enclosure","express","extensions","friday","gutenberg","interesting","jekyll","macmenubar","macos","marked","michael","miller","neovim","nonsense","orafxbhvg","overtired","popclip","ports","readme","redone","rename","rewind","rubyists","seems","small","theme","thunderbolt","where","wordpress","affordably","aggressively","amount","amounts","animations","backblaze","backs","batch","black","block","blockquote","blocks","blurred","brettterpstra","brought","buddy","build","bunch","cards","charmbracelet","check","checkout","class","clever","cloud","command","computer","coupon","create","creation","curated","custom","deals","dendron","directory","drives","editor","entire","everything","excursions","extension","extensions","external","fastest","favorite","files","filtering","floating","found","framework","friday","functionally","functions","github","giving","glamorous","graphical","great","handled","heard","height","hellip","helps","highlighter","holding","https","image","implemented","improve","improvements","including","information","inputs","interface","itching","kjaymiller","knowledge","language","layout","ldquo","legit","leveraging","loading","locally","looking","machine","macmenubar","magic","management","marcusbuffett","massive","master","maximize","media","mjtsai","motivated","neovide","noscript","organize","original","overtiredpod","paddle","parsing","partnership","picture","pilotmoon","plaintext","popular","possible","prettifying","privacy","process","processor","productive","projects","published","queries","rdquo","recognition","recordings","redone","refactored","reliably","remote","rename","rewind","right","rouge","roundups","rsquo","scaffold","scripting","scripts","secure","securely","seems","selections","shell","simple","since","snippets","software","solution","sorry","source","speech","speeds","srcset","starter","storage","stored","support","switched","takeyama","taking","teams","technical","terminal","theme","title","today"]
	},{
		"title": "Brett's Favorites 2022 - Mac Apps",
		"url": "/2022/11/24/bretts-favorites-2022-mac-apps/",
		"tags": ["appreview","browser","developer","hookmark","keyboard","macos","productivity","setapp"],
		"date": "Nov 24<span>th</span>, 2022",
		"ts": "1669306320",
		"summary": "I&rsquo;m getting an early start on this list this year. This will be some of my most used apps, with a special emphasis on apps that have seen significant updates in the last year. I&rsquo;ll follow this post up with a couple more: definitely one for my favorite personal projects in 2022, one for hardware, and maybe one for iOS apps of note. There may even be a followup to this post if I have some honorable mentions or an app gets a major update before the end of the year. Watch for those in December/January. Apps available on Setapp will be noted. As I mention frequently, Setapp is a great deal at $10/month for 100+ excellent apps. If you&rsquo;re a Setapp user, you should always try to use the Setapp version of your favorite apps to make sure the developer gets a piece of your subscription! Affinity Photo 2 Just out last month, all three Affinity apps from Serif have seen a major upgrade. I covered some of the new stuff in Photo on Overtired #307, but suffice to say they made significant changes that made some amazing apps even better. Photo especially is now a true contender for Photoshop. Kaleidoscope My favorite diff app changed hands again, this time to some indie developers who have shown it some real love. It&rsquo;s expensive, but if you know you need an app like this, totally worth it. Curio Another app stole Curio&rsquo;s name this year, but I&rsquo;m talking about the one from Zengobi. Curio gets very regular updates and has put out some major versions this year alone. With the number of features it packs into a brainstorming/research/project management app, it&rsquo;s amazing that there are even new features left to add, but George always finds a way. RegexRX Just a mention of what is still my favorite Regex pattern tester. I&rsquo;ve mentioned it many times before, so I won&rsquo;t bore you, but I use it so often I&rsquo;d be remiss to leave it off the list. CleanShot X Setapp Holy cow this app is crazy good. If you take screenshots, you need CleanShot X. I couldn&rsquo;t begin to list all of its features in this post format, but let me say it does everything you could hope for in the most elegant possible ways. Just try it. Seriously. Bike If you like TaskPaper, check out the new outliner from the same developer. Simple, elegant, great keyboard shortcuts, and portability to a variety of useful formats. Warp A great new terminal app that adds a lot of unique features, including AI command suggestions, great&hellip;",
		"keywords": ["affinity","curio","regexrx","affinity","andreas","another","bettertouchtool","choosy","cleanmymac","cleanshot","curio","davinci","george","hookmark","houdahspot","kaleidoscope","macupdater","mailmate","overtired","photo","photoshop","popup","regex","regexrx","resolve","serif","seriously","setapp","simple","spotlight","stream","taskpaper","toketaware","watch","zengobi","ability","added","again","alone","amazed","amazing","autocomplete","available","before","begin","between","blocks","brainstorming","browser","browsers","changed","changes","cheat","check","choice","cleanup","click","command","compromise","contender","couldn","couple","covered","crazy","create","daily","decide","default","definitely","deletion","detection","developer","developers","documents","elegant","elements","email","emphasis","especially","everything","excellent","expensive","favorite","features","files","finds","followup","format","formats","getting","great","handling","hands","handy","hardware","honorable","hotkey","hundreds","ithoughts","images","including","indie","items","joined","keeps","keyboard","languages","leave","level","linked","links","lsquo","major","malware","management","mapping","maybe","mention","mentioned","mentions","money","multiple","navigation","notch","noted","notes","notifying","offering","often","optimization","outliner","output","packs","pages","pattern","personal","piece","portability","possible","programming","project","projects","providing","rebranded","regular","release","released","remiss","removal","research","rsquo","rules","screenshots","search","secure","selection","sharing","sheets","shell","shortcuts","shown","significant","significantly","similar","special","specific","stable","stole","stuff","subscription","suffice","suggestions","support","system","talking","terminal","tester","think","thorough","times","tools","totally","types","unique","updates","updating","upgrade","useful","variety","version","versions","video","worth","years"]
	},{
		"title": "IPWhois: A Fast IP Geolocation API [Sponsor]",
		"url": "/2022/11/17/ipwhois-a-fast-ip-geolocation-api/",
		"tags": ["sponsor"],
		"date": "Nov 17<span>th</span>, 2022",
		"ts": "1668689160",
		"summary": "Thanks to IPWhois for sponsoring BrettTerpstra.com this week! Geolocation features are a growing element in website and app design, providing a more robust user experience. No configuration of IP libraries Location personalization Time zone personalization with offset from UTC and summer time Currency personalization to help increase conversion rates for sales Deliver results in JSON, XML, or Newline formats Plenty of documentation to help you through configuration options Exact data delivery using a self-learning neural network Multilingual response options, including English, Russian, German, Japanese, Chinese, French, Spanish, and Portuguese No access tokens needed for the free plan Top-notch security with 256-bit SSL encryption vis HTTPS Free: For personal use or testing for up to 10,000 requests per month Pro ($10.99 per month): Includes 250,000 requests per month, SSL access, geo DNS, fast anycast-enabled servers, and technical support Business ($29.99 per month): Includes 2 million requests per month, SSL access, geo DNS, fast anycast-enabled servers, and technical support Platinum ($79.99 per month): Includes 10 million requests per month, SSL access, geo DNS, fast anycast-enabled servers, and technical support All plans include automatic renewal but you can upgrade, downgrade, or cancel at any time. Check it out at IPWhois.io",
		"keywords": ["location","service","brettterpstra","business","check","chinese","currency","deliver","english","exact","french","geolocation","german","https","ipwhois","ipwhois","includes","japanese","location","multilingual","newline","platinum","plenty","portuguese","pricing","russian","spanish","thanks","access","anycast","automatic","brettterpstra","cancel","class","configuration","content","conversion","create","customized","deliver","delivery","design","determining","downgrade","element","enabled","encryption","experience","feature","features","formats","geolocation","growing","height","https","image","including","increase","ipwhois","learning","libraries","loading","location","makes","media","million","needed","network","neural","nofollow","noscript","notch","offers","offset","options","original","personal","personalization","picture","plans","pricing","providing","rates","relevant","renewal","requests","response","results","right","robust","sales","security","servers","source","sponsoring","srcset","summer","support","technical","testing","through","tiers","title","tokens","upgrade","uploads","users","using","visitors","website","width"]
	},{
		"title": "What gets in the way of your productivity? [Sponsor]",
		"url": "/2022/11/10/what-gets-in-the-way-of-your-productivity-sponsor/",
		"tags": ["email","productivity","sponsor","textexpander"],
		"date": "Nov 10<span>th</span>, 2022",
		"ts": "1668088800",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! For many professionals, repetitive typing and boring tasks suck up a lot of valuable time in the workplace. Drop your commonly used content into the TextExpander app and give it an abbreviation Add customizations like today’s date, fill-in-the-blank fields, timestamps, and more to make content feel personalized Then all you have to do is type a few characters to expand your content or do a quick search to access it wherever you type BrettTerpstra.com readers get 20% off their first year. Visit TextExpander.com to get started",
		"keywords": ["email","productivity","smile","workplace","brettterpstra","create","digging","enter","manually","repeatedly","textexpander","thanks","think","visit","abbreviation","abbreviations","access","anywhere","authentic","beginning","blank","boring","brettterpstra","campaign","characters","class","commonly","content","customizations","eliminating","email","endless","expand","fields","first","graphics","height","hours","https","image","impact","improve","keystrokes","loading","media","medium","message","nofollow","noscript","original","personalized","personalizing","picture","platform","podcast","possibilities","powerful","productivity","professionals","questions","quick","readers","relevant","repetition","repetitive","replies","responding","search","secret","sharing","short","shortcuts","source","spent","sponsoring","srcset","started","streamline","takeyourtimeback","tasks","template","templates","terpstra","textexpander","through","timestamps","title","today","track","typing","uploads","valuable","wherever","width","workplace","works"]
	},{
		"title": "Keep your software up-to-date effortlessly with MacUpdater [Sponsor]",
		"url": "/2022/10/27/keep-your-software-up-to-date-effortlessly-with-macupdater-sponsor/",
		"tags": ["sponsor"],
		"date": "Oct 27<span>th</span>, 2022",
		"ts": "1666875600",
		"summary": "Thanks to MacUpdater for sponsoring BrettTerpstra.com this week! I&rsquo;ve been using MacUpdater for quite a while, keeping all of my software up to date across all of my Macs. I love updating all of my software with just a couple of clicks. MacUpdater scans and displays all installed software on your Mac &mdash; see at a glance what app or plugin needs an update! MacUpdater provides version information for over 60,000 apps (and growing), and over 6,000 of the most popular apps can be updated directly from within MacUpdater with a single click The Pro edition supports more than apps: audio plugins, preference panes, quicklook plugins, and more MacUpdater is flexible - you can control MacUpdater from the main app, the menubar, the Touch Bar, or the command-line It&rsquo;s an universal build and fully compatible with Apple Silicon The recent 2.3 update brings support for new technologies in macOS 13 \"Ventura\" and enables transparent handling of updates delivered in packages (.pkg) BrettTerpstra.com readers get 15% off - just use the coupon code at corecode.io/macupdater",
		"keywords": ["software","sparkle","store","apple","brettterpstra","macupdater","silicon","thanks","touch","ventura","across","audio","brings","build","click","clicks","command","compatible","control","corecode","couple","coupon","delivered","directly","displays","edition","enables","flexible","fully","glance","growing","handling","information","installed","keeping","macos","macupdater","mdash","menubar","needs","packages","panes","plugin","plugins","popular","preference","provides","quicklook","readers","recent","rsquo","scans","single","software","sponsoring","support","supports","technologies","transparent","universal","updated","updates","updating","using","version","while","within"]
	},{
		"title": "Marked 2 and Hookmark (nee Hook)",
		"url": "/2022/10/25/marked-2-and-hookmark-nee-hook/",
		"tags": ["hookmark","marked"],
		"date": "Oct 25<span>th</span>, 2022",
		"ts": "1666730100",
		"summary": "I released a new version of Marked 2 this week, featuring integration with Hookmark (formerly known as Hook). First, I&rsquo;ll explain the Hook-to-Hookmark name change. Hookmark 4.0 was released this week as a rebranding. The verb and noun \"hook\" (as well as the adjective \"hooked\") are all used to describe the bidirectional links that the app creates, and there was confusion when talking about it as to whether you were referring to the app, or to one of the links it creates. It&rsquo;s like the mistake I made calling Bunch \"Bunch,\" but also calling one of its files a \"Bunch.\" The rebranding to Hookmark simply allowed the app to be talked about separately from the connections it creates. So what did Marked add? You can now add links as images in a Markdown document and the referenced resource will be resolved when previewing the markup. That&rsquo;s especially handy in notes where you&rsquo;re referencing a local image that might move in the future&hellip; just grab a Hook bookmark for it and use that in your notes. The image will continue to display properly in Marked even if the original file is moved or renamed. This works perfectly with the Copy Markdown Link to New Screenshot Shortcut for saving a screen grab and generating a hook link in one quick step. You can take a screenshot, then paste the result directly into a note and&hellip; you&rsquo;re done. I&rsquo;m still working on fixing some of Marked&rsquo;s features that rely on Python and/or Ruby in the wake of macOS removing those languages from the default install. Most issues can be solved by installing the Command Line Tools, but I&rsquo;m making an effort to remove the need for them (by converting the scripts to Swift, mostly). This affects CriticMarkup and Scrivener rendering, primarily. Watch for a new version soon. The latest update is available via the Mac App Store, Setapp, or with Marked->Check For Updates for direct customers. See all the changes in the changelog",
		"keywords": ["changelog","communication","languages","lightweight","markdown","markup","setapp","store","technical","bunch","check","command","criticmarkup","first","hookmark","markdown","marked","python","screenshot","scrivener","setapp","shortcut","store","swift","tools","updates","watch","adjective","affects","allowed","available","bidirectional","bookmark","calling","change","changelog","changes","confusion","connections","continue","converting","creates","customers","default","describe","direct","directly","display","document","effort","especially","explain","features","featuring","files","fixing","formerly","generating","handy","hellip","hooked","image","images","install","installing","integration","issues","languages","latest","links","local","macos","making","markup","mistake","mostly","moved","notes","original","paste","perfectly","previewing","primarily","properly","quick","rebranding","referenced","referencing","referring","released","remove","removing","renamed","rendering","resolved","resource","rsquo","saving","screen","screenshot","scripts","separately","simply","solved","talked","talking","version","where","working","works"]
	},{
		"title": "na with a global file",
		"url": "/2022/10/25/na-with-a-global-file/",
		"tags": ["productivity","tagging","taskpaper"],
		"date": "Oct 25<span>th</span>, 2022",
		"ts": "1666727520",
		"summary": "One more round of updates for na. I got a couple of questions about whether na could work with one centralized file. The answer was, at the time, \"not really,\" but I&rsquo;ve made some changes to facilitate that. Get the latest version using , or do a fresh install by following the instructions on the project page. The core idea behind na is that you have a TaskPaper file for every project in that project&rsquo;s root directory. In order to combine multiple projects in one file, you would either need to make use of tags, or create a TaskPaper project for each one in the global file. You can now do this, either manually or have na use the current working directory as a tag or project. To use a global file, run na with the global flag . You can make this permanent by running (or if you&rsquo;ve already created a config file). Note that when using , previous preferences will be overwritten with only what exists on the command line at the time it&rsquo;s run, so if you want to specify other options like default extension or Next Action tag, either include those in the command or edit the file manually. When the flag is used, you can additionally include the flag (where TYPE is or ) to determine how the current working directory is applied to new/updated actions. If you use , the action will be added to a project with the same name as the current directory. If you use , the current directory name will be applied as a tag. The default value is \"none,\" applying neither unless one is specified. Use or manually add/modify the key in to make the preference permanent. By default, na adds all new/moved actions to the top of the target project (or Inbox). There&rsquo;s now an flag that allows you to put new/moved actions at the end of the target project as the last item in the list (or the first item before a subproject). can be used with and . To make this a global change, use as a global flag and save it to the config, or add to ",
		"keywords": ["config","action","append","global","inbox","prepend","taskpaper","action","actions","added","additionally","allows","answer","applied","applying","before","behind","centralized","change","changes","command","config","couple","create","created","default","directory","either","exists","extension","first","fresh","global","install","instructions","latest","manually","modify","moved","multiple","neither","options","overwritten","permanent","preference","preferences","project","projects","questions","round","rsquo","running","specify","subproject","target","tweaks","updated","updates","usability","using","value","version","where","working"]
	},{
		"title": "na can now edit your actions",
		"url": "/2022/10/22/na-can-now-edit-your-actions/",
		"tags": ["productivity","search","tagging","taskpaper"],
		"date": "Oct 22<span>nd</span>, 2022",
		"ts": "1666447260",
		"summary": "So I&rsquo;ve fleshed na out into a pretty great tool for querying and adding to a TaskPaper file, making it easy to manage having a todo list in every project directory I work in. But there was one thing I couldn&rsquo;t do quickly from the command line: mark a task as completed. As of version 1.2, na can now perform actions on tasks based on a quick text/tag search. Just run and it will find an entry containing \"do,\" \"that,\" and \"thing\", mark it @done, and archive it. See for a full list of actions you can perform &mdash; everything from adding/removing tags to completing/deleting/archiving. You can even add notes to existing actions. It&rsquo;s pretty nifty. There are still plenty of times where it&rsquo;s faster to just open up TaskPaper or load the todo file in my editor with a TaskPaper extension, but for quick one-offs I no longer have to leave the command line. By the way, the update command works best if you have installed. You can get it with . It will fall back to and then to a readline interface, but will give you the most elegant menus1. There are also new commands for viewing project hierarchies, listing todo file history, seeing the changelog, and more. Check out the docs! If this is the feature that finally got you to install na, see the Installation instructions in the docs. It&rsquo;s a gem, so the simplest install is , but there are tips for using in there as well. If you&rsquo;re already using na, you can update to v1.2.x using or , depending on how you installed it. and for saved searches () will match any known todo file when adding an action will match any existing project when adding an action will update an existing task, moving it between projects, adding and removing tags, marking finished, setting priority, adding/replacing notes, or archiving it flag for searches by tag/value will list all projects in a todo file, optional argument to query known todos switch for Added tag to next/find/tagged to include @done actions in the output Use to view the changelog and see recent changes A parenthetical at the end of an action will be interpreted as a note. If &ndash;note is additionally supplied, entered note is concatenated to parenthetical note. Allow multi-line notes Include arguments with to narrow down which file to edit (partial matching) Improved handling of todo file search arguments for If todo file search returns zero results, loosen search When using !negations in todo matching&hellip;",
		"keywords": ["added","allow","changed","changes","check","display","doing","error","fixed","improved","inbox","installation","installing","offer","prefer","project","query","saved","search","taskpaper","unable","action","actions","adding","additionally","allow","append","archive","archiving","argument","arguments","available","backlink","banner","based","between","brace","brettterpstra","changed","changelog","changes","charmbracelet","class","command","commands","completed","completing","concatenated","containing","contains","couldn","created","curly","defaults","deleting","depending","directory","editor","elegant","element","endnotes","entered","entry","everything","extension","fallbacks","faster","feature","files","finally","finished","fixed","fleshed","fnref","footnote","footnotes","github","great","handling","having","height","hierarchies","highlighter","history","https","image","improved","install","installed","installing","instructions","interface","interpreted","itself","junegunn","language","ldquo","leave","listing","loading","longer","loosen","making","marking","match","matching","mdash","media","menus","moving","multi","multiple","narrow","naupdateheader","ndash","negation","negations","niftier","nifty","noscript","noteref","notes","optional","options","original","output","overwrite","parent","parenthetical","partial","people","picture","plaintext","plenty","prerequisites","priority","project","projects","query","querying","quick","quickly","rdquo","readline","recent","regex","removing","replacing","responsibility","results","returns","reversefootnote","rouge","rsquo","running","saved","search","searched","searches","seeing","selections","setting","significantly","simplest","smaller","source","specifically","specifies","srcset","string","supplied","switch","tagged","taskpaper","tasks","think","times","title","todos","token","upgrade","uploads","using","value","version","viewing","where","width","works"]
	},{
		"title": "Why I use SaneBox [Sponsor]",
		"url": "/2022/10/20/why-i-use-sanebox-sponsor/",
		"tags": ["email","sponsor"],
		"date": "Oct 20<span>th</span>, 2022",
		"ts": "1666282080",
		"summary": "Thanks to SaneBox for sponsoring BrettTerpstra.com again this week! I wanted to take the opportunity to offer a personal endorsement, and talk a little bit about how and why I&rsquo;ve used SaneBox over the last decade. First of all, if you still haven&rsquo;t heard of SaneBox, it&rsquo;s a service that works with any email provider to automatically determine what actually needs to be in your Inbox, and what can be read later, moving emails accordingly. That&rsquo;s the simple version, anyway. It can also sort your email to separate newsletters, bulk emails, and spam. You can add custom filtering, as well as \"blackhole\" certain addresses, snooze emails, and automatically do some inbox cleaning. It&rsquo;s very easy to use, but has some powerhouse features. SaneBox starts working out of the gate, and you can start \"training\" it by simply moving emails from your Inbox to the @SaneLater folder using any email app on any platform. It just learns by watching how you use your email. Any similar emails in the future will automatically follow that first one. Getting spam that persistently makes it past spam filters (ahem, political parties)? Just move it into @SaneBlackHole and never see it again. I use a combination of SaneBox and Smart Mailboxes in MailMate and Spark to always have only the most important emails in front of me when I open my Inbox. SaneBox decides what&rsquo;s \"important,\" and my Smart Mailboxes show only unread or flagged messages, or messages I&rsquo;ve tagged \"To Reply\" and haven&rsquo;t replied to. I have a @LATER folder that combines the content of several of my SaneBox folders for review at my leisure. Everything else gets hidden away, accessible only through search. It&rsquo;s absolutely de-stressed email and helped me stay sane. I highly recommend cleaning up your inbox today and keeping it that way forever with Sanebox. Sign up today and save $25 on any subscription",
		"keywords": ["apple","email","filtering","sanebox","spamming","webmail","brettterpstra","everything","first","getting","inbox","later","mailmate","mailboxes","reply","saneblackhole","sanebox","sanelater","sanebox","smart","spark","thanks","accessible","addresses","again","anyway","automatically","blackhole","certain","cleaning","combination","combines","content","custom","decade","decides","email","emails","endorsement","features","filtering","filters","first","flagged","folder","folders","forever","front","haven","heard","helped","hidden","highly","important","inbox","keeping","later","learns","leisure","little","makes","messages","moving","needs","newsletters","offer","parties","persistently","personal","platform","political","powerhouse","provider","recommend","replied","rsquo","search","separate","service","several","similar","simple","simply","snooze","sponsoring","starts","stressed","subscription","tagged","through","today","training","unread","using","version","wanted","watching","working","works"]
	},{
		"title": "Improve Team Communication with TextExpander [Sponsor]",
		"url": "/2022/10/17/improve-team-communication-with-textexpander-sponsor/",
		"tags": ["sponsor","textexpander"],
		"date": "Oct 17<span>th</span>, 2022",
		"ts": "1666023600",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! Get your team communicating faster with TextExpander, and keep your team’s knowledge at their fingertips. Put information in the hands of your team, outside of silos. Your team could be sending a unified message to your customers without reinventing the wheel. Store It: Keep your company’s most used emails, phrases, messaging, URLs and more right within TextExpander. Expand It: Deploy the content you need with just a few keystrokes on any device, across any apps you use. TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit TextExpander.com for more info",
		"keywords": ["smile","textexpander","brettterpstra","chrome","deploy","expand","share","store","textexpander","thanks","visit","windows","access","across","again","available","brettterpstra","campaign","class","communicating","company","content","customers","device","emails","faster","fingertips","first","graphics","hands","height","https","iphone","image","information","keystrokes","knowledge","loading","media","medium","message","messaging","nofollow","noscript","original","outside","phrases","picture","podcast","readers","reinventing","right","sending","silos","source","sponsoring","srcset","takeyourtimeback","terpstra","textexpander","title","unified","uploads","wheel","whole","width","within","works"]
	},{
		"title": "na with saved search",
		"url": "/2022/10/07/na-with-saved-search/",
		"tags": ["history","search","tagging"],
		"date": "Oct 7<span>th</span>, 2022",
		"ts": "1665177480",
		"summary": "This might be the last big na update for a little while, but it&rsquo;s got some great stuff in it. I&rsquo;m really aiming to make this a great companion to TaskPaper, and I think it&rsquo;s coming along nicely. First, you can now do natural language date comparisons for tag searches. For example, if you have an tag in your todo file, you can run to find everything that&rsquo;s currently due. Or to find upcoming tasks. If a tag contains a date, it will be automatically detected and the comparison will be interpreted as a natural language date. You can, of course, use any valid date format for a specific date. Comparisons using , , and will still do actual text comparisons, so you can perform a query like to see everything with an October, 2022 due date. So, say you have a query like \"due<=in 2 days\" that you run frequently. Now you can add to the command, e.g. , to save that search for future use. Once saved, you can just run to repeat the search. This can be especially handy for searches with multiple criteria, such as . Since the last time I wrote about it&hellip; like 2 days ago? I&rsquo;ve not been sleeping well. If no + or ! tokens are given in search, default to AND search for tokens to allow adding new actions to todo files in subdirectories You can use to display only actions within a specific project. Specify subprojects with a path, e.g. . Partial matches allowed, works with , , and and recognize * and ? as wildcards flag for find command flag for and commands to specify a todo file from history will list (and optionally search) known todo files from history When specifying arguments to , allow paths separated by / to do more exact matching Highlight search terms in results Added flag to and to default to OR boolean combination of search terms/tags Fuzzier matching of todo file history Allow wildcards (* and ?) when matching todo history Allow multiple todo queries separated by comma When adding a project, don&rsquo;t use Ruby #capitalize, which downcases the rest of the project name Multiple search terms overriding each other To get all this goodness, update to the latest version (1.1.23+) using or . A big thanks goes to Ralf Hülsmann, who has brought a lot of especially great feature requests to light",
		"keywords": ["added","allow","changed","comparisons","fixed","first","fuzzier","highlight","improved","multiple","natural","partial","saved","searches","since","specify","title","taskpaper","actions","adding","aiming","allow","allowed","arguments","automatically","boolean","brettterpstra","brought","capitalize","changed","changes","class","combination","coming","comma","command","commands","companion","comparison","comparisons","contains","criteria","default","detected","display","downcases","especially","everything","exact","example","feature","files","fixed","format","goodness","great","handy","height","hellip","highlighter","history","https","image","improved","interpreted","language","latest","ldquo","light","little","loading","lsmann","matches","matching","media","multiple","natural","nicely","noscript","optionally","original","overriding","paths","picture","plaintext","project","projects","queries","query","rdquo","recent","recognize","regex","repeat","requests","results","rouge","rsquo","saved","search","searches","separated","sleeping","source","specific","specify","specifying","srcset","stuff","subdirectories","subprojects","tagged","tasks","terms","thanks","think","title","todos","tokens","upcoming","upgrade","uploads","using","valid","version","while","width","wildcards","within","works","wrote","yesterday"]
	},{
		"title": "na as a TaskPaper query tool",
		"url": "/2022/10/06/na-as-a-taskpaper-query-tool/",
		"tags": ["productivity","search","tagging","taskpaper"],
		"date": "Oct 6<span>th</span>, 2022",
		"ts": "1665053580",
		"summary": "I&rsquo;ve made some changes to na that make it a very handy tool for general querying of a TaskPaper file. Now you can quickly find actions based on project, tag, or text content right from the command line. has subcommands for searching text () and for matching tags (). As your todo file grows, these are handy for narrowing down what you need to work on at any given time. I believe I&rsquo;ve improved their usefulness in the last couple releases. Just run to install or upgrade. First, the and commands no longer require the next action tag (@na) to be present to match. You can still query just next actions by adding to the command or to the command. But by default all matching actions will be shown with and , not just next actions. You can now use to require that a tag or search term not exist on matched actions, e.g. . You can now use wildcards (* or ?) in text and tag searches. You can also use the flag with the command to interpret the search as a regular expression. Invert any search results with to display all actions not matching the search. You can perform value comparisons with more operators on tag values now, too. When using the command, specify your tag searches as tokens containing , , and to perform a numeric comparison (e.g. ). You can do string searches with (contains), (starts with), and (ends with), e.g. . These can be combined with wildcard matching, e.g. . You can also query specific projects with . The project can be a simple string or a path separated with or to match subprojects, e.g. . The project matching accepts partial matches, so that example could be . If there&rsquo;s only one project in the current directory (or subdirectories if using ), you don&rsquo;t need to specify a path, will find it. The flag (which can be shortened as ) works with , , and . This can be especially handy if the directory contains multiple TaskPaper files as a quick means of targeting just one project. One other thing recently added is the ability to add actions to a specific project rather than just \"Inbox:\". Just use to add to the named project (case insensitive). If the project isn&rsquo;t found in the selected target file, it will be created at the top. Hopefully all of this broadens the usefulness of . Let me know if you have any feature requests",
		"keywords": ["action","first","hopefully","inbox","invert","taskpaper","ability","accepts","action","actions","added","adding","based","believe","broadens","changes","command","commands","comparison","comparisons","containing","contains","content","couple","created","default","directory","display","especially","example","exist","expression","feature","files","found","general","grows","handy","improved","insensitive","install","interpret","longer","match","matched","matches","matching","multiple","named","narrowing","numeric","operators","partial","project","projects","query","querying","quick","quickly","rather","recently","regular","releases","requests","results","right","rsquo","search","searches","searching","selected","separated","shortened","shown","simple","specific","specify","starts","string","subcommands","subdirectories","subprojects","target","targeting","tokens","upgrade","usefulness","using","value","values","wildcard","wildcards","works"]
	},{
		"title": "Managing Ruby Gems using Homebrew",
		"url": "/2022/10/03/managing-ruby-gems-using-homebrew/",
		"tags": ["homebrew","scripting"],
		"date": "Oct 3<span>rd</span>, 2022",
		"ts": "1664802000",
		"summary": "Whenever I publish a gem like doing, howzit, or na, I always suggest that if you have any trouble installing with , you should use . This is because the preferred way is to do it without (for multiple reasons), but those who don&rsquo;t do anything else with Ruby and just want to use tools distributed as gems are almost definitely using the system Ruby, which won&rsquo;t allow updating its gem folder without . I was recently turned onto another option, though, which is perfect for people who use Homebrew and don&rsquo;t care much about Ruby: . You can install brew-gem with . Once installed, instead of , you can run , and then your gems will be installed to your Cellar and managed with Homebrew. To upgrade to the latest version of a gem, just run . If you want to use a brew-installed version of Ruby, just add to any install/upgrade command. This is an ideal solution in a lot of cases. For those not using rbenv, RVM, asdf, or other environment manager, it means not having to use and install your gems to system directories, plus you get update management via Homebrew. Nice. I&rsquo;ll be updating my various README&rsquo;s to point to this",
		"keywords": ["command","macos","tools","cellar","homebrew","readme","whenever","allow","almost","another","because","command","definitely","directories","distributed","doing","environment","folder","having","howzit","ideal","install","installed","installing","latest","managed","management","manager","multiple","people","point","preferred","publish","rbenv","reasons","recently","rsquo","solution","suggest","system","tools","trouble","turned","updating","upgrade","using","various","version"]
	},{
		"title": "Homebrew and /usr/local/bin on M1 Macs",
		"url": "/2022/09/28/homebrew-and-slash-usr-slash-local-slash-bin-on-m1-macs/",
		"tags": ["homebrew","terminal"],
		"date": "Sep 28<span>th</span>, 2022",
		"ts": "1664373780",
		"summary": "I have a tip for M1 Mac users (who spend time in the terminal). You know how up until you got your new Mac, you could always count on your command line utilities being in ? But now Homebrew installs to instead? And all of those scripts that hardcoded have to be updated, and the PKG installer for tools like Gather leave it outside of your PATH? Never fear, symlinks are here. I was a little nervous about doing this because it just seemed like the kind of thing that would eventually get me in trouble, but I did it a year ago and haven&rsquo;t had a single problem. Basically, you&rsquo;re just running a mirror of in . You can use either willy nilly this way. If you do have a folder, move all of its contents into (). Then delete the directory () Symlink to with . If everything worked, you should be able to run and see all of your Homebrew binaries there. Now if something does install to , it will actually go into , and everything in will be accessible at . This has solved many problems for me. So many that I often forget that not everyone has anymore&hellip",
		"keywords": ["installer","macos","symbolic","gather","homebrew","symlink","accessible","anymore","because","binaries","command","contents","count","directory","doing","either","eventually","everyone","everything","folder","forget","hardcoded","haven","hellip","install","installer","installs","leave","little","mirror","nervous","nilly","often","outside","problem","problems","rsquo","running","scripts","seemed","single","solved","spend","symlinks","terminal","tools","trouble","updated","users","utilities","willy","worked"]
	},{
		"title": "Revamping na (Next Action CLI)",
		"url": "/2022/09/28/revamping-na-next-action-cli/",
		"tags": ["productivity","prompt","scripting","search","tagging","taskpaper","terminal","tools"],
		"date": "Sep 28<span>th</span>, 2022",
		"ts": "1664364420",
		"summary": "I have a friend (hi Jeff) who has really dug into using some of my command line tools like Howzit and na. Working with him on setting them up in his own environment has inspired some refactoring of both tools. I mentioned some major updates to Howzit last month, but had only made minor fixes to na up until this week. I had a sleepless night on Sunday and decided to dig into patching up na. It was an unwieldy Bash script that was a real pain to fix, and took extra finagling to make it work in shells other than Bash. So I completely rewrote it and turned it into a gem-based CLI. The new CLI is backwards compatible, but adds new features and is a more manageable tool. Now you can install na as easily as (you may need , depending on your Ruby setup). Run for a list of all commands, and run for options and details on each command. All of that output is laid out in the docs. So let me back up and explain a bit for those who haven&rsquo;t already heard of na. It&rsquo;s a tool for adding and viewing project-specific \"next actions\" in a TaskPaper file stored in each project directory. When you need to make a note about a new feature you want to add or a bug you discovered in project you&rsquo;re working on, you just run and the task is added to a TaskPaper file in an Inbox project, creating a new file if needed. Running will show you all the next actions in all TaskPaper files in the current directory. It can traverse subdirectories as well, and it stores a database of every TaskPaper file it sees so you can call up a project&rsquo;s actions with , even when you&rsquo;re not in that directory. I love using na with prompt hooks. It can now output and install prompt hooks for Bash, Zsh, and Fish. Just run and it will detect your current shell and install the appropriate file. Once installed, every time you into a project, it will automatically show you your next actions for that project. It&rsquo;s nifty. When it was a Bash script you had to use environment variables to save configuration options. Now you can set flags like alternate file extensions or default next action tag and save them to a config file in one command: . You can also now search your TaskPaper files by tag (and tag value) or fuzzy search strings, allowing you to organize your todos in a flexible way. Want to see just your @maybe tasks? . You can do boolean searches for multiple tags matching tasks containing any or all tags specified. As I mentioned, I kept it backwards compatible&hellip;",
		"keywords": ["command","interface","languages","rubygems","scripting","shell","shells","check","doing","howzit","inbox","running","sunday","taskpaper","working","action","actions","added","adding","allowing","alternate","anyone","automatically","backwards","based","boolean","chance","command","commands","compatible","completely","config","configuration","containing","creating","database","decided","default","depending","details","detect","directory","discovered","easily","environment","explain","extensions","extra","feature","features","files","finagling","fixes","flags","flexible","format","friend","fuzzy","haven","heard","hooks","indispensable","inspired","install","installation","installed","instructions","integrated","latter","legacy","major","manageable","massive","matching","maybe","mentioned","minor","multiple","needed","needs","nifty","night","options","organize","output","patching","previously","project","prompt","refactoring","remove","rewrote","rsquo","script","search","searches","setting","setup","shell","shells","sleepless","specific","stored","stores","strings","subcommand","subdirectories","switches","tasks","todos","toolkit","tools","transition","traverse","turned","unwieldy","updates","usage","users","using","value","variables","viewing","workflow","working","works"]
	},{
		"title": "20 Years of Great Software from Rogue Amoeba [Sponsor]",
		"url": "/2022/09/26/20-years-of-great-software-from-rogue-amoeba/",
		"tags": ["macos","sponsor"],
		"date": "Sep 26<span>th</span>, 2022",
		"ts": "1664197200",
		"summary": "Thanks to Rogue Amoeba for sponsoring BrettTerpstra.com this week! I&rsquo;m a huge fan of literally everything this developer has produced, and consider apps like Loopback, Audio Hijack, and SoundSource to be daily drivers for me. Since 2002, Rogue Amoeba has been making amazing audio apps for the Mac. Whether you&rsquo;re a podcaster, musician, or just someone who listens to audio on their Mac, Rogue Amoeba can make your life better. Whatever your audio needs, it&rsquo;s a good bet they have a tool to help you. And right now, for a very limited time, you can save 20% off any purchase. Audio Hijack Record any audio you hear on your Mac, and so much more. Loopback Get ridiculously powerful audio routing to pass audio from one application to another, without needing cables or mixers. SoundSource It&rsquo;s the sound control that should be built into MacOS, with per-app volume and output control, audio effects on any audio, and fast audio device switching. There&rsquo;s also Airfoil (home audio streaming), Farrago (the Mac&rsquo;s best soundboard app), Fission (fast and lossless audio editing), and Piezo (charmingly simple audio recording).  Free, fully-featured trials are available for all these products, right from MacAudio.com. Better still, in celebration of 20 years in business, Rogue Amoeba is offering a very rare sale. If you buy before October, you&rsquo;ll save 20% off every purchase from Rogue Amoeba.  You don&rsquo;t need any coupon codes or special URLs, but act fast. Visit MacAudio.com before the end of September to save. You&rsquo;ll be glad you did",
		"keywords": ["amoeba","loopback","rogue","airfoil","amoeba","audio","brettterpstra","farrago","fission","hijack","loopback","macaudio","macos","piezo","record","rogue","since","soundsource","thanks","visit","whatever","amazing","another","audio","available","before","brettterpstra","built","business","cables","celebration","charmingly","class","codes","consider","control","coupon","daily","developer","device","drivers","editing","effects","everything","featured","fully","height","https","image","includes","limited","listens","literally","loading","lossless","macaudio","making","media","mixers","musician","needing","needs","nofollow","noscript","offering","original","output","picture","podcaster","powerful","produced","product","products","recording","ridiculously","right","rogueamoeba","routing","rsquo","simple","sound","soundboard","source","special","sponsoring","srcset","streaming","switching","title","trials","uploads","volume","width","years"]
	},{
		"title": "Does your email inbox give you anxiety? Try Sanebox! [Sponsor]",
		"url": "/2022/09/15/does-your-email-inbox-give-you-anxiety-try-sanebox-sponsor/",
		"tags": ["email","sponsor"],
		"date": "Sep 15<span>th</span>, 2022",
		"ts": "1663243260",
		"summary": "Thanks to Sanebox for sponsoring BrettTerpstra.com this week! Do you get over 40 emails/day? Are you tired of cleaning your inbox every day? SaneBox is a premium VIP service for professionals drowning in email. It determines the importance of incoming emails, moves unimportant ones out of the inbox into a separate folder, and summarizes them in a digest. An average SaneBox customer saves 12+ hours/month. It works with any email provider, client or device. SaneBlackHole - Instantly unsubscribe from annoying marketers, mailing lists and newsletters SaneReminders - Get a reminder if someone doesn’t respond to you SaneSnooze - Snooze non-urgent emails SaneAttachments - Automatically upload attachments to Dropbox, Evernote, Box, etc. And more features to enhance your existing email setup&hellip; With glowing reviews from TechCrunch, Forbes, The New York Times and emailers everywhere, you can rest assured that you will fall in love with email again. ",
		"keywords": ["cloud","email","sanebox","storage","automatically","brettterpstra","dropbox","evernote","forbes","instantly","saneattachments","saneblackhole","sanebox","sanereminders","sanesnooze","sanebox","snooze","techcrunch","thanks","times","again","annoying","assured","attachments","average","brettterpstra","class","cleaning","client","customer","determines","device","digest","doesn","drowning","email","emailers","emails","enhance","everywhere","features","folder","glowing","height","hellip","hours","https","image","importance","inbox","incoming","lists","loading","mailing","marketers","media","moves","newsletters","nofollow","noscript","original","picture","premium","professionals","provider","reminder","respond","reviews","sanebox","saves","separate","service","setup","source","split","sponsoring","sqzori","srcset","subscription","summarizes","tired","title","today","unimportant","unsubscribe","upload","uploads","urgent","width","works"]
	},{
		"title": "Communicate consistently with TextExpander",
		"url": "/2022/09/11/consistent-communication-with-textexpander/",
		"tags": ["sponsor","textexpander"],
		"date": "Sep 11<span>th</span>, 2022",
		"ts": "1662901200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Do you ever type the same thing over and over and over again? Whether it&rsquo;s customer support answers, sales emails, or document edits, typing things repetitively or using copy and paste can be a burden. That&rsquo;s where TextExpander comes in. With TextExpander, you and your team can: The way we work is changing rapidly. Make work happen wherever you are by saying more in less time and with less effort using TextExpander. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["technology","textexpander","typing","brettterpstra","textexpander","thanks","visit","accurate","again","answers","burden","changing","comes","consistent","customer","document","edits","effort","emails","first","happen","learn","message","paste","productive","rapidly","readers","repetitively","rsquo","sales","saying","sponsoring","support","textexpander","typing","using","where","wherever"]
	},{
		"title": "Gather, Shortcuts, Bookmarklets, and Paywalled Content",
		"url": "/2022/09/02/gather-as-a-web-clipping-bookmarklet/",
		"tags": ["bookmarklet","gather","shortcuts"],
		"date": "Sep 2<span>nd</span>, 2022",
		"ts": "1662131760",
		"summary": "Gather is constantly improving at this point, and a lot of its rough edges have already been polished. I&rsquo;m loving all the feedback I&rsquo;m getting, both for fixing bugs and for adding new features. It&rsquo;s hard to test something like Gather on every possible permutation of a web layout, so I appreciate hearing about edge cases (even if I do have to weigh how much effort they&rsquo;re worth). I&rsquo;d recommend upgrading to the latest version before trying anything in this post. As of this writing, that&rsquo;s v2.0.33. If you installed via Homebrew, you&rsquo;re just a away. Otherwise, please download the PKG file and update. If you have Homebrew installed but ran into errors trying to install gather-cli, try running . It fixes 90% of the issues I&rsquo;ve seen. So anyway, one common thing that people want to clip from the web is paywalled content, which makes sense as it&rsquo;s harder to search and more convenient to have in your own personal, local notes. But Gather can&rsquo;t access a web page that isn&rsquo;t public. You can select all the text, copy it, then run Gather with to convert it, but it&rsquo;s never perfect. The better solution is bookmarklets. I should mention that this is made possible by a feature I added since the last time I wrote1. It&rsquo;s a URL template feature that lets you generate a URL handler for any app. I had built in the handler and was looking for others that might be worth adding when I realized I could make any of them possible (and keep the number of menu items down) with one command. So now you can use to create a url for any handler you want. Add to have the URL executed immediately instead of returned. The placeholder contents are completely URL encoded (no pesky \"safe\" characters that throw some apps off), and are comprised of: %title: The title of the page %text: The markdown text of the page %notebook: The contents of the option, can be used for additional meta in another key %source: The canonical URL of the captured page, if available %date: Today&rsquo;s date and time in the format YYYY-mm-dd HH:MM %filename: The title of the page sanitized for use as a file name %slug: The title of the page lowercased, all punctuation and spaces replaced with dashes () So that&rsquo;s how I build these bookmarklets (using the url handler). These are still experimental, but should give you some ideas about the kind of stuff you can do with Gather. The first bookmarklet, simply titled&hellip;",
		"keywords": ["bullseye","shortcut","ahasclass","anyway","applications","bcapture","bdocument","because","bencodeuricomponent","bfunction","bnewbod","breturn","bsettimeout","bullseye","bullseyegather","bvoid","bwindow","caddclass","carticle","cclickhandler","cdockeyup","changelog","choveroff","choveron","chrome","chromium","clicking","cnewbod","contents","cremoveclass","csection","ctable","dgather","ddocument","developer","dfunction","donate","download","dshortcuturl","dtext","firefox","fname","gather","gathershortcuts","handler","homebrew","however","magicking","markdown","markdownifies","marked","medium","paywalls","pesky","preview","published","readability","regexp","revisited","stdin","safari","shortcut","shortcuts","tuvbv&#39;","today","updated","xcode","accept","accepts","access","actions","addclass","addeventlistener","added","adding","allow","another","anyone","anyway","appear","appendchild","appreciate","assigned","available","background","backlink","based","before","beginning","below","blockquote","bookmark","bookmarklet","bookmarkletwrap","bookmarklets","bookmarks","boxes","brettterpstra","browser","browsers","build","building","built","bullseye","bullseyegather","called","canonical","captured","changelog","changes","characters","class","classlist","classname","cleanhighlighttable","cleanpres","cleans","click","clickhandler","clicked","clipboard","clipper","clonenode","command","commands","common","completely","comprised","constantly","contains","content","contents","convenient","conversations","convert","couple","cover","create","createelement","curious","cutting","dashes","definitely","demonstrated","dependencies","depending","description","designed","developer","dlbox","dockeyup","doesn","donate","download","downloads","dynamically","edges","effort","eliminate","email","encapsulated","encoded","endnotes","errors","everybody","example","executed","experimental","extension","external","fathom","feature","features","feedback","filename","first","fixes","fixing","fnref","footnote","footnotes","foreach","format","fully","function","garbage","gather","getting","gradient","handle","handler","harder","hasclass","hearing","height","hellip","highlight","highlighted","highlighter","hoveroff","hoveron","howtos"]
	},{
		"title": "Gather to nvUltra",
		"url": "/2022/08/31/gather-to-nvultra/",
		"tags": ["gather","markdown","nvultra"],
		"date": "Aug 31<span>st</span>, 2022",
		"ts": "1661968860",
		"summary": "I got a request to add a option to Gather. Makes sense; when you&rsquo;re using it to save Markdown to notes, you&rsquo;d want the title of the page to be the title of the note. You could parse that out of the Markdown version in several ways, but in some cases it might be easier to just call and get an undecorated string back. So that&rsquo;s been added in v2.0.29. That got me to thinking, though&hellip; I clip all my notes to nvUltra. I&rsquo;ve been trying to convince Fletcher that we should build a web clipper into nvUltra, but until then I&rsquo;ve been using Gather to create Markdown notes out of web pages I want to reference. So, for purely selfish reasons, I&rsquo;ve added a couple of commands to Gather that will markdownify a page and create a titled note all in one fell swoop (using nvUltra&rsquo;s URL handler). I even added it to a Shortcut that I can trigger with LaunchBar. Now I&rsquo;m a few keystrokes away from turning any page into a note in nvUltra. See the notes on the project page if you happen to be on the nvUltra beta and would like to try this. I&rsquo;ll even throw in a link to the Shortcut. Since it&rsquo;s a compatible URL handler, I also added options for creating Notational Velocity/nvALT links/notes. If this sounds great but you&rsquo;re not into nvALT/nvUltra, let me know if there&rsquo;s a note platform you use with a url handler that I could also incorporate. I&rsquo;m open to making your life simpler. By the way, if you&rsquo;re not using Gather via Homebrew, you really should be. Imagine how easy your life would be right now if all you had to do was run instead of locating, downloading, and clicking all the install screens for the update&hellip",
		"keywords": ["markdownify","notes","fletcher","gather","homebrew","imagine","launchbar","makes","markdown","notational","shortcut","since","velocity","added","build","clicking","clipper","commands","compatible","convince","couple","create","creating","downloading","easier","great","handler","happen","hellip","incorporate","install","keystrokes","links","locating","making","markdownify","notes","nvalt","nvultra","options","pages","parse","platform","project","purely","reasons","right","rsquo","screens","selfish","sense","several","simpler","sounds","string","swoop","thinking","throw","title","titled","trigger","trying","turning","undecorated","using","version"]
	},{
		"title": "Gather on Homebrew",
		"url": "/2022/08/30/gather-on-homebrew/",
		"tags": ["gather","homebrew"],
		"date": "Aug 30<span>th</span>, 2022",
		"ts": "1661901780",
		"summary": "I considered calling this post \"Gather round for a brew\" but I says to myself, I says \"dammit, Brett, you&rsquo;re better than that.\" I knew the best way to distribute my new Gather tool was going to be via Homebrew. No worries about notarization, installing to the wrong folder, or requiring finicky steps from users. But the Homebrew documentation is&hellip; intense. I got a little scared at first, but then I found an NSHipster tutorial that made the process super simple. Like five, ten minutes max, plus another five to add it to the build automation for updates. So, as of today, Gather is available for installation via . Done. You&rsquo;ll have a working copy of that you can keep updated using Homebrew. It&rsquo;s a way better solution than the Package installers, though that option will still be available for those who aren&rsquo;t brew-savvy. To learn more about Gather, visit the project page. Oh, and let me know if my brilliant solution doesn&rsquo;t work for some stupid reason. It&rsquo;s been one of those weeks",
		"keywords": ["distribution","installer","manager","package","software","brett","gather","homebrew","nshipster","package","another","automation","available","brilliant","build","calling","commands","considered","dammit","distribute","doesn","finicky","first","folder","found","going","hellip","install","installation","installers","installing","intense","learn","little","minutes","myself","notarization","process","project","requiring","round","rsquo","savvy","scared","simple","solution","steps","stupid","super","today","tutorial","updated","updates","users","using","visit","weeks","working","worries","wrong"]
	},{
		"title": "PopClip WebMarkdown fix and other codesigning adventures",
		"url": "/2022/08/30/popclip-webmarkdown-fix-and-other-codesigning-adventures/",
		"tags": ["extension","gather","popclip"],
		"date": "Aug 30<span>th</span>, 2022",
		"ts": "1661868060",
		"summary": "So the first project I worked on with the libraries that went into Gather was the WebMarkdown extension for PopClip. It worked great&hellip; for me. I suffered from the all-too-common hacker mistake summed up as \"well, it works on my machine.\" I codesigned the binary embedded in the extension, but when you download a file from a website, it adds a quarantine bit that requires what Apple calls \"notarization,\" and you can&rsquo;t notarize a single binary (or a zipped package like a PopClip extension). You have to distribute it as a notarized package file and installer, which is what I&rsquo;m doing with Gather itself now. A isn&rsquo;t really a good option for a PopClip extension, though, so I found another workaround. Without the binary the extension should install without error just by double clicking. When you select some text and click WebMD, it looks for the CLI in /usr/local/bin on your machine. If it doesn&rsquo;t find it there, it offers to download and run the Gather installer for you. You can just hit the OK buttons, and when it&rsquo;s done, the new, improved WebMarkdown extension should work for you. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["distribution","installer","package","software","apple","brett","changelog","donate","download","extensions","gather","markdown","popclip","published","updated","webmd","webmarkdown","another","binary","buttons","calls","click","clicking","codesigned","common","distribute","doesn","doing","double","download","embedded","error","extension","extensions","first","found","great","hacker","hellip","improved","install","installer","itself","libraries","local","looks","machine","mistake","notarization","notarize","notarized","offers","package","project","quarantine","requires","rsquo","single","suffered","summed","tools","useful","website","workaround","worked","works","writing","zipped"]
	},{
		"title": "Read2Text is now Gather, your new Markdownifier",
		"url": "/2022/08/28/read2text-is-now-gather-your-new-markdownifier/",
		"tags": ["gather","macos","markdown","shortcuts","swift","tools"],
		"date": "Aug 28<span>th</span>, 2022",
		"ts": "1661705880",
		"summary": "As promised, I&rsquo;ve updated Read2Text as a standalone binary using the Swift versions of Readability and HTML2Text. In the process I made it a whole new tool called Gather. You may recall that name from a little utility I made a while back. This does the exact same thing, just without the GUI, and I liked that name enough to revive it. I designed it to be flexible and easy to drop into any kind of workflow, so you can use it in Services and Shortcuts, PopClip extensions, LaunchBar Actions, Alfred, Raycast, whatever floats your boat. It can take URLs, raw HTML, even rich text from web page copies. It can arguments, piped input via STDIN, and even pull urls and HTML data out of environment variables. Whatever you want to do with it, it should be flexible enough to handle. And it does a better, more consistent job than Marky (my API-based markdownifier) ever did. If you&rsquo;ve never seen this tool before, it allows you to turn any URL into Markdown text with comments, ads, etc. stripped out, and most Markdown-compatible elements properly converted. To use it, just run on the command line. It will output the result to STDOUT, so you can add to the end of it to clip it directly to the clipboard. The tool has a bunch more options that I&rsquo;ve detailed in the README. And yes, I know PopClip and some other tools have some HTML-to-Markdown conversion built in already. What sets Gather apart is its ability to locate the important content of a web page, its handling of some advanced things like tables and definition lists, advanced handling of highlighted code blocks, and other products of my weekend obsessions. This version is Mac-only (but a Universal Binary). Sorry everybody else. For people on other systems that happen to have Python available, you can still use the older, python-based read2text. To install, download the zip at the end of the post, unzip, and move the executable into your path. If you&rsquo;re on an Intel Mac, your best bet is . If you&rsquo;re on an M1 Mac, you&rsquo;ll want to use or similar. Anything in your PATH is good. I might eventually see if I can get this set up as a Homebrew formula, but it needs testing first. Obviously you can use this in Terminal, and it will fit perfectly into scripted solutions or just as a standalone tool. This binary can also be called from Shortcuts and Services. It takes a single argument or accepts raw HTML or a URL on STDIN if you add as an argument. To process raw HTML, be sure to&hellip;",
		"keywords": ["clipboard","languages","launchbar","scripting","taking","action","actions","alfred","askdifferent","automator","binary","changelog","check","couldn","donate","download","frankenstinian","gather","gimme","github","header","homebrew","intel","issues","launchbar","markdown","markdownifier","markdownifying","marky","nstask","package","parsing","popclip","published","python","readme","raycast","readability","stdin","stdout","service","services","shahaf","sheesh","shortcuts","since","sorry","special","stackexchange","stackoverflow","swift","swiftsoup","tuvbv&#39;","terminal","twitter","unicode","universal","updated","whatever","ability","accepted","accepts","action","advanced","again","allows","answer","answers","anyone","apart","argument","arguments","article","automatically","available","background","backlink","based","because","before","binary","blocks","break","brettterpstra","built","bunch","called","change","changelog","changes","class","clean","cleaned","clipboard","clipping","cocoa","combination","command","comments","compatible","consistent","content","conversion","converted","copies","couldnt","cover","curated","custom","default","definition","description","design","designed","detailed","determining","difficult","directly","distribute","dlbox","donate","download","downloads","easier","elements","endnotes","enough","entire","environment","eventually","everybody","everything","exact","excluded","executable","explanatory","extensions","fathom","first","flexible","floats","fnref","footnote","footnotes","forks","formatting","formula","fragile","funky","gather","gatherheader","getting","gimme","github","gotten","gradient","handle","handler","handling","hands","happen","haven","height","hellip","highlight","highlighted","highlighter","highly","homebrew","however","https","image","images","important","included","including","index","information","inline","input","install","interaction","interested","introducing","issues","knowledge","language","learn","learning","letting","liked","linear","links","lists","literally","little","loading","local","longer","macos","makes","making","markdownifier","media","menus"]
	},{
		"title": "PopClip extensions: WebMarkdown fix",
		"url": "/2022/08/27/popclip-extensions-webmarkdown-fix/",
		"tags": ["extension","markdown","popclip","scripting"],
		"date": "Aug 27<span>th</span>, 2022",
		"ts": "1661590860",
		"summary": "So Apple stopped shipping Python with macOS, which they warned quite a while ago they were going to do. Unfortunately, I still have a good number of apps and scripts that rely on Python scripts in the background, meaning people who haven&rsquo;t installed the Command Line Tools are unable to use some of my tools. I&rsquo;ve slowly been working to rectify this, but it&rsquo;s going to take some time. The Python script I&rsquo;m most reliant on is Aaron Swartz&rsquo; html2text, used for converting HTML markup to Markdown text. Read2Text uses it, the PopClip extension WebMarkdown uses it, even Marked uses it for rendering Scrivener documents. So my first fix is for the WebMD extension. If it works for everyone, I&rsquo;ll know I&rsquo;m on the right track to solve this. (Then I have to port some Ruby scripts, but one thing at a time.) The WebMarkdown extension lets you select text on a web page, and then select \"WebMD\" in PopClip to have a Markdown version of the selected text placed in your clipboard. If you&rsquo;re interested in the nitty gritty, coming to my rescue is Shahaf Levi and his Swift port of the html2text and Readability scripts. With those in hand I&rsquo;m able to compile command line utilities as binaries that can be drop-in replacements for the various incarnations of the html2text script I&rsquo;ve used. I made a very simple one for WebMarkdown that takes raw HTML from the environment variable and converts it to Markdown. No Readability, no STDIN/argument input, just read the variable and output the result. Please help me test. Download below, unzip, and locate the WebMarkdown extension in Finder. Double click it to install. If you already had the previous version installed, it will be updated. If you haven&rsquo;t tried it or it wasn&rsquo;t working for you previously, give it a shot and let me know how it goes. If people run into issues, I&rsquo;ll update this post with fixes. I&rsquo;ll also be publishing a replacement for Read2Text very soon. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["markdown","python","taking","aaron","apple","brett","changelog","command","donate","double","download","extensions","finder","markdown","marked","popclip","published","python","readability","stdin","scrivener","shahaf","swartz","swift","tools","unfortunately","updated","webmd","webmarkdown","argument","background","below","binaries","click","clipboard","coming","command","converting","converts","documents","environment","everyone","extension","extensions","first","fixes","going","gritty","haven","hellip","incarnations","input","install","installed","interested","issues","macos","markup","meaning","nitty","output","people","placed","previously","publishing","rectify","reliant","rendering","replacement","replacements","rescue","right","rsquo","script","scripts","selected","shipping","simple","slowly","solve","stopped","takes","tools","track","tried","unable","unzip","updated","useful","utilities","variable","various","version","warned","while","working","works","writing"]
	},{
		"title": "Hook and SearchLink",
		"url": "/2022/08/23/hook-and-searchlink/",
		"tags": ["hookcli","hookmark","productivity","search","searchlink"],
		"date": "Aug 23<span>rd</span>, 2022",
		"ts": "1661252280",
		"summary": "In case you&rsquo;ve missed it previously, SearchLink is my macOS Service for doing web searches and inserting Markdown links in your writing without ever switching to your browser. I use it daily, and it&rsquo;s been solid enough that it hasn&rsquo;t changed much over the last year. This morning I added Hook integration to SearchLink. I borrowed some code from the Hook command line tool I created and added a new search type to SearchLink. Now you can type something like and get back a link to a local file, email, url handler, or web address. Combined with the existing Pinboard search, the Hook search makes it easy to pull up anything you&rsquo;ve ever bookmarked using either of those tools. Unlike the Pinboard search, which requires an API key, no additional setup is required for searching Hook. As long as you have Hook installed, searches will work. Hopefully you&rsquo;ll find it useful! SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["markdown","changelog","donate","download","hopefully","markdown","pinboard","published","searchlink","service","unlike","updated","added","address","below","bookmarked","borrowed","browser","changed","command","created","daily","doing","editor","either","email","enough","handler","hellip","inserting","installed","integration","latest","leaving","links","local","macos","makes","missed","morning","previously","project","required","requires","rsquo","search","searches","searching","setup","solid","switching","tools","useful","using","version","visit","writing"]
	},{
		"title": "Make time with TextExpander [Sponsor]",
		"url": "/2022/08/18/make-time-with-textexpander-sponsor/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Aug 18<span>th</span>, 2022",
		"ts": "1660840440",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! What would you do with more hours every month? Repetitive typing, little mistakes, searching for answers – they’re all taking precious time away from you and your team. With TextExpander, you can take back your time so you can focus on what matters most in your business. The way we work is changing rapidly. Make work happen wherever you are by saying more in less time and with less effort using TextExpander. You will never need to copy-paste repetitive responses again &mdash; with TextExpander, your knowledge will always be at your fingertips with a quick search or abbreviation. Drop your commonly-used content into a TextExpander snippet and give it an abbreviation. Share your snippet with your entire team. Just type a few characters to trigger your snippet and the content expands anywhere you type. TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["snippet","textexpander","brettterpstra","chrome","repetitive","share","textexpander","thanks","visit","windows","abbreviation","accurate","again","answers","anywhere","available","brettterpstra","business","campaign","changing","characters","class","commonly","consistent","content","effort","entire","expands","fingertips","first","focus","happen","height","hours","https","iphone","image","knowledge","learn","little","loading","matters","mdash","media","medium","message","mistakes","nofollow","noscript","original","paste","picture","podcast","precious","productive","quick","rapidly","readers","repetitive","responses","saying","search","searching","snippet","source","sponsoring","srcset","taking","terpstra","textexpander","title","trigger","typing","uploads","using","wherever","width","works"]
	},{
		"title": "Getting started with Howzit",
		"url": "/2022/08/09/getting-started-with-howzit/",
		"tags": ["automation","developer","hookmark","howzit","markdown","mdless","scripting","shell"],
		"date": "Aug 9<span>th</span>, 2022",
		"ts": "1660045020",
		"summary": "I&rsquo;ve been using Howzit almost daily for years now. I made a bunch of upgrades to Howzit over the last month, including packaging it as a gem and completely refactoring the code. In the process it&rsquo;s become pretty obvious that not many non-me people have actually tried it, and I really think they should, so I figured I&rsquo;d at least make sure everyone understood what it does and how to use it. Do you spend a good portion of your day in Terminal? Do you have different types of projects with different tools for building and deploying? Different processes/destinations for updating and publishing documentation? Do you ever come back to a project and find you&rsquo;ve forgotten how you set it up and what you automated? If you answered yes to all three questions, then you&rsquo;re a prime candidate for Howzit. If you answered yes to the first two and no to the third, congratulations, you&rsquo;re amazing. Either way, unless you checked all three, you can totally stop reading now. Go outside, enjoy life. Or whatever people who aren&rsquo;t obsessed with the command line do. The idea behind Howzit is simple: keep project notes and details in a single Markdown file, along with automations. In addition to documentation, the file can contain scripts and commands, functioning like a Makefile. It&rsquo;s documentation plus automation. All with a friendly way to instantly view/run exactly the topic you need to know about without even having to your notes. . As in \"how does it deploy?\" Yeah, you get it. My favorite thing about using Howzit is the idea of universal commands. For example, 1 will automatically deploy any of my projects, even though every one of them deploys in a different way. Rsync, RubyGems, GitHub releases, git pushes&hellip; even the ones that use the same platform often have different requirements and commands for deploying. When I flesh out one of these processes, I document how it works and write a script to do everything that can be automated. It goes under the \"Deploy\" topic in the build notes file, along with step-by-step instructions, and then takes care of the rest. If I&rsquo;m curious and want to know exactly what&rsquo;s happening, I can just run and it will be explained to me. Yes, I could write a script in every project and give it the same name, but Howzit lets me combine all of my scripts in one place using whatever language is most efficient, and I can include documentation that I can access right in the&hellip;",
		"keywords": ["iterm","aliased","aliases","configuration","conversely","deploy","deploying","different","editor","either","first","general","getting","github","homebrew","hooks","howzit","links","makefile","markdown","optional","partial","prerequisites","right","rsync","rubygems","second","started","taskpaper","templates","terminal","abbreviate","access","across","added","adding","alias","aliased","aliases","allows","almost","amazing","another","answered","apply","argument","arguments","automate","automated","automatically","automating","automation","automations","available","backlink","because","before","behind","block","blockquote","blocks","branch","branching","breeze","brettterpstra","build","building","buildnotes","buildprivate","bunch","called","candidate","central","certain","changelog","changes","checked","checking","choose","class","cleanup","color","command","commands","commas","committed","common","completely","completions","complex","complicated","concatenated","config","configuration","configure","confirmation","congratulations","contain","content","control","couple","create","curious","daily","dbeta","default","define","defined","defines","deploy","deploying","deploys","destinations","details","devbranch","develop","different","differs","directives","directories","directory","display","displayed","document","documenting","doesn","doing","double","dynamic","easier","easiest","editor","efficient","either","emails","endnotes","enjoy","enter","error","essentially","everyone","everything","evident","example","execute","executes","explained","explaining","extension","false","favorite","feature","fenced","figure","figured","files","first","flesh","fnref","folder","footnote","footnotes","forgotten","format","found","friendly","function","functioning","functions","fuzzy","general","getting","github","gitignore","global","going","great","handling","happening","hashes","haven","having","header","headers","heading","headlines","height","hellip","highlight","highlighter","highlighting","hooking","hookproductivity","hooks","howzit","howzitdraft","https","image","included","includes","including"]
	},{
		"title": "A better Shortcuts command for Bunch",
		"url": "/2022/08/08/new-in-the-bunch-beta/",
		"tags": ["bunch","shortcuts"],
		"date": "Aug 8<span>th</span>, 2022",
		"ts": "1659952440",
		"summary": "The last time I talked about Bunch I had just added a command in the Bunch beta for running macOS Shortcuts. After working with a user on Sunday, I made it a bit more useful. The command now accepts text input (which can be the content of ${variables}), and also returns results if the Shortcut provides text output, which can then be assigned to Bunch variables. To send text, just include it in double quotes after the Shortcut name: I think I&rsquo;ve also finally found the issue with spaces in the path for a Bunch folder. So much weird behavior in that area, but it came down to creating the NSURL with the wrong method. I think. Please note that all of this is currently only in the beta (155 as of this writing). It needs a bit of testing before I push it out to the world. If you want to help (or just try out the new features), grab the beta download here. And as evidenced by this little feature boost, I respond kindly to Discussions, so please join us there",
		"keywords": ["macos","bunch","discussions","handy","nsurl","shortcut","shortcuts","sunday","accepts","action","added","assign","assigned","before","behavior","boost","capture","command","contains","content","creating","double","download","evidenced","feature","features","finally","folder","found","input","kindly","little","macos","method","needs","output","provides","quotes","respond","results","returns","rsquo","running","script","shell","spaces","stuff","talked","testing","think","useful","variable","variables","weird","working","world","writing","wrong"]
	},{
		"title": "howzit got gemified",
		"url": "/2022/08/02/howzit-got-gemified/",
		"tags": ["howzit"],
		"date": "Aug 2<span>nd</span>, 2022",
		"ts": "1659463920",
		"summary": "It seems like just yesterday that I was saying I&rsquo;d never gotten around to making howzit into a gem that you could easily install and update. Then I had a bit of a sleepless night and decided to go for it. You can now just run to install, and keep it updated in the future by running it again (or by running ). Be sure to remove any previous version of the script from your path so that the new binary gets picked up. If you run into permission errors in your setup, you may have to use sudo (). This has the added benefit of allowing me to add dependencies that are automatically included when the gem is installed, allowing me to extend the functionality a little bit using external libraries. See what all is new in the changelog. One new feature that just got added is pre and post requisites for topics. You can block a section of notes as or . If there&rsquo;s a block in the topic and you try to run it, it will display the contents and ask for confirmation that the prerequisites have been taken care of. Just to serve as a reminder when I come back to an automation and there are manual tasks I may have forgotten about. Anything in an block will be displayed after the topic runs. Neither of these tags are shown when just viewing the topic. Get and set config options with and . Allow multiple selections when using an fzf menu Option to handle multiple results with , , , or Display multiple sections by separating title searches with a comma, e.g. I just have to say that I&rsquo;ve found using howzit to be a real boon. It allows me to automate all of the processes around a project in a single file, and by using similar topic titles between projects, I can use the same command to execute a certain type of task, regardless of what kind of project it is. For example, in just about anything I work on, I can run (which I have aliased, of course), and it will build and deploy the project, whether it&rsquo;s a website that needs to be rendered and rsynced, a gem that needs to be packaged and pushed, an Xcode project that needs compiling and packaging&hellip; anything I&rsquo;ve automated (which is everything) just works. And in the process of adding these automations to my build notes, documenting as I go, I have a reference to remind me how each process works when I come back to it later. It&rsquo;s been a great solution for me and my ADHD brain",
		"keywords": ["developer","tools","allow","display","epilogue","neither","postreqs","prereqs","stuff","xcode","added","adding","again","aliased","allowing","allows","automate","automated","automatically","automation","automations","benefit","between","binary","block","brain","build","certain","changelog","comma","command","compiling","config","confirmation","contents","decided","dependencies","deploy","display","displayed","documenting","easily","errors","everything","example","execute","extend","external","feature","forgotten","format","found","functionality","gotten","great","handle","hellip","howzit","included","install","installed","later","libraries","little","making","manual","multiple","needs","night","notes","options","packaged","packaging","permission","picked","prerequisites","process","processes","project","projects","pushed","regardless","remind","reminder","remove","rendered","requisites","results","rsquo","rsynced","running","saying","script","searches","section","sections","seems","selections","separating","serve","setup","shown","similar","single","sleepless","solution","taken","tasks","title","titles","topic","topics","updated","using","version","viewing","website","works","yesterday"]
	},{
		"title": "Getting serious about Overtired",
		"url": "/2022/08/01/getting-serious-about-overtired/",
		"tags": ["health","overtired","podcast","podcasting","youtube"],
		"date": "Aug 1<span>st</span>, 2022",
		"ts": "1659358800",
		"summary": "I&rsquo;m putting a renewed focus on Overtired right now. Setting up more social media accounts, getting our episodes out on YouTube, amping up cross-promotions, and refining the podcast itself. I&rsquo;ve got a great editing workflow down and it&rsquo;s replicable, so now I can share the responsibilities with others without worrying about losing quality. I&rsquo;m working to automate as many of the editing and promotion tasks as I can so that we can focus on making a great podcast and still maintain our day jobs. If you&rsquo;ve never listened, or haven&rsquo;t for a while, now&rsquo;s a great time to dig back in. The last few episodes really highlight where we&rsquo;re going with the show. We&rsquo;ve really honed in on mental health as our driving force. We&rsquo;ve long had a \"Mental Health Corner\" segment, but now it&rsquo;s a weekly thing and I&rsquo;ve really appreciated the feedback from listeners. If nothing else, I think that talking about it does a service, and I&rsquo;m happy to be a part of that. We&rsquo;re no longer a Taylor Swift podcast that also talks about tech and maybe mentions ADHD, now we&rsquo;re a mental health podcast that also talks about tech and only occasionally mentions Taylor Swift. Or Miley. It&rsquo;s a notable shift. We added Jeff Severns Guntzel as a co-host a little while back, and the show has been better for it. I&rsquo;ve known Jeff for a long time now, and we always have great conversations. I was thrilled to find that he conversed with Christina just as easily as he did with me, and there&rsquo;s a whole dynamic with the two of them that is something completely different than the ones between Jeff and me or Christina and me. Again, a notable shift, and one that emboldens me to build our listener base. Also a shout out to Backbeat Media, who tirelessly sell our ads. We&rsquo;re not the biggest show on the network, and we swear a lot, focus on non-tech issues, and make ourselves generally unmarketable, yet Backbeat rises to the challenge. The ads Dave and company sell on our show have kept us going. Side note, I may additionally add a Patreon in the future, if there&rsquo;s interest. Once I have all the social accounts set up, I&rsquo;ll start promoting those here and elsewhere, so stay tuned. Right now you can follow: Instagram/ovrtrd I&rsquo;ll be posting snippets and clips here. I&rsquo;m able to select text from the transcript in Descript and output an \"audiogram\" to Headliner to generate visually&hellip;",
		"keywords": ["backbeat","media","podcasting","again","backbeat","christina","corner","descript","discord","guntzel","headliner","health","instagram","media","mental","miley","overtired","patreon","right","setting","severns","subscribe","swift","taylor","twitter","youtube","accounts","added","adding","additionally","amping","appreciate","appreciated","audience","audiogram","automate","before","between","biggest","build","building","captions","challenge","clips","community","company","compelling","completely","content","conversations","conversed","cross","different","discovery","driving","dynamic","easily","editing","elsewhere","emboldens","episode","episodes","feedback","focus","follower","followers","force","generally","getting","going","great","growing","growth","happening","happy","haven","health","highlight","honed","hopefully","hopes","hottest","interest","interesting","issues","itself","listen","listened","listener","listeners","little","longer","losing","maintain","making","maybe","media","mental","mentions","network","notable","nothing","occasionally","others","ourselves","output","ovrtrd","podcast","posting","presence","process","promoting","promotion","promotions","publishing","putting","quality","queer","ramping","reels","refining","regular","regularly","renewed","replicable","responsibilities","right","rises","rsquo","segment","service","share","shift","shout","since","snippets","social","subscribe","swear","talking","talks","tasks","think","thrilled","tirelessly","topics","transcript","tuned","tweets","unmarketable","visually","weekly","welcome","where","while","whole","workflow","working","works","worrying"]
	},{
		"title": "Project Updates July 2022",
		"url": "/2022/07/31/project-updates-july-2022/",
		"tags": ["bunch","howzit","macstock","mdless","personal","scripting","shortcuts","webdesign"],
		"date": "Jul 31<span>st</span>, 2022",
		"ts": "1659285900",
		"summary": "I took a couple weeks of paid time off this month. Partly I wanted some downtime surrounding Macstock, and partly I just wanted to refresh myself a bit so I could tackle my work more effectively. And a little bit of it was spent putting some time into code polishing and new features. So here&rsquo;s a general update, in case you were wondering. As I&rsquo;ve probably mentioned before, I switched ADHD medications a few months back. The Focalin was messing with my bipolar too much. Too many extended manic episodes and frustrating depressions, and the net result was having maybe 5 truly productive days a month. I&rsquo;m back on Vyvanse now, which I&rsquo;ve previously been on for years. As I&rsquo;ve said before, it&rsquo;s not the most effective ADHD drug for me, but it&rsquo;s also much less likely to trigger manic episodes, and that&rsquo;s held true. I&rsquo;ve been mostly stable for the last few months, with just a couple mild episodes that result &mdash; at most &mdash; in one night without sleep and a short recovery period (as opposed to 5+ days without sleep followed by 2+ weeks of depression). Overall far more manageable than what I&rsquo;ve been going through for the year prior. Macstock was small this year. I ended up running a couple of panels and doing some Q&A, even though I&rsquo;d intended to take a year off of speaking. Between Covid and family emergencies, enough speakers dropped out that folks like Mike Rose and I had to step up to flesh out the speaker lineup. The winner for best presentation goes to my co-worker Erin Dawson, though, who did a live studio session demonstrating the creation of an original video soundtrack with no musical expertise required. It was great. I have high hopes for seeing Macstock begin to grow again. Even when it&rsquo;s small, I still have a great time seeing old friends and making new ones. nvUltra is at a standstill for a few weeks while Fletcher has an increased rotation at the hospital, so most of my coding time went to Bunch. I love putting time into Bunch. I know a lot of people are using it (I get regular donations and feature requests, if that&rsquo;s any indication), and I&rsquo;d love to see more examples of what people are doing with it. Here&rsquo;s my formal plea on the forums. In the meantime, here&rsquo;s the latest stuff and nonsense. /opt/homebrew/bin is now included in the default path for M1 users using shell scripting (Fixed) Close all Finder windows with XX (and on close&hellip;",
		"keywords": ["applescript","chrome","deficit","disorder","google","hyperactivity","languages","programming","proprietary","scripting","software","accepts","added","applescript","available","between","bunch","bunches","chrome","close","content","covid","create","dawson","finder","fixed","fletcher","focalin","github","macstock","management","markdown","oracle","overall","overtired","partly","project","requests","shortcuts","special","target","updates","vyvanse","again","allows","automation","avoid","based","before","begin","bipolar","browser","browsers","canary","channels","cleanup","cleared","close","coding","command","commands","contents","couple","creation","daily","default","demonstrating","depression","depressions","display","doing","donations","download","downtime","dropped","effective","effectively","emergencies","ended","enjoying","enough","episodes","everything","examples","exiting","expertise","expressions","extended","family","feature","features","firefoxdev","flesh","folks","followed","formal","forums","friends","frustrating","fuzzy","general","going","great","handling","happy","having","homebrew","hopes","hospital","hours","howzit","improvements","included","increased","indication","intended","latest","likely","lineup","little","macos","major","making","manageable","manic","matching","maybe","mdash","mdless","meaning","meantime","medications","mentioned","messing","mostly","musical","myself","nailed","night","nonsense","nvultra","official","opposed","original","output","package","pager","paging","panels","partly","pattern","people","polishing","prefixes","presentation","previously","productive","profiles","publish","publishing","putting","recently","recovery","refresh","regular","release","requests","required","rotation","rsquo","running","screen","script","scripting","search","seeing","session","setups","shell","short","shortcut","sleep","small","soundtrack","speaker","speakers","speaking","special","specific","spent","stable","standstill","studio","stuff","surrounding","switched","tackle","through","tomorrow","topics","trigger","truly","updates","users","using","vacation","various","version","video","wanted","weeks"]
	},{
		"title": "Organize your inbox (and never waste time on email again) with SaneBox [Sponsor]",
		"url": "/2022/07/21/organize-your-inbox-and-never-waste-time-on-email-again-with-sanebox-sponsor/",
		"tags": ["email","sponsor"],
		"date": "Jul 21<span>st</span>, 2022",
		"ts": "1658414340",
		"summary": "Thanks to SaneBox for sponsoring BrettTerpstra.com this week! I&rsquo;ve been a SaneBox user for years now, and can&rsquo;t imagine my email workflow functioning without it. Clean up your inbox today and keep it that way forever. SaneBox uses personalized algorithms to quickly learn your email habits and show your most important messages first, while filtering out the noise. Best of all, it works wherever you check email, on all clients and devices. With glowing reviews from TechCrunch, Forbes, The New York Times and emailers everywhere, you can rest assured that you will fall in love with email again. The latest feature is Storage Optimizer, which can scan for old emails and automatically move them to the trash to reduce storage and keep your inbox in tip top shape. It&rsquo;s included as a beta feature when you subscribe, so check it out. Clean up your inbox today and keep it that way forever. Sign up today and save $25 on any subscription",
		"keywords": ["outlook","sanebox","spamming","webmail","world","brettterpstra","clean","forbes","optimizer","sanebox","storage","techcrunch","thanks","times","again","algorithms","assured","automatically","check","clients","devices","email","emailers","emails","everywhere","feature","filtering","first","forever","functioning","glowing","habits","imagine","important","inbox","included","latest","learn","messages","noise","personalized","quickly","reviews","rsquo","shape","sponsoring","storage","subscribe","subscription","today","trash","wherever","while","workflow","works","years"]
	},{
		"title": "Web Excursions for July 20, 2022",
		"url": "/2022/07/20/web-excursions-for-july-20-2022/",
		"tags": ["bookmarks"],
		"date": "Jul 20<span>th</span>, 2022",
		"ts": "1658335080",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. brianmichel/Juice: Make your battery information a bit more interesting. Make your macOS battery information a bit more interesting by making your own measurement scale instead of a boring battery indicator. Astrofox This is the tool that&rsquo;s going to get Overtired on YouTube, finally. Easily add video to an audio track with images, waveform animations, and effects. Free and open source. riquito/tuc: When cut doesn&rsquo;t cut it This CLI adds capabilities to that would otherwise require some or magic. It has an intuitive syntax and I&rsquo;m loving it for my command output manipulation needs. raftario/licensor: write licenses to stdout I love tools that make adding licenses to OSS projects simple. nb · command line and local web plain text note-taking, bookmarking, archiving, and knowledge base application I&rsquo;m not giving up nvUltra any time soon, but if you&rsquo;re keen for plain text, command line, note taking, bookmarking, and knowledge base building, this is an amazing project",
		"keywords": ["github","compress","taking","video","astrofox","brett","cleanmymac","easily","juice","overtired","youtube","absolute","adding","amazing","animations","archiving","astrofox","audio","battery","bookmarking","border","boring","brettterpstra","brianmichel","brought","building","capabilities","class","command","display","doesn","effects","excursions","finally","github","giving","going","height","hidden","highlighter","holding","https","image","images","impactradius","indicator","information","interesting","intuitive","knowledge","language","licenses","licensor","loading","local","loving","macos","macpaw","magic","making","manipulation","measurement","media","needs","noscript","nvultra","original","output","partnership","picture","plaintext","position","project","projects","raftario","riquito","rouge","rsquo","scale","simple","source","speed","srcset","stdout","style","syntax","taking","title","tools","track","uploads","video","visibility","waveform","width","write"]
	},{
		"title": "Expand your communication with TextExpander [Sponsor]",
		"url": "/2022/07/14/expand-your-communication-with-textexpander-sponsor/",
		"tags": ["sponsor","textexpander"],
		"date": "Jul 14<span>th</span>, 2022",
		"ts": "1657830780",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! Get your team communicating faster with TextExpander, and keep your team’s knowledge at their fingertips. Put information in the hands of your team, outside of silos. Your team could be sending a unified message to your customers without reinventing the wheel. Store It: Keep your company’s most used emails, phrases, messaging, URLs and more right within TextExpander. Expand It: Deploy the content you need with just a few keystrokes on any device, across any apps you use. TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit TextExpander.com for more info",
		"keywords": ["smile","textexpander","brettterpstra","chrome","deploy","expand","share","store","textexpander","thanks","visit","windows","access","across","again","available","brettterpstra","campaign","class","communicating","company","content","customers","device","emails","faster","fingertips","first","graphics","hands","height","https","iphone","image","information","keystrokes","knowledge","loading","media","medium","message","messaging","nofollow","noscript","original","outside","phrases","picture","podcast","readers","reinventing","right","sending","silos","source","sponsoring","srcset","takeyourtimeback","terpstra","textexpander","title","unified","uploads","wheel","whole","width","within","works"]
	},{
		"title": "BetterTouchTool and Stream Deck",
		"url": "/2022/07/02/bettertouchtool-and-stream-deck/",
		"tags": ["automation","bettertouchtool","bunch","keyboard","plugin","productivity","scripting","shell","shortcuts","streamdeck"],
		"date": "Jul 2<span>nd</span>, 2022",
		"ts": "1656766620",
		"summary": "It was promised some time ago, and after a long wait1 BetterTouchTool has added Stream Deck support, and it&rsquo;s awesome. It&rsquo;s a beta feature, but I&rsquo;ve already found it to be an amazing extension to my Stream Deck. I&rsquo;ve only begun to dig into the possibilities here. Setting up your Stream Deck with BetterTouchTool is a little more cumbersome than using the Stream Deck software, but the scope of capabilities is vastly larger. Fully scriptable buttons, the ability to control buttons from external scripts, and anything BetterTouchTool can do can be assigned to your Stream Deck. And you&rsquo;re no longer limited to just folders and pages, now you can do things like hold a button and have a row of options temporarily change, allowing things like multi-press triggers. You can run BetterTouchTool as a Stream Deck plugin, integrating it into individual buttons in the Stream Deck software, or BetterTouchTool can take over control of your Stream Deck completely. The latter is supposed to be more performant, but it also means you lose all other Stream Deck plugins. I wasn&rsquo;t willing to let go of those quite yet, so I&rsquo;m running as a plugin. There are only a couple of plugins I would want to fully replicate in BetterTouchTool before switching over, namely the CPU load plugin (which won&rsquo;t be hard to recreate with some shell scripting) and the Spotify integration that shows cover art while playing. The Touch Bar widgets in BTT already include that functionality, so I imagine a Music/Spotify Stream Deck plugin isn&rsquo;t far off. The weather widget is superior to the Stream Deck weather plugin already, and you can have multiple buttons for future forecasts. You can have a page that shows you a full 7-day forecast, if you want to. The Zoom controls I have in my Touch Bar are easy to port to the Stream Deck, so that&rsquo;s already covered. One of the new things I can do is have Bunch icons in my Stream Deck that actually reflect the open/closed status of the Bunch. I&rsquo;ll probably eventually update the btt_stats script to handle this more elegantly, but here&rsquo;s the script I&rsquo;m currently using to do that. Now the button will check the status of the named bunch and return the name of the Bunch along with a grey (closed) or green (open) background color. If you assign an icon to the widget, just remove the word \"title\" from the command to avoid adding text. I&rsquo;ve also added buttons for volume control (using&hellip;",
		"keywords": ["applescript","control","keyboard","languages","media","script","scripting","shell","shortcut","andreas","applescript","automation","because","bettertouchtool","between","bunch","buttons","calendar","check","control","decks","excellent","fully","indigo","keyboard","maestro","media","mikrofon","multiple","music","name&#39;","pedal","playing","plugin","profile","regular","restful","running","script","setting","shell","shortcuts","specific","spotify","stream","switch","thanks","touch","using","ability","action","actions","added","adding","adjust","allowing","almost","amazing","amazingness","amount","another","assign","assigned","automation","available","avoid","avoids","awesome","background","backlink","basement","basic","because","before","begun","bettertouchtool","between","brettterpstra","brightness","browser","bunch","button","buttons","capabilities","change","check","class","closed","color","command","completely","configuration","continued","control","controls","cough","couple","cover","covered","crazy","cumbersome","dcada","decks","decrease","developed","device","disappearing","dynamic","easily","elegantly","elgato","endnotes","eventually","experiment","extension","external","extra","feature","finished","fnref","folders","folivora","footnote","footnotes","forecast","forecasts","found","fully","functionality","github","global","gotten","gradually","green","hacking","handle","having","header","height","hellip","highlight","highlighter","hitting","hotkey","https","icons","image","imagine","immediate","includes","increase","incrementally","individual","integrating","integration","involved","keyboard","language","larger","latter","ldquo","lights","limited","little","loading","longer","macos","macro","macros","maestro","makes","meant","media","method","missing","multi","multiple","named","namely","night","noscript","noteref","nvultra","office","opposed","options","original","pages","pedal","performant","picture","plaintext","playing","plenty","plugin","plugins","possibilities","powerful","preset","press","process","profile","profiles","promised","queries","quirky","rdquo","receive","recreate"]
	},{
		"title": "Bunch 1.4.8",
		"url": "/2022/06/14/bunch-1-dot-4-8/",
		"tags": ["automation","bunch","scripting","tagging"],
		"date": "Jun 14<span>th</span>, 2022",
		"ts": "1655214720",
		"summary": "Bunch 1.4.8 was officially released this morning. It consists entirely of bug fixes that have been going through beta testing for a while now. Nothing groundbreaking, but some stuff that you probably didn&rsquo;t know wasn&rsquo;t working1 is now working. When launching or quitting Bunches based on tags, was not ignoring the action on close Don&rsquo;t inherit tags when nesting Bunches Grab the latest version from the download page (or just use Bunch->Check for Updates). Please keep the bug reports coming, and feel free to join the discussions if there are features you&rsquo;d like to see. Because they mostly relate to obscure features that, statistically, you likely don&rsquo;t know exist.&nbsp;↩",
		"keywords": ["snippet","allow","applescript","because","bunch","bunches","check","desktop","editor","finder","modifier","nothing","tagging","updates","variable","variables","action","backlink","banner","based","because","brettterpstra","bunch","bunchapp","class","close","coming","commands","conditional","consists","defined","desktop","discussions","download","endnotes","entirely","exist","features","fixes","fnref","footnote","footnotes","general","github","going","groundbreaking","handler","handling","header","height","hiding","highlighter","https","icons","ignoring","image","inherit","issues","language","latest","launching","likely","loading","logic","media","mismatch","morning","mostly","nesting","noscript","noteref","obscure","officially","original","passed","picture","plaintext","quitting","relate","relaunch","released","reports","retries","reversefootnote","rouge","rsquo","running","sending","sensitivity","showing","snippet","source","srcset","statistically","stuff","testing","through","title","tooltip","ttscoff","uploads","variable","version","while","width","within","working"]
	},{
		"title": "Communicate faster than ever with TextExpander [Sponsor]",
		"url": "/2022/06/09/communicate-faster-than-ever-with-textexpander-sponsor/",
		"tags": ["sponsor"],
		"date": "Jun 9<span>th</span>, 2022",
		"ts": "1654779600",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! Get your team communicating faster with TextExpander, and keep your team’s knowledge at their fingertips. Put information in the hands of your team, outside of silos. Your team could be sending a unified message to your customers without reinventing the wheel. Store It: Keep your company’s most used emails, phrases, messaging, URLs and more right within TextExpander. Expand It: Deploy the content you need with just a few keystrokes on any device, across any apps you use. TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit TextExpander.com for more info",
		"keywords": ["smile","textexpander","brettterpstra","chrome","deploy","expand","share","store","textexpander","thanks","visit","windows","access","across","again","available","brettterpstra","campaign","class","communicating","company","content","customers","device","emails","faster","fingertips","first","graphics","hands","height","https","iphone","image","information","keystrokes","knowledge","loading","media","medium","message","messaging","nofollow","noscript","original","outside","phrases","picture","podcast","readers","reinventing","right","sending","silos","source","sponsoring","srcset","takeyourtimeback","terpstra","textexpander","title","unified","uploads","wheel","whole","width","within","works"]
	},{
		"title": "Terminal output with ALL the colors",
		"url": "/2022/06/07/terminal-output-with-all-the-colors/",
		"tags": ["scripting","snippet","terminal"],
		"date": "Jun 7<span>th</span>, 2022",
		"ts": "1654614540",
		"summary": "I&rsquo;ve always relied on 2-bit coloring for terminal output, sticking to eight foreground and eight background colors. It&rsquo;s nice because it conforms to any user&rsquo;s terminal theme. But there&rsquo;s a whole world of colors out there (in most modern terminals) and I figured it was about time I started expanding my horizons. I write most of my command line tools and scripts in Ruby. Call me old fashioned, but it really is a beautiful, readable language with plenty of room for elegant solutions. So this little snippet is in Ruby, but the core of it is simple enough that I can&rsquo;t imagine it would take much work to port. Like all terminal color output, it relies on ANSI escape codes. 2-bit escape codes look like , which would be regular black text on a red background. But you can use RGB values in most modern terminals with an escape code like (for a foreground color). So all you have to do is get RGB values for a specific color and insert them into that code. The following Ruby snippet (gist here) will take a CSS hex color, e.g. , and turn it into an ANSI escape sequence for you. It splits the hex value and uses the method in Ruby to convert a 2-digit hex into a value between 1 and 256. With it you can run something like and get some bright red text. The snippet itself is designed to be included in a script. If you run it directly you can test by using where FG and BG are 3 or 6-digit hex codes. The octothorp () is always optional. Hope that&rsquo;s of use to somebody! By the way, this is incorporated into the latest version of Doing such that you can use instead of a color name to set colors in a template. And use to set a background color. Customize away",
		"keywords": ["ascii","character","color","colors","computer","encoding","escape","hexadecimal","interface","model","terminal","customize","doing","background","beautiful","because","between","black","bright","codes","color","coloring","colors","command","conforms","convert","designed","digit","directly","eight","elegant","enough","escape","expanding","fashioned","figured","foreground","horizons","imagine","included","incorporated","itself","language","latest","little","method","modern","octothorp","optional","output","plenty","readable","regular","relied","relies","rsquo","script","scripts","sequence","simple","snippet","solutions","somebody","specific","splits","started","sticking","template","terminal","terminals","theme","tools","using","value","values","version","where","whole","world","write"]
	},{
		"title": "I've missed you, too",
		"url": "/2022/05/20/ive-missed-you-too/",
		"tags": ["hardware","nvultra"],
		"date": "May 20<span>th</span>, 2022",
		"ts": "1653074460",
		"summary": "I haven&rsquo;t had a lot of time for personal projects lately. Partly because I switched my ADHD meds to Vyvanse, which isn&rsquo;t great for my attention but does keep my bipolar in check, meaning I&rsquo;ve had moderate concentration abilities combined with a complete lack of all-night manic coding binges. Which, by and large, is better for my productivity overall, but definitely means less time spent on side projects. I&rsquo;m at a point in my life where that&rsquo;s the preferable outcome. That said, I&rsquo;ve pushed some updates to Doing recently, and have been working on a Bunch bug or two. Marked has gotten a couple of bugfixes pushed, and we&rsquo;re so close to getting nvUltra out the door. Between Fletcher and I, time for it has been tight, but we&rsquo;ve put a feature freeze on it and are just finalizing the MAS testing for the in-app purchase and subscription setup we&rsquo;re going to use to allow us to offer a free trial and a sustainable pricing structure. More soon. In the meantime, I&rsquo;ve gotten some new hardware recently that I thought warranted a quick post. First, I got my new Mac Studio. I didn&rsquo;t go all out on it; I got the Max with 64G of RAM, but it leaves my M1 mini in the dust. Compiler tasks that took about 30 seconds on the mini now take 5 seconds on the Studio. And the test suite for Doing used to take about 72 seconds to run, and now takes 30 &mdash; which is impressive mostly because what slows those tests down is a ton of file read/writes that processor speed can&rsquo;t improve anyway. So I&rsquo;m very happy with the purchase, and if you&rsquo;re looking for a Mac with top performance, the Studio is an excellent choice. Second, I got an OWC Express 4M2 for work with a couple of NME SSD cards and I&rsquo;m so blown away by the speed that I&rsquo;ll soon be purchasing a second one for myself. 1345 MB/s read and 1436 MB/s writes. It&rsquo;s crazy fast for an external drive, and you can put together terrabytes worth of storage for less than buying individual external SSD drives. I also got a G-RAID for 36TB of backup space, and over a Thunderbolt 4 connection that one gets 482/514 MB/s even with platter drives. Now I just need a faster Synology&hellip; Well, that&rsquo;s my update for now. I know my posting pace has slowed a bit, but I&rsquo;m grateful to all of the BrettTerpstra.com readers who support my work with monthly donations. I&rsquo;ll keep putting out (and supporting) new stuff, and I&rsquo&hellip;",
		"keywords": ["drive","solid","between","brettterpstra","bunch","compiler","doing","express","first","fletcher","marked","partly","second","studio","synology","thunderbolt","vyvanse","abilities","allow","anyway","backup","because","binges","bipolar","blown","bugfixes","buying","cards","check","choice","close","coding","concentration","couple","crazy","definitely","donations","drive","drives","excellent","external","faster","feature","finalizing","freeze","getting","going","gotten","grateful","great","happy","hardware","haven","hellip","impressive","improve","individual","leaves","looking","manic","mdash","meaning","meantime","moderate","monthly","mostly","myself","night","nvultra","offer","often","outcome","overall","performance","personal","platter","point","posting","preferable","pricing","processor","productivity","projects","purchasing","pushed","putting","quick","readers","recently","rsquo","second","seconds","setup","slowed","slows","space","speed","spent","storage","structure","stuff","subscription","suite","support","supporting","sustainable","switched","takes","tasks","terrabytes","testing","tests","thought","tight","together","trial","updates","warranted","where","working","worth","writes"]
	},{
		"title": "Focus on what matters with TextExpander [Sponsor]",
		"url": "/2022/05/12/focus-on-what-matters-with-textexpander/",
		"tags": ["sponsor","textexpander"],
		"date": "May 12<span>th</span>, 2022",
		"ts": "1652360400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Get your team communicating faster so they can focus on what’s most important &mdash; with TextExpander your team’s knowledge is at their fingertips. Get your whole team on the same page by getting information out of silos and into the hands of everyone that needs to use it. You can share your team’s knowledge across departments so your team is sending a unified message to your customers and isn’t spending time reinventing the wheel. Keep your company’s most used emails, phrases, messaging, URLs and more right within TextExpander. Share It Deploy the content you need with just a few keystrokes on any device, across any apps you use. TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more",
		"keywords": ["computing","hyperlink","hypertext","interfaces","nofollow","wordpress","world","brettterpstra","chrome","deploy","expand","organize","share","smarter","store","textexpander","thanks","visit","windows","access","across","available","brettterpstra","campaign","class","communicatesmarter","communicating","company","content","customers","department","departments","device","emails","everyone","faster","fingertips","first","focus","getting","graphics","hands","height","https","iphone","image","important","information","keystrokes","knowledge","learn","loading","mdash","media","medium","message","messaging","needs","nofollow","noscript","original","phrases","picture","podcast","readers","reinventing","right","sending","share","silos","source","spending","sponsoring","srcset","strong","terpstra","textexpander","title","unified","uploads","wheel","whole","width","within","works"]
	},{
		"title": "Want more time? Free up yours with TextExpander [Sponsor]",
		"url": "/2022/04/28/want-more-time-free-up-yours-with-textexpander-sponsor/",
		"tags": ["sponsor"],
		"date": "Apr 28<span>th</span>, 2022",
		"ts": "1651165200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! What would you do with a little more time in your week? Repetitive typing, little mistakes, searching for answers – they’re all taking precious minutes from you and your team. With TextExpander, you can take back your time so you can focus on what matters most in your business. The way we work is changing rapidly. Make work happen wherever you are by saying more in less time and with less effort using TextExpander. TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["snippet","textexpander","brettterpstra","chrome","repetitive","textexpander","thanks","visit","windows","accurate","answers","available","brettterpstra","business","campaign","changing","class","consistent","effort","first","focus","graphics","happen","height","https","iphone","image","learn","little","loading","matters","media","medium","message","minutes","mistakes","nofollow","noscript","original","picture","podcast","precious","productive","rapidly","readers","saying","searching","source","sponsoring","srcset","takeyourtimeback","taking","terpstra","textexpander","title","typing","uploads","using","wherever","width"]
	},{
		"title": "Bunch: Focus Modes and other tips",
		"url": "/2022/03/22/bunch-focus-modes-and-other-tips/",
		"tags": ["bunch","macos","shortcuts","tagging"],
		"date": "Mar 22<span>nd</span>, 2022",
		"ts": "1647953700",
		"summary": "I put some time into Bunch this weekend. It&rsquo;s been a little while since I&rsquo;ve worked on it &mdash; I haven&rsquo;t needed it to do anything new lately, and the current release hasn&rsquo;t had any major bug reports. So it&rsquo;s been happily humming along. But there was one feature request that I did keep receiving and decided to take another look at. The request is for support for Monterey&rsquo;s focus modes. Bunch does a decent job of enabling and disabling Do Not Disturb, but the process is a hack that involves nested settings in PLIST data and toggling system daemons. I don&rsquo;t love that I have to do that, but Apple provides no API for such settings. And I haven&rsquo;t found a way (yet) to extend that hack to work with Focus Modes. So I offer a workaround: you can turn Focus Modes on and off using Shortcuts, and you can easily run Shortcuts in a Bunch using the CLI. Create two shortcuts for each focus mode you want to control from Bunch, one for turning on, and one for turning off. Then, in a Bunch, you can use (replacing with the name of the shortcut that turns the focus mode on), and . The combination of these two will turn the focus mode on when the Bunch opens, and off when it closes. You can, of course, reverse these as needed. Now when you open and close the Bunch, your desired Focus Mode will toggle on and off with it. It&rsquo;s a couple extra steps beyond having a Bunch command to handle it, but I don&rsquo;t foresee being able to incorporate them directly. Of course, I may just be missing something in the API that would make it possible without deep hacks, in which case I will definitely incorporate it. Another request I got led to a couple of bug fixes. The following currently only works in the 2.4.8 beta (download here), but if testing goes well, it will be released to the stable version in short order. Single Bunch Mode can be enabled in preferences and simply means that when a Bunch opens, all other Bunches close, so you&rsquo;re only running one at a time. Because Bunch is built for \"context switching,\" this makes switching your working context a single step. You can have any Bunch ignore Single Bunch Mode using frontmatter, so Bunches that should always be running can be easily excluded. However, you might want to have multiple groups of Bunches where only one Bunch within the group is running at any given time. This can be accomplished with Bunch&rsquo;s tagging features. Tag&hellip;",
		"keywords": ["automation","productivity","another","apple","because","bunch","bunches","create","disturb","focus","grouping","however","modes","monterey","plist","shortcuts","single","accomplished","another","apply","beyond","built","bunch","close","closes","closing","combination","command","context","control","couple","daemons","decent","decided","definitely","desired","directive","directly","disabling","doesn","download","easily","effectively","enabled","enabling","excluded","extend","extra","feature","features","fixes","focus","foresee","found","frontmatter","gives","group","groups","hacks","handle","happily","haven","having","humming","ignore","incorporate","involves","little","major","makes","mdash","missing","modes","multiple","needed","nested","offer","opens","possible","preferences","process","provides","receiving","release","released","reopen","replacing","reports","reverse","rsquo","running","settings","short","shortcut","shortcuts","simply","since","single","stable","steps","subgroup","subsets","support","switching","syntax","system","tagged","tagging","testing","toggle","toggling","turning","turns","using","version","weekend","where","while","within","workaround","worked","working","works"]
	},{
		"title": "TextExpander: faster than copy/paste, more reliable than your memory [Sponsor]",
		"url": "/2022/03/16/textexpander-faster-than-copy-slash-paste-more-reliable-than-your-memory/",
		"tags": ["sponsor","textexpander"],
		"date": "Mar 16<span>th</span>, 2022",
		"ts": "1647435600",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander will be one of the very first apps I install when I get my brand new Mac Studio! In our fast-paced world, things change constantly &mdash; and errors in messaging often have significant consequences. TextExpander lets you make new approved messaging available to every team member instantly with just a few keystrokes, ensuring your team remains consistent, current, and accurate. Your team members will always get the right message to the right person at the right time &mdash; it&rsquo;s way faster than copy paste and way more reliable than your memory. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more",
		"keywords": ["productivity","smile","textexpander","typing","brettterpstra","studio","textexpander","thanks","visit","accurate","approved","available","brand","change","consequences","consistent","constantly","content","corrects","ensuring","errors","expand","faster","first","install","instantly","keeps","keystrokes","language","learn","mdash","member","members","memory","message","messaging","often","paced","paste","person","readers","reliable","remains","right","rsquo","significant","spelling","sponsoring","textexpander","world"]
	},{
		"title": "Web Excursions for March 15, 2022",
		"url": "/2022/03/15/web-excursions-for-march-15-2022/",
		"tags": ["bookmarks","scripting","tools"],
		"date": "Mar 15<span>th</span>, 2022",
		"ts": "1647374220",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. ttscoff/hookgoodies I&rsquo;ve started a collection of scripts for Hook. It&rsquo;s small right now, but should grow in the future. Worth a bookmark or a star if you&rsquo;re a Hook user. 1Password for SSH & Git (Beta) Introducing 1Password for SSH & Git (Beta), the single source of truth for all your SSH keys. Zettel Composer: a tool for combining notes — Zettelkasten Forum After about a year of personal experiments, I present you the \"Zettel Composer\", a script for combining Zettelkasten notes in a variety of situations: browsing annotations, publishing a book or a paper, assembling a handout for lectures or conferences etc. Kaleidoscope Developer Tools for Safari The good folks behind Kaleidoscope have added a Safari extension. It adds a function to the debugger that you can call from the console or breakpoint actions. It can also diff the source and CSS of any page or element, which is amazing for web development and debugging. Nice work! cedstrom/powermate-osx: Griffin Powermate Driver for macOS A little driver for the Bluetooth Griffin Powermate, perfect for advanced scripting and integration with a tool like Hammerspoon",
		"keywords": ["password","safari","secure","shell","zettel","bluetooth","brett","cleanmymac","composer","developer","driver","forum","griffin","hammerspoon","introducing","kaleidoscope","password","powermate","safari","tools","worth","zettel","zettelkasten","absolute","actions","added","advanced","amazing","annotations","assembling","behind","blockquote","bookmark","border","breakpoint","brettterpstra","brought","browsing","cedstrom","class","collection","combining","composer","conferences","console","debugger","debugging","developer","development","discussion","display","driver","element","excursions","experiments","extension","folks","forum","function","github","goodies","handout","height","hidden","highlighter","holding","https","image","impactradius","integration","kaleidoscope","ksdiff","language","ldquo","lectures","little","loading","macos","macpaw","media","noscript","notes","original","paper","partnership","password","personal","picture","plaintext","position","powermate","publishing","rdquo","right","rouge","rsquo","safari","script","scripting","scripts","single","situations","small","source","speed","srcset","started","style","title","tools","truth","ttscoff","uploads","variety","visibility","width","zettel","zettelkasten"]
	},{
		"title": "He's Doing it again...",
		"url": "/2022/02/21/doing-it-again-dot-dot-dot/",
		"tags": ["bunch","doing","search","tagging","writing"],
		"date": "Feb 21<span>st</span>, 2022",
		"ts": "1645452000",
		"summary": "I&rsquo;ve added some stuff to Doing lately. Like, a lot of stuff. To be fair, I&rsquo;ve also done a lot of jobby job stuff. And worked with Fletcher on nvUltra. And started a rewrite of Gather as a menu bar clipboard web Markdownifier with integration with multiple apps (that one&rsquo;s going to be cool if I finish it). And some time on Bunch. But as I&rsquo;ve said before, the one thing I use when working on all of these is Doing. And I always want it to do something new or better, so it gets some attention. Oh, and looking at my output reminds me that I also tried my hand at creating my first oh-my-fish plugin yesterday. It has some dependencies and I don&rsquo;t think it&rsquo;s right for the main packages repo, so you have to add the repository manually to try it out, but I think it&rsquo;s fully functional. If you want intelligent directory navigation with bookmarks, fuzzy matching, and fasd/fzf integration in Fish, all in your command, check it out. Anyway, what were we talking about? Hang on: Right. Doing updates. To get the latest version, just run , which as of this writing should get you at least version 2.1.34. (If you get an error, run the same command with .) I&rsquo;m not going to go through the whole changelog, but I did add a thing for that. This is a tool I made mostly for me, exactly for things like writing a post such as this one, but if you want to see what&rsquo;s changed next time you update, it&rsquo;s handy. You can now run to see the latest changes, and use (or ) to search for a version or a range of versions (or for the whole kit and caboodle). To see all of the changes since the last time I blogged about Doing, you would run . That will give you a rendered version of all version entries since 2.1.0, and you can output just the change lines (without version numbers and dates) by adding . Multiple comparisons can be combined, e.g. . You can also search for changes related to something you&rsquo;re curious about using , e.g. . A good way to keep track of a feature you care about and ignore the rest of my very frequent updates. The shell completion scripts have improved, especially for Fish. (I put some more effort into Zsh, but I don&rsquo;t use it regularly and I&rsquo;m sure it could use further improvements. If you&rsquo;re a Zsh pro and a Doing user, please feel free to create a GitHub Issue with any suggestions/fixes.) now uses subcommands: and . The command copies the built-in scripts that are generated&hellip;",
		"keywords": ["command","shell","shells","anyway","built","bunch","changelog","config","doing","expanded","fletcher","gather","github","improvements","markdownifier","modify","multiple","natural","numeric","pager","queries","right","search","shell","stackoverflow","stuff","takes","viewer","wildcards","works","accept","accepts","accurately","added","adding","affecting","again","allow","allowed","allowing","allows","almost","alongside","amount","answer","answers","anyone","appropriately","architecture","arguments","autoload","automatically","autotagging","available","avoid","based","before","begins","between","blogged","bookmarks","boolean","bottom","browser","built","bunch","caboodle","capabilities","change","changed","changelog","changes","character","characters","check","choose","clipboard","closed","coming","command","commands","comparators","comparisons","completing","completions","configurable","confirmation","confirming","contained","contains","control","converted","copies","couple","create","created","creates","creating","curious","custom","dates","dating","debugging","default","define","deleting","dependencies","deploy","detected","determines","digest","directory","disable","display","doing","doingrc","editing","editor","effort","elapsed","enter","entries","entry","error","especially","everything","exact","examples","executes","export","expression","feature","files","filter","filtered","filtering","filters","finish","finished","first","fixes","flags","focus","folder","folders","force","formatting","frequent","fully","functional","fuzzy","general","generated","generates","going","greater","guess","handle","handled","handling","handy","haven","highlights","history","hooks","however","ignore","improved","improvements","includes","including","individual","input","integration","intelligent","interactive","interest","interpreted","invoked","items","jobby","language","latest","loading","looking","lsquo","manual","manually","match","matching","mdash","minute","modified","modify","mostly","multi","multiple","names","natural","navigation","necessary","newest","notes"]
	},{
		"title": "Keybindings cheat sheet for Dash",
		"url": "/2022/02/18/keybindings-cheat-sheet-for-dash/",
		"tags": ["cheatsheet","comments","keybindings","keyboard","scripting"],
		"date": "Feb 18<span>th</span>, 2022",
		"ts": "1645189080",
		"summary": "It&rsquo;s been a while since I mentioned my macOS key bindings, so if you&rsquo;re new around here, let me point you to my previous work. I&rsquo;m pretty crazy about text input shortcuts and have spent a fair amount of time honing a system that lets me use selection, editing, Markdown, HTML, and other shortcuts everywhere you can type on macOS. I&rsquo;m so used to them I make a mess typing on other people&rsquo;s computers. I try to avoid doing that. Typing on other people&rsquo;s computers, I mean. I share a large collection of all of my favorite key bindings on GitHub. Everything is contained in the file , which is what macOS reads all key bindings from. In that file I use formatted comments to describe each binding, and I can generate the README and blog page by parsing the bindings file itself. The script that generates the table of shortcuts creates it in Markdown and then uses MultiMarkdown to output the document, ready for GitHub or my project page. I also generate a cheat sheet for Cheaters from it, but I&rsquo;ve been using Dash more than Cheaters for the last couple of years. So I wanted my key bindings in a Dash docset for quick reference. Yes, there is such a thing as too many shortcuts. I walk that line. But I manage to not have so many that I&rsquo;m accidentally triggering them while doing something else, so I think it&rsquo;s just the right amount. It&rsquo;s just more than (even) I can remember all at once. Which is why a searchable cheat sheet you can pop up with a keystroke is handy. So I modified the documentation generator to output a template for the cheatset gem. It will read whatever is in your KeyBindings.dict file and generate a file for you based on the definitions and comments in the file. So you can take my oversized file, trim it down to what you want to use (leaving comments in place), and generate a custom cheat sheet for your own key bindings. Download the code to get the script (and the bindings file). Make it executable with . Before running it, you&rsquo;ll need to install the cheatset gem: should do it, though you might need , depending on your setup. You can point the script to whatever you like by passing a path as an argument. It will default to using the one in . The script can output the key combinations either as symbols, e.g. or as names, e.g. . \"Name\" is the default format; to output symbols instead, use . You can also change things like the docset title and description using command line&hellip;",
		"keywords": ["keyboard","markdown","rubygems","shortcut","before","cheaters","download","everything","github","keybindings","markdown","multimarkdown","readme","typing","accidentally","amount","argument","avoid","based","because","binding","bindings","change","cheat","cheatset","collection","combinations","command","comments","computers","contained","couple","crazy","creates","custom","default","definitions","depending","describe","description","docset","document","doing","editing","either","enjoy","everywhere","executable","expected","favorite","flags","format","formatted","generates","generator","handy","honing","input","install","itself","keystroke","leaving","macos","mentioned","modified","names","needed","options","output","oversized","parsing","passing","people","point","popular","project","quick","reads","ready","remember","right","rsquo","running","script","searchable","selection","setup","share","sheet","shortcuts","since","spent","symbols","system","table","template","think","title","triggering","typing","using","wanted","whatever","while","years"]
	},{
		"title": "Keep it consistent and accurate with TextExpander",
		"url": "/2022/02/11/keep-it-consistent-and-accurate-with-textexpander/",
		"tags": ["sponsor","textexpander"],
		"date": "Feb 11<span>th</span>, 2022",
		"ts": "1644588960",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! In our fast-paced world, things change constantly — and errors in messaging often have significant consequences. TextExpander lets you make new, approved messaging available to every team member instantly with just a few keystrokes, ensuring your team remains current, accurate, and consistent. Your team members will always know the right message for the right person at the right time, without relying on memory or copy and paste. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more",
		"keywords": ["textexpander","brettterpstra","textexpander","thanks","visit","accurate","approved","available","brettterpstra","campaign","change","class","consequences","consistent","constantly","content","corrects","ensuring","errors","expand","first","height","https","image","instantly","keeps","keystrokes","language","learn","loading","media","medium","member","members","memory","message","messaging","nofollow","noscript","often","original","paced","paste","person","picture","podcast","readers","relying","remains","right","significant","source","spelling","sponsoring","srcset","terpstra","textexpander","title","uploads","width","world"]
	},{
		"title": "Brett's Favorites 2021",
		"url": "/2022/01/15/bretts-favorites-2021/",
		"tags": ["hookmark","learning","macos","tools"],
		"date": "Jan 15<span>th</span>, 2022",
		"ts": "1642264260",
		"summary": "I&rsquo;m late getting my \"Top Apps of 2021\" post out. I almost wasn&rsquo;t going to do it this year, mostly out of just being frequently and excessively tired of late. But I figured I&rsquo;d keep it short and make it manageable, and at least let you know what I think are the cream of the crop Mac apps this year. This is nowhere close to a comprehensive list of apps I like, but rather apps I love that were new or substantially updated in 2021. I&rsquo;m forgoing1 iOS apps because I just haven&rsquo;t found anything new that blew me away this year2. Many of the apps below are available on Setapp. If you want to check it out and get access to 100+ awesome Mac apps (and some iOS companions) for a low monthly subscription, here&rsquo;s my affiliate link. I get a little something if you sign up, and if you happen to use my apps through Setapp, I also get a piece of your monthly payment, which I think is nicer than switching an app like Marked 2 to a subscription model on its own. And we&rsquo;re off. CleanShot X This is the best screenshot app I&rsquo;ve ever used. Everything about it is elegant, intuitive, and powerful. Available on Setapp. Dato I can&rsquo;t use Fantastical with my work calendar (employer limitations), but Dato at least puts my calendar in my menu bar with some handy features, including \"Join Zoom Call\" buttons that actually work. Solid app and one I use daily. BetterTouchTool BTT always makes my list, and is always improving. I couldn&rsquo;t begin to enumerate all the new features Andreas has added in the last year. If you&rsquo;re looking for one of the best Mac automation/enhancement tools out there, this is it. Available on Setapp. Kaleidoscope Back from the dead, Kaleidoscope is under new management and active development and remains my favorite tool for file and directory diffs, as well as resolving merge conflicts. Tower A bunch of improvements last year in this top-notch Git GUI. And I highly recommend the tutorials that they put out on their website &mdash; they&rsquo;re a great way to learn more about areas of git you might not be well-versed in. iTerm I love iTerm so hard. I&rsquo;ve tried other terminals, but iTerm packs so many awesome features in that nothing else can really come close. Hook Hook had a big year in 2021. As I&rsquo;ve said before, it&rsquo;s a bit hard to explain in a couple of sentences, but if you want to always have relevant files and documents at your fingertips while&hellip;",
		"keywords": ["setapp","store","actions","andreas","available","bartender","bettertouchtool","brand","cleanshot","descript","everything","fantastical","javascript","kaleidoscope","launchcontrol","lingon","macupdater","marked","quick","regularly","screenflow","services","setapp","short","solid","store","system","textbuddy","today","tower","tyler","access","active","added","affiliate","allows","almost","anyway","apple","areas","array","audio","automatically","automation","available","awesome","background","backlink","banner","batch","because","before","begin","below","bestof","between","brettterpstra","bunch","button","buttons","calendar","calling","caught","check","class","clean","cleanshot","click","close","comes","companions","competitors","comprehensive","conflicts","control","corecode","couldn","couple","cream","create","cutting","daily","descript","development","difference","diffs","direct","directory","documents","easiest","effects","elegant","email","employer","endnotes","enhancement","enough","enumerate","excessively","explain","extensible","fantastical","favorite","favorites","features","figured","files","fingertips","fnref","folivora","footnote","footnotes","foregoing","forgoing","found","fully","games","generates","getting","going","great","guess","hands","handy","happen","happened","haven","header","height","highly","hookproductivity","https","iterm","ideas","image","improved","improvements","improving","including","installed","installing","installment","intuitive","iterm","kaleidoscope","keeps","keyboard","launchd","ldquo","learn","learned","learning","limitations","little","loading","looked","looking","macos","macbartender","macos","macupdater","major","makes","manageable","management","mdash","media","mentioning","merge","messaging","mighty","model","monthly","mostly","nicer","noscript","notch","noteref","nothing","nowhere","often","operations","optimized","original","overview","packs","pasting","payment","performing","picture","piece","podcasts","powerful","presentations","rather","rdquo","recommend","regularly","released","relevant","remains","resolving"]
	},{
		"title": "Want more hours every month? Save time with TextExpander [Sponsor]",
		"url": "/2022/01/13/want-more-hours-every-month-save-time-with-textexpander-sponsor/",
		"tags": ["sponsor"],
		"date": "Jan 13<span>th</span>, 2022",
		"ts": "1642082400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! What would you do with more hours every month? Repetitive typing, little mistakes, searching for answers – they’re all taking precious time away from you and your team. With TextExpander, you can take back your time so you can focus on what matters most in your business. The way we work is changing rapidly. Make work happen wherever you are by saying more in less time and with less effort using TextExpander. You will never need to copy-paste repetitive responses again &mdash; with TextExpander, your knowledge will always be at your fingertips with a quick search or abbreviation. Drop your commonly-used content into a TextExpander snippet and give it an abbreviation. Share your snippet with your entire team. Just type a few characters to trigger your snippet and the content expands anywhere you type. TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["snippet","textexpander","brettterpstra","chrome","repetitive","share","textexpander","thanks","visit","windows","abbreviation","accurate","again","answers","anywhere","available","brettterpstra","business","campaign","changing","characters","class","commonly","consistent","content","effort","entire","expands","fingertips","first","focus","happen","height","hours","https","iphone","image","knowledge","learn","little","loading","matters","mdash","media","medium","message","mistakes","nofollow","noscript","original","paste","picture","podcast","precious","productive","quick","rapidly","readers","repetitive","responses","saying","search","searching","snippet","source","sponsoring","srcset","taking","terpstra","textexpander","title","trigger","typing","uploads","using","wherever","width","works"]
	},{
		"title": "A fuzzy cd command for Fish",
		"url": "/2021/12/24/a-fuzzy-cd-command-for-fish/",
		"tags": ["terminal"],
		"date": "Dec 24<span>th</span>, 2021",
		"ts": "1640383440",
		"summary": "This is not a Christmas post. I kind of forgot it was Christmas Eve until my mom called just now. So I edited this post to start with \"Merry Christmas.\" I hope that brings cheer to your life. I&rsquo;m constantly playing with ways to make navigating in Terminal easier. I&rsquo;ve been doing it for years. Tools like , , , , , and dozens more always appeal to me. My latest experiment has been creating an all-purpose cd command that combines some of my favorite navigation methods. Fair warning, this only applies to the Fish shell. I&rsquo;m sure you could duplicate it in any shell, but I haven&rsquo;t the time. This trick comprises several of my other tools, including a custom version of jump, and my own fuzzy directory search. Add fasd and mix in some fzf for good measure. If you&rsquo;re not familiar with (originally by Joroen Janssen), it&rsquo;s basically a port of Bashmarks, which was probably a port of something else&hellip; it allows you to create shortcuts to your frequently used directories. You type to bookmark the current directory, then to return to it. So I can just type to change to the repository folder for Bunch. It&rsquo;s actually aliased to , so it&rsquo;s just . I expanded this to allow additional arguments which are fuzzy searched within the target directory. So I can type and get to . I also made it fuzzy match the bookmark name itself, so would jump to the mark if there was no better match. If you don&rsquo;t want to use , you can just create the folder and this fuzzy cd function should still work. I also make frequent use of , which relies on to allow you to jump to recently-used directories with fuzzy name matching. I have it aliased to , so assuming at some point I had been in the directory, I can just type to get back there (or to the recent directory that ranks highest for the search terms). My goal was to combine all of this into one command so I could just use and it would figure it out. Here&rsquo;s what it does: If there&rsquo;s only one argument and it matches a subdirectory of the current path, just cd to it. Path completion still works. If the first argument contains no non-alphanumeric characters (, , etc.) and fuzzy matches a jump mark, use that as the base, otherwise use the current directory as the base Do a fuzzy directory search using any additional parameters. Arguments are separated by spaces, but if an argument contains it will be split into multiple search terms If no results are found below&hellip;",
		"keywords": ["alias","github","shells","anyway","arguments","bashmarks","bunch","christmas","clone","github","homebrew","installation","janssen","joroen","manual","merry","prerequisites","terminal","tools","updated","above","adding","aliased","allow","allows","alphanumeric","appeal","applies","argument","arguments","assuming","autoloaded","automatically","below","benefit","bookmark","brings","broken","bunch","called","change","chaotic","characters","cheer","combines","command","common","completing","comprises","constantly","contains","couple","create","creates","creating","custom","default","definitely","depending","directories","directory","doesn","doing","dozens","duplicate","easier","easiest","edited","expanded","experiment","explore","familiar","favorite","ffdir","ffmark","figure","files","finicky","first","fisher","folder","folders","forgot","found","frequent","function","functions","fuzzy","github","hacking","haven","hellip","highest","hoping","including","install","installed","instructions","itself","jumping","latest","leave","listing","manually","marks","match","matches","matching","measure","mentioned","methods","modify","morphed","multiple","navigating","navigation","organizing","originally","parameters","particular","played","playing","plugin","point","quick","ranks","recent","recently","regex","relies","removing","replacement","replacing","repository","results","return","returned","revert","rsquo","search","searched","seems","selection","separated","several","shadow","shadows","share","shell","shortcuts","shortest","simple","since","single","spaces","split","string","stuff","subdirectories","subdirectory","switch","symlinks","system","target","terminal","terms","token","tools","trick","uninstalling","updated","using","utility","version","warning","while","within","working","works","years"]
	},{
		"title": "Web Excursions for December 20, 2021",
		"url": "/2021/12/20/web-excursions-for-december-20-2021/",
		"tags": ["bookmarks","plugin","prompt"],
		"date": "Dec 20<span>th</span>, 2021",
		"ts": "1640033160",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. piotrmurach/tty: Toolkit for developing sleek command line apps. Toolkit for developing sleek command line utilities with Ruby. The toolkit itself is cool, but the components it includes are awesome and can be used in any project (each one is an individual gem). Great tools for everything from command line progress bars to rendering Markdown in the Terminal. jorgebucaran/autopair.fish: Auto-complete matching pairs in the Fish command line. Another useful Fish plugin. It gives you auto-pairing of quotes and braces, intelligently deletes empty pairs, and you can type over closing elements. Just like in your favorite Markdown editors&hellip; Also see pisces, which is pretty much the same thing, as far as I can tell. acomagu/fish-async-prompt: Make your prompt asynchronous to improve the reactivity. I love the Fish shell. One thing that bugs me but which I kind of just learned to live with is that a prompt with the same amount of shenanigans I ran in Bash or Zsh would take an extra second to display in Fish. I got used to it. But then I found this plugin that makes your prompt command async. It displays the previous prompt immediately, and then updates it in place once your prompt commands (left and right) run. Perfect if you have a custom prompt and don&rsquo;t want to switch to a prompt package&hellip; IlanCosman/tide: The ultimate Fish prompt. The fish-async-prompt plugin is excellent if you want to use your own prompt commands, but if you want an easy-to-configure async prompt with all the niceties (git status, ssh context, command execution time, etc.), Tide is a pretty great option. I added the asdf items and I think I&rsquo;m switching from my convoluted custom prompt setup to this now. I don&rsquo;t know all the history, but I&rsquo;m pretty sure this is a port of powerlevel10k. romkatv/zsh4humans: A turnkey configuration for Zsh I don&rsquo;t want zsh users to feel left out. Here&rsquo;s a turnkey configuration for Zsh that includes great plugins and the same powerlevel10k prompt that Tide for Fish pulls from. Installed zsh4humans on top of oh-my-zsh without any issue, in case you&rsquo;re wondering. Descript - All-in-one audio/video editing, as easy as a doc. I&rsquo;ve mentioned Descript a bunch of times, but I&rsquo;m adding it to Web Excursions because they&rsquo;ve added so many amazing features since the last time I linked it that I really&hellip;",
		"keywords": ["command","interface","prompt","shell","another","backblaze","check","descript","excursions","great","ilancosman","installed","markdown","short","terminal","toolkit","acomagu","added","adding","affordably","again","amazing","amount","async","asynchronous","audio","automatically","autopair","awesome","backs","because","boost","braces","brought","bunch","check","cleanly","closing","cloud","command","commands","components","compressor","computer","configuration","configure","context","convoluted","custom","deletes","description","developing","display","displays","edited","editing","editors","elements","empty","entire","everything","excellent","excursions","execution","extra","favorite","features","fiddle","found","generates","gives","great","hellip","history","humans","improve","includes","individual","intelligently","items","itself","jorgebucaran","learned","level","limiter","linked","makes","matching","media","mentioned","multiple","niceties","package","pairing","pairs","partnership","piotrmurach","pisces","plugin","plugins","podcaster","powerlevel","project","prompt","pulls","quotes","reactivity","reliably","rendering","right","romkatv","rsquo","screencaster","second","securely","setup","shell","shenanigans","since","single","sleek","spending","status","suite","switch","switching","think","times","today","toolkit","tools","transcription","turnkey","ultimate","updates","useful","users","using","utilities","video","wizardry","wondering","youtuber"]
	},{
		"title": "Communicate consistently with TextExpander",
		"url": "/2021/12/16/communicate-consistently-with-textexpander/",
		"tags": ["sponsor","textexpander"],
		"date": "Dec 16<span>th</span>, 2021",
		"ts": "1639663200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Do you ever type the same thing over and over and over again? Whether it&rsquo;s customer support answers, sales emails, or document edits, typing things repetitively or using copy and paste can be a burden. That&rsquo;s where TextExpander comes in. With TextExpander, you and your team can: The way we work is changing rapidly. Make work happen wherever you are by saying more in less time and with less effort using TextExpander. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["technology","textexpander","typing","brettterpstra","textexpander","thanks","visit","accurate","again","answers","burden","changing","comes","consistent","customer","document","edits","effort","emails","first","happen","learn","message","paste","productive","rapidly","readers","repetitively","rsquo","sales","saying","sponsoring","support","textexpander","typing","using","where","wherever"]
	},{
		"title": "Git better with fzf and Fish",
		"url": "/2021/11/25/git-better-with-fzf-and-fish/",
		"tags": ["terminal"],
		"date": "Nov 25<span>th</span>, 2021",
		"ts": "1637875560",
		"summary": "You&rsquo;ve probably heard me mention fzf before. It&rsquo;s an amazing command line tool created by Junegunn Choi. It takes a list of data and turns it into a command line menu with fuzzy searching, multi-select, and can even preview each item in whatever way is appropriate. I&rsquo;ve been using it in all kinds of scripts &mdash; where I used to have rudimentary numbered menus, I now have much friendlier and more flexible terminal navigation. fzf is available via Homebrew, just run . See for very good documentation. One great example of how fzf can change your command line life is the set of keybindings for git shared by the author. With these set up you can, for example, start typing a git command that requires a commit hash, hit Ctrl-G Ctrl-H, and get a searchable menu of all your commits. Select the one you&rsquo;re looking for and the menu closes and the commit&rsquo;s hash is inserted in your command. It&rsquo;s crazy handy. If you&rsquo;re running Bash or Zsh, Junegunn already has you taken care of. Just add the code in this gist to the appropriate startup files and you&rsquo;ll be flying through git commands in no time. You can stop reading here, really. The rest of this is for the Fish weirdos. I run Fish, and the existing solutions needed a little hacking to do what I wanted. Alexandru Rosianu created a gist that works pretty well. I made some modifications for my own needs and it&rsquo;s working great. If you want to try it out, you can save the code below to a file and source it from , then call the function to bind the keys. Something like: Once it&rsquo;s installed, open up a new session to load the init files, to a git repository, and type Ctrl-G Ctrl-H. You&rsquo;ll see a list of your commits with previews on the right. Use the arrows or type to search the text and select the commit you want, and when you hit return its hash will be inserted at the prompt. Ctrl-G Ctrl-F Shows modified and unstaged files, with their diff in the preview, selection inserts the filename Ctrl-G Ctrl-B Shows a menu of local and remote branches, selection inserts branch name Ctrl-G Ctrl-T Shows all tags, preview shows tag commit message, selection inserts tag name Ctrl-G Ctrl-H Shows all commits on current branch, preview shows commit&rsquo;s message and diff, selection inserts hash Ctrl-G Ctrl-R Shows remotes and their url, selection inserts remote name Hit Ctrl-P in any menu to turn off the preview. Have fun",
		"keywords": ["command","alexandru","homebrew","junegunn","rosianu","shows","amazing","arrows","author","available","before","below","bindings","branch","branches","change","closes","command","commands","commit","commits","crazy","created","example","filename","files","flexible","flying","friendlier","function","fuzzy","great","hacking","handy","heard","inserted","inserts","installed","keybindings","kinds","little","local","looking","mdash","mention","menus","message","modifications","modified","multi","navigation","needed","needs","numbered","preview","previews","prompt","reading","remote","remotes","repository","requires","return","right","rsquo","rudimentary","running","scripts","search","searchable","searching","selection","session","shared","shows","solutions","source","startup","taken","takes","terminal","through","turns","typing","unstaged","using","wanted","weirdos","whatever","where","working","works"]
	},{
		"title": "Bunch 1.4.6",
		"url": "/2021/11/23/bunch-1-dot-4-6/",
		"tags": ["bunch"],
		"date": "Nov 23<span>rd</span>, 2021",
		"ts": "1637677860",
		"summary": "Bunch 1.4.6 is out now for automatic update (Bunch->Check for Updates) and for download . It&rsquo;s been in beta for a couple months, and I&rsquo;ve added some cool new stuff in the process. See the changelog for a full list of new features, fixes, and improvements. First, I got a bunch of requests for a feature that would quit all open apps, so I&rsquo;ve added a command. It will quit all apps that appear in the Dock, leaving menu bar apps alone. You can add exceptions by running . (It also accepts a variety of syntax such as and , just for fun.) I got a couple of special requests for new frontmatter keys. You can now use to add a prefix to a Bunch&rsquo;s menu item title, which is handy because you can apply it to multiple Bunches using folder.frontmatter or @tag.frontmatter. Tag some Bunches with and then create in your Bunch folder containing a and all of your work Bunches will get a briefcase icon before their title in the menu. There&rsquo;s also an key (with counterpart) that will hide a specific Bunch/folder/tag from the menu based on logic. It can be a UUID string or any logic condition. By the way, all if/unless keys now accept any logic conditions Bunch can handle. There&rsquo;s also a couple of new logic conditions: and , which replaces the old trigger file functionality. Now you can perform actions based on whether any file exists, and if it&rsquo;s a text file, you can test whether it contains a string. Get the latest version on the downloads page. Enjoy",
		"keywords": ["automation","macos","productivity","bunch","bunches","check","enjoy","first","updates","accept","accepts","actions","added","alone","appear","apply","automatic","based","because","before","briefcase","bunch","changelog","command","conditions","containing","contains","counterpart","couple","create","download","downloads","exceptions","exists","feature","features","fixes","folder","frontmatter","functionality","handle","handy","improvements","latest","leaving","logic","multiple","prefix","process","replaces","requests","rsquo","running","special","specific","string","stuff","syntax","title","trigger","using","variety","version"]
	},{
		"title": "Doing 2.0",
		"url": "/2021/11/20/doing-2-dot-0/",
		"tags": ["doing","logging","plugin","productivity","reading","scripting","search","tagging","taskpaper","terminal","tools","writing"],
		"date": "Nov 20<span>th</span>, 2021",
		"ts": "1637427000",
		"summary": "I&rsquo;ve pushed Doing 2.0 out to the world. It&rsquo;s the result of a year or so of tinkering on and off, with some extra love recently, and it comprises enough refactoring, fixes, and improvements to truly warrant the major version bump. I&rsquo;ve had a few manic episodes in recent months that have found me obsessively coding on personal projects for hours at a time. I&rsquo;ve put out new releases of Marked 2 and Bunch , updated multiple open source projects, and spent a ton of time on projects at the day job. So much so that it&rsquo;s been&hellip; (glances at homepage)&hellip; a month since I blogged. I work on myriad projects, but Doing is always the common denominator. No matter what project I find myself hacking away at, I&rsquo;m constantly tracking my time and progress using Doing. (I even use git commit hooks to add entries to my log whenever I make a commit in one of my projects.) And when I&rsquo;m in \"obsessive coding mode,\" every time I use Doing, I think of new things I wish it could do. (Things I wish Doing did? Was doing?) Anyway, a thousand side-tracks to work on Doing have culminated in the first major version bump since its initial release. To catch you up, Doing is my command line tool for tracking what I&rsquo;m spending my time on. It has tools for adding entries, tagging them, searching them, tracking time, and outputting reports in various formats. It stores all of this in a plain text file using (slightly proprietary) TaskPaper formatting, easy to port and parse elsewhere. The project page on this site used to have documentation for all of Doing&rsquo;s commands and options, but trying to continue fitting it all on one page got very unruly. The documentation has been reorganized and moved to the Doing wiki on GitHub. (If you just want an overview of all possible commands, I did a little RDOC->Markdown conversion to generate an All Commands wiki page.) There&rsquo;s so much new stuff that I can&rsquo;t fit it all into an announcement post like this. Read on for the highlights, though. If you&rsquo;d rather play than read, just run to get the latest version (2.0.11 as of this writing). Then run to see all available commands, and run to get info on each one. I&rsquo;ve tried to keep it as self-documenting as possible. First off, there are some template improvements. In Doing you can define templates in the configuration to change how the output of various commands appears in Terminal, and 2.0 adds features and&hellip;",
		"keywords": ["languages","scripting","shell","shells","anyway","bettertouchtool","bunch","calendar","commands","creating","doing","export","first","github","hooks","import","improvements","interactivity","markdown","marked","output","plugins","stderr","sometimes","speaking","stuff","taskpaper","templates","terminal","timing","tracking","using","ability","accepts","access","accessible","actions","actively","activities","added","adding","again","ahead","allow","allowing","allows","almost","annotated","announcement","annoying","anyone","anywhere","appears","architecture","archive","assigned","autocomplete","available","avoid","based","because","blogged","brings","build","building","bunch","cancel","capabilities","catch","centralizes","certain","change","changes","check","coding","colorized","command","commands","commit","common","completed","completing","completions","comprises","config","configuration","configure","constantly","contained","content","continue","contributed","conversion","converted","create","created","culminated","custom","dated","dates","decided","deeper","default","define","delivered","denominator","designed","details","different","directly","directories","display","displays","documented","documenting","doing","drill","duplicating","easier","easily","editor","elapsed","elsewhere","enabled","enough","entered","entire","entirely","entries","entry","episodes","events","export","exporters","extended","external","extra","features","feedback","feeding","files","filtered","filters","finished","finishing","first","fitting","fixes","flags","focus","forgot","formats","formatted","formatting","found","fresh","fudge","fuzzy","generated","generates","glances","going","great","hacking","handy","haven","having","hellip","highlights","historical","homepage","hooks","hours","import","importers","improved","improvement","improvements","improving","included","including","initial","input","install","installed","interactive","interest","itself","justice","keyboard","kinds","latest","levels","little","local","locates","logger","looking","lsquo","maintain","major","making","manic","matching"]
	},{
		"title": "Introducing TextExpander 7.0",
		"url": "/2021/11/18/introducing-textexpander-7-dot-0/",
		"tags": ["sponsor","textexpander"],
		"date": "Nov 18<span>th</span>, 2021",
		"ts": "1637278560",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! I hate posting two sponsor posts in a row with nothing between, but I&rsquo;ve been working hard on a few projects and haven&rsquo;t had time to write any of them up since the last sponsorship. Fun updates coming soon! In the meantime, here&rsquo;s a word from my favorite sponsor with a fresh new release to share. Introducing TextExpander 7.0 - now available for download. The latest update brings a fresh, new experience that makes TextExpander easier to navigate, all wrapped up in a whole new streamlined look and feel. In this version, you’ll discover a new interface that’s easier to use, more responsive, and offers functional improvements to make TextExpander a more interactive and engaging product. TextExpander 7.0 includes enhanced snippet suggestions, improved conflict management, better accessibility and more. Check out what’s new in TextExpander 7.0 by getting TextExpander today - BrettTerpstra.com readers get 20% off their first year",
		"keywords": ["productivity","smile","snippets","brettterpstra","check","introducing","textexpander","thanks","accessibility","available","between","brettterpstra","brings","campaign","class","coming","conflict","discover","download","easier","engaging","enhanced","experience","favorite","first","fresh","functional","getting","haven","height","https","image","improved","improvements","includes","interactive","interface","latest","loading","makes","management","meantime","media","medium","navigate","nofollow","noscript","nothing","offers","original","picture","podcast","posting","posts","product","projects","readers","release","responsive","rsquo","share","since","snippet","source","sponsor","sponsoring","sponsorship","srcset","streamlined","suggestions","terpstra","textexpander","title","today","updates","uploads","version","whole","width","working","wrapped","write"]
	},{
		"title": "Less effort, more results with TextExpander [Sponsor]",
		"url": "/2021/10/21/less-effort-more-results-with-textexpander/",
		"tags": ["sponsor","textexpander"],
		"date": "Oct 21<span>st</span>, 2021",
		"ts": "1634821200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Do you ever type the same thing over and over and over again? Whether it&rsquo;s customer support answers, sales emails, or document edits, typing things repetitively (or even repeatedly using copy and paste) can be a time-consuming burden. That&rsquo;s where TextExpander comes in. With TextExpander, you and your team can: The way we work is changing rapidly. Make work happen wherever you are by saying more in less time and with less effort using TextExpander. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["email","smile","textexpander","typing","brettterpstra","textexpander","thanks","visit","abbreviations","accurate","again","answers","burden","changing","comes","consistent","consuming","customer","document","edits","effort","emails","first","happen","larger","learn","messaging","paste","rapidly","readers","repeatedly","repetitively","rsquo","sales","saying","short","sponsoring","support","textexpander","typing","using","where","wherever"]
	},{
		"title": "Revisiting appinfo: Mac app details from the command line",
		"url": "/2021/10/20/revisiting-appinfo-mac-app-details-from-the-command-line/",
		"tags": ["scripting","support","terminal"],
		"date": "Oct 20<span>th</span>, 2021",
		"ts": "1634757120",
		"summary": "A few years back I wrote a little script called to make getting info about an installed application a little simpler (and prettier). It&rsquo;s served me well over the years. I added a couple of things to it today and figured I&rsquo;d mention it again. This script is a lot like doing a Get Info on an app in Finder, just without having to open your Applications folder, or having to expand hidden sections in the info window. Just type to get instant, pertinent info. One common application is getting the bundle identifier for an app, for use in scripting (or with Bunch). First, I added an architecture check. Back in 2017 only Intel binaries mattered, so that wasn&rsquo;t included. Now it will tell you if the app is compiled for Intel, Apple Silicon, or both. I also added handling for info returned by as arrays, so keys like \"Alternate Names\" and Architecture can be output in a friendly way. This means you can also add new keys to the script&rsquo;s config section with abandon. Just for fun, I added support for chafa (in addition to the existing support for ). If you have one of these installed and your terminal supports it, the app icon will be included in the info output. That&rsquo;s it. An update simple simple enough that I actually have time to write about. Unlike what&rsquo;s happening with doing right now&hellip; once I finish the current version of that, I&rsquo;m going to need a couple hours to detail what I&rsquo;ve done to it lately. Check out the script in this gist . Just save it in your path as and make it executable with . It takes the name of the app you want info for (must be installed on your machine): e.g. ",
		"keywords": ["cross","iterm","platform","software","alternate","apple","applications","architecture","bunch","check","finder","first","intel","names","silicon","unlike","abandon","added","again","architecture","arrays","binaries","bundle","called","chafa","check","common","compiled","config","couple","detail","doing","enough","executable","expand","figured","finish","folder","friendly","getting","going","handling","happening","having","hellip","hidden","hours","identifier","included","installed","instant","little","machine","mattered","mention","output","pertinent","prettier","returned","right","rsquo","script","scripting","section","sections","served","simple","simpler","support","supports","takes","terminal","today","version","window","write","wrote","years"]
	},{
		"title": "Web Excursions for October 19, 2021",
		"url": "/2021/10/19/web-excursions-for-october-19-2021/",
		"tags": ["bookmarks","tools"],
		"date": "Oct 19<span>th</span>, 2021",
		"ts": "1634683620",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. BFG Repo-Cleaner A simpler, faster alternative to git-filter-branch for deleting big files and removing passwords from Git history. I shrunk a 2GB repo to 800 MB in under 10 minutes with this tool. Handy. kskashyap94/zoom-auto-close Browser extension to auto close tabs left open by zoom meeting application. Works as advertised. ‎Workona for iPad Workona is the browser extension (Chrome, Firefox, Edge) I wouldn&rsquo;t want to be without (I&rsquo;m still hoping for a Safari version). They now have an iPad app that lets you access all of your workspaces and open tabs from the iPad, and you can add a tab or resource to a workspace from the iOS share button. Very handy. Hope it&rsquo;s eventually available for iPhone as well&hellip; Between adding this bookmark to the excursion and actually publishing it, Workona has finally started charging for their more \"premium\" features. Insta-subscribe for me, and hopefully indicates some longevity. armandino/TxtStyle There are a bunch of tools for colorizing command line output/log files. This one took the least amount of my day to get it working perfectly with custom log output using a few regular expressions in an easy-to-grok settings file. A++. Acquiring A Product: Our Kaleidoscope Journey I&rsquo;m super excited about the future of what I consider to be the hands-down best Mac diff tool. Newly under the stewardship of some excellent indie mac devs, version 3 is a massive improvement that represents a ton of hard work. Here&rsquo;s some background on their acquisition of this great app, and a bit of its storied history",
		"keywords": ["indie","kaleidoscope","acquiring","between","brett","browser","chrome","cleanmymac","cleaner","firefox","handy","insta","journey","kaleidoscope","newly","product","safari","txtstyle","workona","works","absolute","access","acquiring","acquisition","adding","advertised","amount","apple","armandino","available","background","bookmark","border","branch","brettterpstra","brought","browser","bunch","button","charging","class","cleaner","close","colorizing","command","consider","custom","deleting","display","eventually","excellent","excited","excursion","excursions","expressions","extension","faster","features","files","filter","finally","github","great","hands","handy","height","hellip","hidden","history","holding","hopefully","hoping","https","iphone","image","impactradius","improvement","indicates","indie","kaleidoscope","kskashyap","ldquo","loading","longevity","macpaw","massive","media","meeting","minutes","noscript","organizer","original","output","partnership","passwords","perfectly","picture","position","premium","product","project","publishing","rdquo","regular","removing","represents","resource","rsquo","rtyley","settings","share","shrunk","simpler","source","speed","srcset","started","stewardship","storied","style","subscribe","super","title","tools","under","uploads","using","version","visibility","width","working","workona","workspace","workspaces","wouldn"]
	},{
		"title": "See what you're \"doing\" in the iTerm status bar",
		"url": "/2021/10/15/see-what-youre-doing-in-the-iterm-status-bar/",
		"tags": ["doing","prompt","scripting","shell","status"],
		"date": "Oct 15<span>th</span>, 2021",
		"ts": "1634316420",
		"summary": "First of all, there have been some major updates to Doing over the last few weeks (changelog), so be sure to update to the latest version (). If you don&rsquo;t know what Doing is and started reading this post anyway, go check it out first. I&rsquo;ve been playing with incorporating Doing into my iTerm status bar. It&rsquo;s already in my Touch Bar, but having it right below my prompt in my terminal seemed super handy. The method I&rsquo;m using might seem a bit convoluted, but it&rsquo;s working great. This whole thing is based around iTerm&rsquo;s user variables and interpolated strings. Once set, the variable can be used in status bars, window titles, session badges, etc. You just have to keep it updated, so some hooks are required. Here&rsquo;s how I got it working. First we need to get the text to display. I set up a view for Doing to display just a single entry, title only, no color. It should be the most recent entry not marked @done. I&rsquo;m using the same view I set up for my Touch Bar with BetterTouchTool: Rather than repeatedly running this command I&rsquo;m storing the result in a cache file where I can just to retrieve it. It only needs to update when there&rsquo;s a change to my doing file. In recent version of there&rsquo;s a key you can set in your config to run a script after doing performs any operations that change your doing file. I already had this set up to refresh my Touch Bar, so I just added to the existing script. To run a custom script (in this case ), just make sure it&rsquo;s executable () and add a line to : In , I just cache the results and use iTerm escape codes to set the user variable. The function is clipped from the various iTerm shell integration functions, combined for easy access and accessibility without a login shell. Here&rsquo;s the part of the script minus the other non-iTerm stuff I run: So when doing has made a change and runs the script, it first outputs the result to a hidden cache file. If there&rsquo;s no current unfinished entry, this will be blank. Then the script sets the initial value of the variable. The setting of the variable is actually optional, as we&rsquo;re going to be doing that again every time the prompt is displayed. If you wanted to pare it down, only the line is really needed. Now we need a way to refresh the variable. I chose to do it with a prompt command, running every time the prompt displays. Since all it&rsquo;s going to do is a tiny text file, there&rsquo;s no&hellip;",
		"keywords": ["iterm","languages","programming","script","shell","action","bettertouchtool","click","configure","coprocess","custom","doing","entry","first","getting","install","integration","keeping","lastly","preferences","profiles","rather","session","setting","shell","since","status","touch","updating","variable","access","accessibility","action","added","again","allows","anyway","assume","background","badges","based","below","blank","bottom","cache","change","changelog","check","chose","click","clicking","clipped","codes","color","command","completes","config","convoluted","created","custom","dates","default","display","displayed","displays","doable","doesn","doing","doingrc","enough","entries","entry","error","escape","example","examples","executable","finish","first","function","functions","going","great","handy","haven","having","hidden","hooks","iterm","initial","integration","interpolated","latest","leave","login","major","marked","meanwhile","method","minus","needed","needs","offer","older","operations","optional","output","outputs","performance","performs","playing","polling","populated","profile","prompt","proper","reading","recent","refresh","repeatedly","required","results","retrieve","right","rsquo","running","script","seemed","seems","session","setting","shell","single","solution","started","status","storing","string","strings","stuff","super","suppose","switch","tasks","terminal","title","titles","tools","unfinished","updated","updates","updating","using","value","variable","variables","various","version","wanted","warning","weeks","where","whole","width","window","working"]
	},{
		"title": "Just your average project update and wellness check-in",
		"url": "/2021/09/24/just-your-average-project-update-and-wellness-check-in/",
		"tags": ["bunch","howzit","personal","quickquestion","tools","writing"],
		"date": "Sep 24<span>th</span>, 2021",
		"ts": "1632484800",
		"summary": "I&rsquo;ve done a lot of coding in the last two weeks. Playing with projects, adding features, fixing bugs, writing tests. I&rsquo;ve done a lot of learning Vim (I&rsquo;m writing this post in Vim, I think I like it). Some day I&rsquo;ll feel like I&rsquo;ve learned something in Vim that would actually surprise anybody and I&rsquo;ll write it up. For now, I&rsquo;m just playing catch up. We&rsquo;ll do this Overtired style, mental health corner at the top of the show&hellip; I had a few manic days last week and am riding out this lull before depression hits. I&rsquo;ve had depression that wasn&rsquo;t preceded by mania, but I&rsquo;ve never had mania that wasn&rsquo;t followed by depression. Oh, in case you missed it, I&rsquo;m bipolar. And I&rsquo;m trying to talk about it more because, well, it&rsquo;s scary to talk about. I&rsquo;m also ADHD, which can be a horrible combination. One symptom of ADHD is hyperfocus, where you can focus on one thing to the exclusion of all others. The problem is, that one thing is almost never the thing that most needs focus at the time. And when I&rsquo;m manic, hyperfocus goes into overdrive and I have even less control than usual of where it goes. I actually managed to focus pretty well on day job stuff. Set some impressive precedents that will definitely bite me when the inevitable downturn happens. Hopefully it will be manageable. I gotta get stabled out. In the meantime, and in addition to doing a great job at work, I updated a bunch of projects. Here&rsquo;s a rundown. QuickQuestion &mdash; my little tool for building and querying a plain text database &mdash; got a nice update. I won&rsquo;t bore you with the details, it just does what it&rsquo;s supposed to do better now. Better searching, only show the best (and hopefully correct) result, colorized output, and integration if it&rsquo;s available. (And it should be available. Everyone should have . If you don&rsquo;t, go right now.) So now you can type a question and instead of just getting the first result, you get a fuzzy-searchable menu of all matches, allowing you to further narrow the results to get exactly the answer you were looking for. Howzit &mdash; my tool for tracking, referencing, and executing build notes for coding projects &mdash; also got a little love. The last time I mentioned it I had added templates which allowed you to import of common tasks between projects of the same type. I added some new metadata keys for use in the templates, and&hellip;",
		"keywords": ["deficit","disorder","hyperactivity","bunch","everyone","finder","fortunately","frivolous","hopefully","howzit","markdown","marked","overtired","playing","quickquestion","silly","spotlight","templates","wellness","added","adding","aliases","allowed","allowing","almost","answer","anybody","applied","assigned","autojump","available","because","before","between","bipolar","bookmark","bugfix","build","building","bunch","called","catch","check","coding","colorized","combination","command","common","companion","concept","contained","contains","content","control","corner","create","creating","database","defined","definitely","depression","details","different","doing","downturn","editing","exclusion","execute","executing","extended","familiar","features","finding","first","fixing","focus","followed","function","functions","fuzzy","getting","glance","gotta","great","handy","happens","health","hellip","hopefully","horrible","hyperfocus","ideas","ignore","import","impressive","incorporate","inevitable","integration","issues","jumping","jumps","learned","learning","little","looking","manageable","managed","mania","manic","match","matched","matches","maybe","mdash","meantime","mental","mentioned","metadata","missed","names","narrow","needs","notes","obvious","occasionally","opening","others","output","outputs","overdrive","patterns","playing","preceded","precedents","problem","projects","pulls","querying","realized","referencing","release","repositories","repository","results","rewriting","riding","right","rsquo","rundown","running","scary","search","searchable","searching","shortcut","similar","somewhere","specify","spent","stabled","string","stuff","style","subdirectories","supposed","surprise","surrounded","symptom","tasks","template","templates","tests","think","tools","tracking","trying","updated","useful","utility","vanity","variable","variables","weeks","whatever","where","works","wrapup","write","writing"]
	},{
		"title": "TextExpander - productive AND fun [Sponsor]",
		"url": "/2021/09/16/textexpander-productive-and-fun-sponsor/",
		"tags": ["email","shortcuts","snippet","sponsor","textexpander"],
		"date": "Sep 16<span>th</span>, 2021",
		"ts": "1631797200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! They sponsor me every month, and they&rsquo;re one of my favorite sponsors1, but they&rsquo;re behind on getting me copy this week. It&rsquo;s totally ok, I have stuff I want to tell you anyway. I recently added a MacBook Pro back to my computing lineup. I kind of hate starting with a blank machine. I go to hit shortcuts and trigger scripts and snippets and nothing happens. So begins the days-long process of setting up my favorite utilities and system hacks. There are two things that come before everything else: 1Password, and TextExpander. I need my passwords and license codes, obviously, but I need my snippets just as much. There are so many things that I type with TextExpander that I wouldn&rsquo;t have a clue how to type manually. The front matter for this post, for example, is a TextExpander snippet where I just fill in the title and tags and it generates a perfect block of YAML for me. My email signatures are all snippets. When I finish an email, I type one of my sign-off shortcuts (which vary based on my relationship with the recipient) followed by ⇧⌘D to send the email. When I forget that TextExpander isn&rsquo;t loaded, I shoot off emails with bizarre character combinations instead of any kind of signature. It&rsquo;s not a terrible thing to do, but it makes me realize how ingrained in my habits my snippets are. Productivity is great, but there&rsquo;s room for fun, too. I recently updated and published my Cursed snippet group. It lets you generate shortcuts using swear words as triggers, outputting random \"censored\" versions, e.g. \"Holy s#@%.\" It&rsquo;s not terribly useful, but it&rsquo;s a great example of the power of shell scripting in TextExpander snippets. I&rsquo;ll be publishing more of my favorite snippet groups as I have time, so keep an eye out. If you&rsquo;re not already a TextExpander user, this is a great time to give it a try. In less than a day you&rsquo;ll be wondering how you survived without it. BrettTerpstra.com readers get 20% off their first year by visiting this link. I swear you&rsquo;ll thank me. Ok, favorite sponsor, but I didn&rsquo;t want to hurt any other sponsor&rsquo;s feelings.&nbsp;↩",
		"keywords": ["smile","snippet","textexpander","brettterpstra","cursed","macbook","password","productivity","textexpander","thanks","added","again","anyway","backlink","based","before","begins","behind","bizarre","blank","block","brettterpstra","censored","character","class","codes","combinations","computing","eadeda","email","emails","endnotes","everything","example","favorite","feelings","finish","first","fnref","followed","footnote","footnotes","forget","front","generates","getting","great","group","groups","habits","hacks","happens","height","https","image","ingrained","ldquo","license","lineup","loaded","loading","machine","makes","manually","media","nofollow","noscript","noteref","nothing","original","outputting","passwords","picture","podcast","process","public","published","publishing","random","rdquo","readers","realize","recently","recipient","relationship","reversefootnote","rsquo","scripting","scripts","setting","shell","shoot","shortcuts","signature","signatures","snippet","snippets","source","sponsor","sponsoring","sponsors","srcset","starting","stuff","survived","swear","system","terrible","terribly","textexpander","thank","title","totally","trigger","triggers","updated","uploads","useful","using","utilities","versions","visiting","where","width","wondering","words","wouldn"]
	},{
		"title": "A Keyboard Maestro macro for cross-linking Markdown docs",
		"url": "/2021/09/01/keyboard-maestro-markdown-linking/",
		"tags": ["bunch","jekyll","keyboard","keyboardmaestro","markdown","search"],
		"date": "Sep 1<span>st</span>, 2021",
		"ts": "1630501200",
		"summary": "Ok, this is one of my other projects from last weekend. In its present state it has a more limited scope of appeal than my Howzit updates, but the idea could easily1 be modified to work with any project that consists of a bunch of Markdown documents. I designed this for use when working on my Jekyll-based documentation sites. Jekyll actually isn&rsquo;t the important part, it just requires the files to have YAML headers with a title key, and any manually-specified header IDs to be in Kramdown&rsquo;s format: If you were to change the handling of both of those requirements, any folder containing a bunch of Markdown files would work. The rest of the macro is all based on easily-configured templates. Anyway, what it does is create a shortcut () that, when typed, offers a spotlight-esque search through all of the other documents in the project (and the headlined sections they comprise), and when you choose one, it inserts a templated link to it relative to the project root, including a to link a specific headline. The first time you run it, it will ask for your root directory and link template. The directory is a POSIX path, e.g. , and the link template allows placeholders in the format . Available placeholders are: : Full path from the DocsDir root (e.g. \"/subdir/file\") : Directory portion of path (e.g. \"/subdir\") : Filename portion of path (e.g. \"/file\") : Headline ID, empty if none (e.g. \"#fragment\") All extensions are removed from the paths, and all placeholders except for and have leading slashes ( gets a leading ). So my template for the Bunch docs is: To change configuration later, type (with backslashes) and you&rsquo;ll be able to enter a new directory and optionally change the template. Now, just type in your Markdown document, type a few characters of the page you want to link to, hit return, and you have a correct link to the topic you wanted to reference. That&rsquo;s it. It&rsquo;s pretty simple. It actually started off as a TextExpander snippet, but that would take a search string and insert the first matching document. The matching was a little more flexible, but I really liked Keyboard Maestro&rsquo;s \"Prompt with List\" interface and the ability to refine a search on the fly. You have to put a space between search terms to represent path breaks, e.g. to match \"docs/bunch-files/commands/awake\" you would need a space where the slash goes: \"comm awa\" would find it. There&rsquo;s also a version included that works on&hellip;",
		"keywords": ["keyboard","macro","maestro","writing","anyway","available","bunch","changelog","directory","docsdir","document","donate","download","filename","headline","howzit","jekyll","keyboard","kramdown","maestro","markdown","markdowndocumentsearch","posix","prompt","published","search","sites","tuvbv&#39;","textexpander","title","updated","users","ability","allows","animated","appeal","awake","background","backlink","backslashes","based","between","breaks","brettterpstra","bunch","caption","change","changelog","characters","choose","class","collections","commands","configuration","configured","consists","containing","cover","create","cross","defaults","description","designed","directory","dlbox","document","documents","donate","download","downloads","easily","empty","endnotes","enter","esque","except","extensions","fathom","figure","files","first","flexible","fnref","folder","footnote","footnotes","format","fragment","frame","gradient","great","handling","header","headers","headline","headlined","height","hellip","highlight","highlighter","https","important","included","including","information","initial","inserts","interface","keyboard","keyboardmaestroicon","language","later","ldquo","leading","liked","limited","linear","linking","little","macro","macros","maestro","manually","markdown","markdowndocsearch","match","matching","modified","mostly","noteref","offers","onclick","optionally","pages","paths","placeholders","plaintext","portion","project","projects","published","rdquo","refine","regex","relative","removed","repeat","requires","return","reversefootnote","rouge","rsquo","scope","search","sections","selected","shortcut","simple","sites","slash","slashes","snippet","source","space","specific","spotlight","started","string","style","subdir","tabindex","template","templated","templates","terms","through","title","topic","trackgoal","triggered","typed","updated","updates","uploads","using","version","wanted","weekend","where","width","working","works"]
	},{
		"title": "Howzit gets templates",
		"url": "/2021/08/31/howzit-gets-templates/",
		"tags": ["howzit","markdown","scripting"],
		"date": "Aug 31<span>st</span>, 2021",
		"ts": "1630414800",
		"summary": "I had a bit of a manic coding week this last week. Which probably means I&rsquo;m headed for some depression soon, so I wanted to write about at least one of the things I&rsquo;ve worked on recently before I lose motivation. So let&rsquo;s start with Howzit, my little CLI for tracking all of the build settings and other notes for your coding projects. I added the ability to run tasks from within a notes file a while back, and I use it a lot. I quickly found that there were some tasks that were common to most projects of the same type, be it ruby gems, Xcode projects, or just Markdown repositories. Projects within a type tend to use some common commands and scripts with only the target paths or build flags changing (if anything does). So to make it easy to replicate tasks between build files, I added \"templates\" to Howzit. I wrote it up for the docs, so I&rsquo;ll just give you a quick description and then point you there. All you do is create a Markdown file in and, just like a Howzit file, add level 2 or higher headers for each topic/task followed by the notes and directives. You can use MultiMarkdown-style placeholders for variables, e.g. inside the notes. The name of the file is the key with which you&rsquo;ll reference it in your build notes. Then, in in some Markdown-based project, you would just add MMD-style metadata: becomes a variable I can reference in my template, which in this case includes a task, and tells it which directories to find Markdown files in. Variables can even have default values after a colon, e.g. . If you get into the template thing and have a bunch, it&rsquo;ll be easy to forget what titles you gave them all and what tasks they contain, so I added a flag that will show you all of your installed templates and what topics will be added when you include them. Just run to get the list. Be sure to update to the latest version of the script to get all the new goodies. Someday I&rsquo;ll probably package it as a gem and make updating easy, but for now you need to re-download the script and overwrite your current version. Or you can do what I do and clone the repository from GitHub, then symlink the file into a directory in your path. Then you can just do a when you want to get the latest version&hellip; Anyway, that was my Sunday morning project. If you&rsquo;ve found howzit useful before, I hope this adds some extra usability for you. Oh yeah, and a week or two ago I also added \"upstream searches,\" which checks&hellip;",
		"keywords": ["makefile","markdown","notes","anyway","github","howzit","markdown","multimarkdown","projects","someday","sunday","upstream","variables","xcode","ability","added","ancestor","based","becomes","before","between","build","bunch","changing","checks","clone","coding","colon","commands","common","compiles","contain","create","default","definitely","depression","descendant","description","details","directives","directories","directory","doesn","download","enabled","executes","extra","files","flags","folder","followed","forget","format","found","goodies","headed","headers","hellip","higher","howzit","included","includes","inside","installed","latest","level","little","manic","metadata","morning","motivation","multiple","notes","overwrite","package","parent","paths","placeholders","point","predecessor","project","projects","quick","quickly","recently","replicate","repositories","repository","rsquo","script","scripts","searches","settings","solution","specific","stuff","style","subdirectory","superior","support","symlink","target","tasks","tells","template","templates","titles","topic","topics","tracking","travels","universal","updating","upstream","usability","useful","values","variable","variables","version","wanted","while","wildcard","within","worked","write","wrote"]
	},{
		"title": "Web Excursions for August 30, 2021",
		"url": "/2021/08/30/web-excursions-for-august-30-2021/",
		"tags": ["bookmarks","plugin"],
		"date": "Aug 30<span>th</span>, 2021",
		"ts": "1630328400",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. rtomayko/ronn: the opposite of roff It&rsquo;s an old project (last saw an update 8 years ago), but I&rsquo;ve had great results turning (basically) Markdown files into man pages with this tool. Can output to HTML and roff, generate a TOC, and easily generate a ready file for your command line tool. kotfu/ksc: Generate properly formatted keyboard shortcuts Inspired by my Jekyll plugin for the same purpose, a CLI to generate properly formatted keyboard shortcuts, including a KeyboardMaestro macro. msanders/pam-watchid: PAM plugin module that allows the Apple Watch to be used for authentication A PAM plugin module that allows the Apple Watch to be used for sudo authentication. This particular fork has modifications to make it work with macOS 11 on an M1 Mac. Huemint - AI color palette generator This is an excellent random color palette generator. I promise that if you care about colors at all, you&rsquo;ll have fun playing with it. agarrharr/awesome-macos-screensavers: 🍎 🖥 🎆 A curated list of screensavers for Mac OS X A curated list of screensavers for macOS. Some real gems in here. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["keyboard","macos","maestro","markdown","screensaver","apple","brett","check","huemint","inspired","jekyll","keyboardmaestro","markdown","mindmeister","watch","agarrharr","allows","authentication","awesome","boosting","brainstorming","brettterpstra","brought","class","collaborating","collaborative","color","colors","command","curated","easily","excellent","excursions","files","formatted","generator","github","great","height","highlighter","holding","https","huemint","image","including","keyboard","kotfu","language","loading","macos","macos","macro","mapping","media","mindmeister","modifications","module","msanders","noscript","opposite","original","output","pages","palette","particular","partnership","picture","plaintext","playing","plugin","productivity","project","promise","properly","random","readme","ready","results","rouge","rsquo","rtomayko","screensavers","shortcuts","software","source","srcset","title","turning","uploads","watchid","width","years"]
	},{
		"title": "Custom URLs for your Synology with Namecheap",
		"url": "/2021/08/26/custom-urls-for-your-synology-with-namecheap/",
		"tags": ["hosting","recording","scripting","service","synology"],
		"date": "Aug 26<span>th</span>, 2021",
		"ts": "1629987540",
		"summary": "The Synology DSM has a handy built-in updater for dynamic DNS (DDNS). It makes a lot of sense, given the Synology is always on and connected to the internet, keeping a custom domain pointed to the right IP at all times. Most people who followed this headline already know these definitions, but just to recap: dynamic DNS allows a fully qualified domain name like \"example.com\" to point to an IP address that changes regularly, as most home ISPs do. Unless you&rsquo;re paying for a static IP, your IP is changing now and then, defeating any custom domains you point to it. Synology&rsquo;s DDNS integration comes with presets for quite a few services, but most of the free ones don&rsquo;t allow you to use custom domain names, just subdomains of domains like \"synology.me\" or \"zapto.org\". I wanted to use something short and personalized (because I&rsquo;m lazy and vain, I guess). I already had some unused domains registered with Namecheap, which offers DDNS for your domains, but Synology didn&rsquo;t have a preset for it. In a lot of cases you can use the DSM to create a custom DDNS, using a URL with in it. Namecheap doesn&rsquo;t offer a URL you can curl, though, and using doesn&rsquo;t work with that (I&rsquo;m not sure why). The good news is that it&rsquo;s pretty easy to add your own Namecheap service provider to your Synology. I found a few existing solutions for this but each of them had some failing. This solution is what I distilled from multiple sources, simplified, and currently have working. First, register the domain you want to use with Namecheap and go to the Advanced DNS configuration for the domain. Ensure that there&rsquo;s a an A record for the \"@\" wildcard. If you want to use a subdomain as your dynamic host (e.g. \"home.example.com\"), add a record for it by clicking \"Add New Record\", selecting A Record, and entering the subdomain (just \"home\" in the previous example). The IP address here doesn&rsquo;t matter, the script we&rsquo;ll set up will be updating that. Scroll down to Dynamic DNS, toggle the switch to enable it, and note/copy the password it shows you, we&rsquo;ll use that in step 6. For this next part, you&rsquo;ll need SSH access to your Synology, which you can enable with Control Panel->Terminal & SNMP. As an aside, I highly recommend changing the default SSH port, setting up keys, and disabling password login. Also set your Control Panel->Security setting to the highest level&hellip;",
		"keywords": ["dynamic","namecheap","synology","access","address","advanced","assuming","automatic","certificate","click","control","drive","dynamic","encrypt","especially","external","filestation","first","hostname","namecheap","normal","panel","password","provider","record","scroll","security","service","setup","status","synology","terminal","username","access","account","added","adding","address","admin","allow","allowing","allows","aside","associated","attempts","because","below","block","brute","built","button","certificate","changes","changing","clicking","column","comes","configuration","connected","connections","create","credentials","custom","default","defeating","definitely","definitions","disabling","distilled","doesn","domain","domains","dropdown","dynamic","enter","entering","everything","example","executable","failing","field","followed","force","found","fully","guess","handle","handy","headline","highest","highly","included","including","installed","integration","internet","keeping","level","little","login","makes","multiple","names","needed","offer","offers","packages","password","paste","paying","people","personalized","pinging","point","pointed","ports","preset","presets","propagate","provider","public","qualified","recap","recommend","record","redirection","register","registered","regular","regularly","remember","right","rsquo","scanned","script","selecting","sense","service","services","setting","short","shows","simplified","solution","solutions","sources","static","subdomain","subdomains","switch","synology","times","toggle","under","unused","updater","updating","useful","users","using","wanted","whatever","whole","wildcard","wizard","working","zapto"]
	},{
		"title": "A new Jekyll plugin for handling beta documentation",
		"url": "/2021/08/23/a-new-jekyll-plugin-for-handling-beta-documentation/",
		"tags": ["jekyll","marked","plugin","writing"],
		"date": "Aug 23<span>rd</span>, 2021",
		"ts": "1629723600",
		"summary": "I&rsquo;ve added a new Jekyll plugin to my repository called Availability. It lets you mark sections of documentation based on their availability in different software builds. This post will be short as I&rsquo;ve already documented it pretty well in the README, plus it will likely be of use to literally nobody but me, as it would only be useful to people running Jekyll-based documentation sites about a single Mac app that has a public beta program, which is a pretty limited audience. But it is, in my opinion, an elegant solution to a particular problem, so I thought I&rsquo;d share it anyway. When I add new features to Bunch, the first thing I do after testing is write the documentation. Nothing puts a feature through its paces like trying to write thorough documentation for it. But new features are always released to the beta feed before they make it into the stable feed, and I need to have the documentation of the new features available to beta users, and I don&rsquo;t want to publish a whole subsite with the beta docs. So I add the new feature documentation to the main site with a note that the feature is currently only in the beta version, which works well, but when the features in the beta move to stable, I have to go through and delete all of those beta alerts. At build time, the plugin checks my Sparkle appcast for the latest public and beta build numbers. If the marked feature has a build number less than or equal to the live release, it just gets processed as if the tag wasn&rsquo;t there. If it&rsquo;s greater than the public release and less than or equal to the live beta build, it gets markup to indicate it&rsquo;s in the beta only. If it&rsquo;s higher than the beta build, it gets marked up as an \"Upcoming\" feature, allowing me to document new features before they even make it into the beta without worrying that I&rsquo;ll confusingly publish documentation for features nobody has yet. You can also easily use the plugin to remove unreleased features from the output entirely just by setting the template strings to empty quotes. This allows you to write documentation ahead of time, and have it automatically appear only when the appropriate build is added to the appcast. If you&rsquo;re interested, the code is up on GitHub and you&rsquo;re welcome to customize it and make it work for you",
		"keywords": ["bunch","plugin","availability","bunch","github","jekyll","nothing","problem","readme","sparkle","upcoming","added","ahead","alerts","allowing","allows","anyway","appcast","appear","audience","automatically","availability","available","based","before","build","builds","called","checks","confusingly","customize","different","document","documented","easily","elegant","empty","entirely","feature","features","first","greater","higher","interested","latest","likely","limited","literally","marked","markup","nobody","numbers","output","paces","particular","people","plugin","problem","processed","program","public","publish","quotes","release","released","remove","repository","rsquo","running","sections","setting","share","short","single","sites","software","solution","specific","stable","strings","subsite","template","testing","thorough","thought","through","trying","unreleased","useful","users","version","welcome","whole","works","worrying","write"]
	},{
		"title": "Get it right every time with TextExpander [Sponsor]",
		"url": "/2021/08/12/get-it-right-every-time-with-textexpander-sponsor/",
		"tags": ["sponsor","textexpander"],
		"date": "Aug 12<span>th</span>, 2021",
		"ts": "1628769960",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! If I could only install one utility on a Mac, it would be TextExpander. Get It Right, Every Time. TextExpander makes it easy to give your team the right words for every situation. Whether you need to keep your team happy or delight customers with effective answers, you can rest easy knowing your team has it covered. Now with improved web app security to keep your content protected. Keep your team consistent, accurate, and current Share your text and images with the whole staff to keep them on track. Everyone will share the same message and give the same answers to all customer questions Work faster and smarter Use TextExpander’s powerful shortcuts and abbreviations to streamline and speed up everything you type Create powerful snippets to save you time so that all you type is a short abbreviation, and TextExpander does the rest of the typing for you Keep your whole team communicating efficiently and with consistent language Share your snippets of messaging, signatures, and descriptions with everyone who works on projects with you TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com/podcast to learn more about TextExpander",
		"keywords": ["smile","snippet","textexpander","&#39;nofollow&#39;","brettterpstra","chrome","create","everyone","right","share","textexpander","thanks","visit","windows","abbreviation","abbreviations","accurate","answers","available","brettterpstra","class","communicating","consistent","content","covered","customer","customers","delight","descriptions","effective","efficiently","everyone","everything","faster","first","happy","highlight","highlighter","https","iphone","images","improved","install","knowing","language","learn","loading","makes","media","message","messaging","nofollow","noscript","original","picture","plaintext","podcast","powerful","projects","protected","questions","readers","right","rouge","security","share","short","shortcuts","signatures","situation","smarter","snippets","source","speed","sponsoring","srcset","staff","streamline","textexpander","title","track","typing","uploads","utility","whole","width","words","works"]
	},{
		"title": "BetterTouchTool Touch Bar followup: Zoom buttons",
		"url": "/2021/07/27/bettertouchtool-touch-bar-followup-zoom-buttons/",
		"tags": ["automation","bettertouchtool","macos","plugin","scripting"],
		"date": "Jul 27<span>th</span>, 2021",
		"ts": "1627388640",
		"summary": "Last week I posted my craziest Mac experiment in a while &mdash; a script that handles adding and updating myriad BetterTouchTool Touch Bar (and menu bar) widgets. A couple of days after I posted it, I ended up adding some widgets for Zoom that may actually be the most useful of the bunch. My day job requires a lot of Zoom meetings. A lot for me, at least, coming from an indie dev world where Zoom meetings were mostly for occasional pandemic gatherings of friends and family. Now I&rsquo;m in Zoom every day, multiple times a day. I wanted easy buttons for controlling mic, camera, and sharing without having to focus the Zoom app. Keyboard shortcuts are ok, but they don&rsquo;t provide visual feedback. So I found a plugin for my Stream Deck that did the trick nicely, letting me control Zoom functions outside the app with indicators for mute, camera, sharing, and even a Leave button for getting out of a meeting in one tap. Having more to do with my Stream Deck than with the plugin, though, I kept getting communication errors that rendered the buttons useless at inopportune times. It always worked perfectly in testing, but then in an actual Zoom meeting I&rsquo;d frequently be met with the yellow triangle that indicates plugin communication failure. So I decided to replicate the plugin in my Touch Bar. Borrowing heavily from the code by Martijn Smit, I created mic, camera, sharing, and leave widgets for BetterTouchTool. These can all be installed and operated by the btt_stats.rb script I posted about last week. And all of the installation and usage information is in the README. The widgets all show current status of their respective feature, toggle its state, and disappear when no meeting is active. You can even set them up to refresh their display within 1 second, instead of the 4-5 seconds the Stream Deck plugin takes to catch up with changes (owing to BetterTouchTool&rsquo;s scriptability, not any shortcoming in the original code). The scripts use Accessibility scripting to click the menu items, so you don&rsquo;t have to assign shortcut keys. That also means that menu titles are hardcoded, and English-specific. However, I added a whole section to the config file where you can enter the menu titles for a different language and get the buttons to work with just a little translation. Anyway, just a brief addendum to the craziness. See the original post for more details, and find the whole shebang on GitHub",
		"keywords": ["bettertouchtool","touch","accessibility","anyway","bettertouchtool","borrowing","english","github","having","however","keyboard","leave","martijn","readme","stream","touch","active","added","addendum","adding","assign","brief","bunch","button","buttons","camera","catch","changes","click","coming","communication","config","control","controlling","couple","craziest","craziness","created","decided","details","different","disappear","display","ended","enter","errors","experiment","family","feature","feedback","focus","found","friends","functions","gatherings","getting","handles","hardcoded","having","heavily","indicates","indicators","indie","information","inopportune","installation","installed","items","language","leave","letting","little","mdash","meeting","meetings","mostly","multiple","myriad","nicely","occasional","operated","original","outside","pandemic","perfectly","plugin","posted","refresh","rendered","replicate","requires","respective","rsquo","script","scriptability","scripting","scripts","second","seconds","section","sharing","shebang","shortcoming","shortcut","shortcuts","specific","stats","status","takes","testing","times","titles","toggle","translation","triangle","trick","updating","usage","useful","useless","visual","wanted","where","while","whole","widgets","within","worked","world","yellow"]
	},{
		"title": "Relying on TextExpander [Sponsor]",
		"url": "/2021/07/22/relying-on-textexpander-sponsor/",
		"tags": ["snippet","sponsor","support","textexpander"],
		"date": "Jul 22<span>nd</span>, 2021",
		"ts": "1626958800",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! These posts usually follow copy provided by the advertiser, but TextExpander is one of my all time favorite sponsors, and this week I wanted to offer a more personal story. First, if you&rsquo;ve followed me for any length of time, you already know that TextExpander is a utility that runs on all of your devices that expands \"snippets\" (text shortcuts) into longer text. Or images. Or even script output. I use it everywhere: signing off emails, doing customer support, including links in Tweets, and yes, writing blog posts. Anywhere I&rsquo;m typing. If I was given a Mac and told I could only choose one third-party utility to run, I would choose TextExpander. I use it so much, in fact, that if it stops working, I&rsquo;m lost. I have snippets I&rsquo;m so used to using that I barely remember what they say. Not only do they save me typing time, they save me brain power &mdash; I never have to think about the right thing to say or how I usually phrase it. And some of my snippets run scripts that perform automation tasks that I&rsquo;ve used for so long that I don&rsquo;t even remember all the steps to perform them manually. A couple of weeks ago a glitch on my system did, in fact, cause TextExpander to stop working. I&rsquo;ll admit to a bit of panic as I contacted customer support. I got a rapid response, a diagnosis of the issue and immediate fix, and was back to happily typing in no time. That&rsquo;s the thing about software you come to depend on: it&rsquo;s only as good as the developer&rsquo;s ability to support it. And TextExpander comes with support you can rely on. If you&rsquo;re not using TextExpander, I strongly recommend checking it out. It&rsquo;s available for Mac, iOS, Windows, and Chrome. And my readers can get 20% off on a subscription: check out TextExpander today. You won&rsquo;t regret it",
		"keywords": ["macos","smile","snippet","textexpander","windows","anywhere","brettterpstra","chrome","first","textexpander","thanks","tweets","windows","ability","admit","advertiser","automation","available","barely","brain","cause","check","checking","choose","comes","contacted","couple","customer","depend","developer","devices","diagnosis","doing","emails","everywhere","expands","favorite","followed","glitch","happily","images","immediate","including","length","links","longer","manually","mdash","offer","output","panic","party","personal","phrase","posts","rapid","readers","recommend","regret","remember","response","right","rsquo","script","scripts","shortcuts","signing","snippets","software","sponsoring","sponsors","steps","stops","story","strongly","subscription","support","system","tasks","think","third","today","typing","using","usually","utility","wanted","weeks","working","writing"]
	},{
		"title": "Let's get crazy with BetterTouchTool and Touch Bar Simulator",
		"url": "/2021/07/21/crazy-bettertouchtool-touch-bar-simulator/",
		"tags": ["automation","bettertouchtool","bunch","doing","gestures","howzit","icons","keyboard","launchbar","macos","network","scripting","shortcuts","status","weather","where"],
		"date": "Jul 21<span>st</span>, 2021",
		"ts": "1626890340",
		"summary": "I&rsquo;ve recently put some1 time into making a Touch Bar \"dashboard\" using BetterTouchTool. I know, the first thing you thought when you read that was \"but Apple is discontinuing the Touch Bar!\" Let me explain. Or try to. I almost didn&rsquo;t write this post because I was worried it would indicate mental instability of some kind2. But how could I call myself a \"Mac Mad Scientist\" if things didn&rsquo;t get a little crazy? We&rsquo;re all mad here, right? So I had a MacBook Pro with a Touch Bar for a couple of years. I immediately loved the idea of the Touch Bar, made it do a few cool things, and generally appreciated the fact that it was there, offering contextually-relevant and visually identifiable \"keys.\" Did I actually use it? Not a lot. I had a cool script that made buttons for tasks that howzit could run in the current directory when I was in the terminal, and I used that quite a bit, but other than that, not really. 90% of the time my MacBook was on a stand next to an external display, being controlled from an external keyboard and trackpad, and the Touch Bar was, at best, inconvenient to reach. I&rsquo;d stretch to it on the occasions I needed to use Touch ID or run a howzit command, but not for any of the other features it offered. So I didn&rsquo;t really miss the Touch Bar when I moved over to an M1 Mac mini. I did, however, miss that integration I mentioned, at least enough that I got curious about Touch Bar simulators I could easily run on my Mac mini. It&rsquo;s not a terribly difficult trick, but there aren&rsquo;t a lot of choices out there. The most developed one seems to be Touch Bar Simulator. This allowed me to have all of my howzit buttons appear when I into a project directory (I modified it to also show the F-key equivalents for better keyboard access). And suddenly I found myself more interested in hacking around with what BetterTouchTool can do with a Touch Bar. Which is where this post is headed. First, a bit about the simulator. A numbered list, because I&rsquo;ll address them one at a time. This one is obvious, but it&rsquo;s no longer a touch screen and there&rsquo;s no translation of mouse-to-touch gestures, so some of BetterTouchTool&rsquo;s cool gesture capabilities are off the table It floats at the absolute highest level, so it always obscures menus underneath it Having a Touch Bar docked at the top of your display hides title bars of windows at the top of the screen, and gets in the way of things like&hellip;",
		"keywords": ["bettertouchtool","dashboard","touch","widget","average","averages","actions","activate","activity","advanced","again","apple","applescript","banner","bartender","bettertouchtool","board","bunch","bunches","character","chart","command","calendar","clicking","close","comma","command","comms","configuration","doing","doing&#39;","deactivate","default","directly","display","doing","extra","first","getting","github","group","groups","handling","having","highlights","however","howzit","hyper","image","length","launch","launchbar","library","macbook","monitor","moving","music","named","network","opening","options","output","prefix","parts","playing","preferencepanes","preferences","readme","restart","suffix","scientist","scripting","setapp","settings","shortcuts","simulator","sorry","space","special","specific","spotify","status","stuff","subcommands","system","taskpaper","today","toggle","touch","treat","triggers","truncate","uuids","usage","width","weather","widgets","width","abbreviation","ability","absolute","accept","access","acting","action","actions","active","activity","added","adding","address","addresses","adjustable","advanced","affects","again","agree","allowed","allows","almost","alters","animated","another","anyone","anyway","appear","applescript","appreciated","arguments","asking","assigned","assigning","assume","automatically","automation","available","average","averages","awesome","background","backlink","backtick","based","because","before","behind","bettertouchtool","between","bipolar","bites","board","bottom","brettterpstra","bright","bunch","bunchapp","button","buttons","calendar","capabilities","caption","careful","centered","certain","certainly","chalk","changes","changing","character","charts","choices","choose","class","clean","click","clicked","clicking","closes","collapsing","color","coloring","combiner","combo","coming","command","compensate","compiled","completely","completing","conditions","config","configuration","constantly","contains","contents","contextually","controlled","conveniently","copying","count","couple","crazy","create","curious"]
	},{
		"title": "Software mute for XLR mics",
		"url": "/2021/07/17/software-mute-for-xlr-mics/",
		"tags": ["hardware","keyboard","microphone","podcasting","solutions"],
		"date": "Jul 17<span>th</span>, 2021",
		"ts": "1626526020",
		"summary": "Over the last couple of years I&rsquo;ve spent an upsetting amount of money trying to find a cough button solution for my XLR mic setup. The audio interface I fell in love with (Komplete Audio 6) wasn&rsquo;t compatible with Shush, the cough button solution I&rsquo;d used for years with my USB mics. So I started looking at hardware solutions. The best one I found was the Pro Co Power Mute (after I added a foot switch topper to it). But when I switched to using a Rode Podmic, something about my setup caused the Power Mute to start adding a buzz to the line. No amount of troubleshooting would get rid of it without switching mics, so I ended up continuing my search and settling on a Rolls XLR A/B Switch. You just leave one of the XLR inputs empty and toggle between the hot and empty inputs. It does a fantastic job, and I imagine it will continue to work perfectly even when I inevitably change mics1 and/or audio interfaces in the future. The biggest drawback is that the button takes a significant amount of force to toggle, and thus it makes a better foot switch than a desktop one, which is a bit of a bummer for me2. Nonetheless, with no less than 4 XLR hardware mutes in my arsenal now, I once again had a solid cough button solution. As fun as a dedicated switch can be, though, I still found I missed the convenience of toggling mute with a keyboard key. I&rsquo;m afraid I&rsquo;ve lost track of where this tip came from, but whilst sharing these adventures on social media, it was pointed out to me that Rogue Amoeba&rsquo;s Loopback could make any audio interface mutable, and thus able to work with USB mic mute solutions like Shush. I ended up switching away from Shush, but I&rsquo;ll get to that in a second. Loopback isn&rsquo;t cheap, but it&rsquo;s so handy and so powerful that if you&rsquo;re working with audio &mdash; whether streaming, podcasting, producing music, or using audio routing for any reason &mdash; it&rsquo;s worth the investment ($99). And to make your XLR mic mutable with Loopback, all you have to do is create a virtual device with your USB audio interface as the input. That&rsquo;s it. Keep the default output channels and give the device a unique name. Now you can just set your microphone input in any app (Skype, Zoom, etc.) to the virtual device. Any USB muting app will be able to cut the input with the press of a button. The problem I ran into with Shush is that it mutes ALL USB devices, and with the audio routing I have set up&hellip;",
		"keywords": ["audio","interface","podmic","amoeba","aside","audio","banner","hacking","keyboard","komplete","loopback","mikrofon","nonetheless","podmic","rogue","rolls","screenshot","shush","skype","switch","ultimate","added","adding","adventures","afraid","again","amount","another","apple","arsenal","assign","audio","avoid","backlink","between","biggest","brettterpstra","bummer","button","buying","called","calls","caused","change","changing","channel","channels","cheap","cheapest","checking","choice","class","click","cluster","compatible","continue","continuing","controlling","convenience","converts","cough","couple","create","dedicated","default","desktop","device","devices","doesn","drawback","empty","ended","endnotes","etdyrw","ewiwww","extra","fantastic","feature","fnref","footnote","footnotes","force","found","guest","handy","hardware","having","height","https","image","imagine","impossible","inconvenient","inevitably","input","inputs","interface","interfaces","investment","kapsel","keyboard","kpthvl","landed","latching","leave","leaving","letting","loading","lodge","looking","loopback","makes","manager","mapped","mdash","meant","media","meeting","micmute","microphone","missed","module","money","music","mutable","mutablekomplete","muted","mutes","muting","myself","noscript","noteref","original","output","pedals","perfectly","picture","podcasting","pointed","powerful","press","problem","producing","recommend","respond","reversefootnote","rogueamoeba","routing","rsquo","search","second","settling","setup","sharing","shortcut","shush","significant","silent","sitting","social","solid","solution","solutions","somebody","source","spent","srcset","started","streaming","stuff","switch","switched","switching","takes","thumb","title","toggle","toggling","topper","track","trackball","treadmill","tried","troubleshooting","trying","unique","unmute","unmuted","uploads","upsetting","using","virtual","wandered","where","whilst","width","workable","working","worth","years"]
	},{
		"title": "A non-slip keyboard tray solution",
		"url": "/2021/07/13/a-non-slip-keyboard-tray-solution/",
		"tags": ["hardware","keyboard","solutions"],
		"date": "Jul 13<span>th</span>, 2021",
		"ts": "1626185520",
		"summary": "I asked on Twitter about \"rubberizing\" my keyboard tray. I didn&rsquo;t know where to begin solving this problem. I got some very helpful feedback and thought I&rsquo;d follow up with the solution that worked for me, on the off chance it helps someone else. I use a 6-way adjustable keyboard tray mounted underneath my NextDesk. My particular model isn&rsquo;t available right now, but there are others like it. It basically lets me adjust position and angle on three axes, giving me the perfect ergonomic keyboard position whether I&rsquo;m sitting or standing. And its big enough to hold a trackpad, a split mechanical keyboard, and a 15-key stream deck. And a Shuttle Xpress, though that&rsquo;s not working for me anymore, with the combination of Big Sur and an M1 Mac mini (I can&rsquo;t remember which one did it in). In short, I love this keyboard tray, except for one issue: its slick surface tends to let things slide while I&rsquo;m working with it angled forward to any degree. So I wanted to make the surface sticky. I didn&rsquo;t want to get into rubberized paints, but I&rsquo;d also tried those big gaming mousepads without luck. After trying a few things, I think I found the right solution. First, I found this roll of non-slip stuff that feels like latex (though is supposed be latex free). It was good and tacky, but it was also shiny and immediately began collecting dust and cat hair. It also was a bit too sticky. I didn&rsquo;t realize I wanted to be able to move my trackpad a bit as I switched position until it was no longer an option. Then I tried this stuff, which is more like a foam mat, similar to the surface of a standard mouse pad. It was the right amount of sticky, but it wasn&rsquo;t sticky enough to keep the whole thing from sliding a little over time. I tried a few other things, like kitchen drawer liners, but the perfect solution ended up being a combination of the first two. The too-sticky, too-shiny stuff made a perfect base for the not-sticky-enough roll of foam stuff. Both easy to cut to size, and the tacky layer is enough to keep the foam from sliding, while giving me the right amount of traction on the top side. Neither one is actually adhesive, so they&rsquo;re easy to remove and clean when needed. It&rsquo;s kind of a perfect solution. Both rolls come with enough material to do this a few times over, which I doubt I&rsquo;ll need to do, but I assume that at some point in the future I&rsquo;m going to want to make something else&hellip;",
		"keywords": ["keyboard","mousepad","first","neither","nextdesk","shuttle","twitter","xpress","adhesive","adjust","adjustable","alone","amount","angle","angled","anymore","apparently","asked","assume","available","began","begin","chance","clean","collecting","combination","degree","doubt","drawer","ended","enough","ergonomic","especially","eventually","except","feedback","feels","first","found","gaming","giving","going","helpful","helps","keyboard","kitchen","latex","layer","liners","little","longer","mechanical","media","model","mounted","mouse","mousepads","needed","others","paints","particular","point","position","problem","realize","remember","remove","response","right","rolls","rsquo","rubberized","rubberizing","seemed","share","shiny","short","similar","since","sitting","slick","slide","sliding","slippery","social","solution","solving","split","standard","standing","sticky","stream","stuff","supposed","surface","switched","tacky","tends","think","thought","times","trackpad","traction","tried","trying","underneath","unusually","wanted","where","while","whole","worked","working"]
	},{
		"title": "Doing (more) with more tags",
		"url": "/2021/07/07/doing-more-with-more-tags/",
		"tags": ["doing","productivity","search","tagging"],
		"date": "Jul 7<span>th</span>, 2021",
		"ts": "1625662800",
		"summary": "I&rsquo;ve added a few new things to my command line time tracker, doing, with an emphasis on adding power to @tagging. Several commands now accept as a flag, creating a filter that looks for the last entry (or entries) tagged with a specific tag (or combination of tags). , , (which is a new command that duplicates a previous task and starts it with a new timer) all accept to act on a tagged entry rather than the last chronological entry. All commands that accept also accept , so you can specify multiple tags separated with commas and then use to define how they&rsquo;re combined (AND, OR, or NOT). Run (after updating to the latest version, of course) for any of these commands for more details. The command now accepts to edit the last entry in your . Combined with , you can edit previous entries much more easily. The entry opens in your editor with the title as the top line, and any notes on the following lines. You can update the text, tags, and note, and when you save and close the doing file is updated with the changes. Most commands that support also support . This provides fuzzy search for recent entries. If you specify a string, such as , the command will search your recent entries for something containing the letters of the string, case insensitive and in order, but separated by up to three characters each. So \"Test\" would match \"the satire.\" For , you can add the switch to be able to edit the last entry matching a search. As I mentioned above, (aliased as ) allows you to restart a finished task (as a new task), or end the previous task with the current time and start it again with a new timer. With the flag, you can now repeat an entry from earlier in the list based on tags. Which means that making liberal use of tags can now be a major benefit beyond just time tracking. I also added , which adds tags with no timestamps to recent entries, so no accumulated time is recorded for them. also accepts the flag, so you can cancel the last tagged entry rather than just the most recent entry. I also added a configuration key called which will execute an arbitrary command or script after any command that modifies the doing file. This ties into a fun BetterTouchTool/Touch Bar/menu bar integration that I&rsquo;ll write more about soon. You can also now define both (which is the app that the doing file is opened in with ) and (which is the app that will open the configuration file in). You can update doing using . If you want to learn more about&hellip;",
		"keywords": ["command","knowledge","management","project","representation","terminal","tracking","bettertouchtool","several","touch","above","accept","accepts","accumulated","added","adding","again","aliased","allows","arbitrary","based","benefit","beyond","called","cancel","changes","characters","chronological","close","combination","command","commands","commas","configuration","containing","creating","define","details","doing","duplicates","earlier","easily","editor","emphasis","entries","entry","execute","filter","finished","fuzzy","insensitive","integration","latest","learn","letters","liberal","looks","major","making","match","matching","mentioned","modifies","multiple","notes","opened","opens","project","provides","rather","recent","recorded","repeat","restart","rsquo","satire","script","search","separated","specific","specify","starts","string","support","switch","tagged","tagging","timer","timestamps","title","tracker","tracking","updated","updating","using","version","visit","write"]
	},{
		"title": "Jay Miller: Using Bunch for Creating Newsletters",
		"url": "/2021/07/06/jay-miller-using-bunch-for-creating-newsletters/",
		"tags": ["automation","bunch","video"],
		"date": "Jul 6<span>th</span>, 2021",
		"ts": "1625592420",
		"summary": "Jay Miller has published his first video on Bunch. It&rsquo;s a walkthrough of a Bunch he uses for automating his email newsletter process, and is a great example of Bunch&rsquo;s usefulness. It highlights some cool Bunch features like embedded snippets and calling Keyboard Maestro URLs, as well as some features that would be considered more \"advanced,\" such as assigning variables with script results and using variables in conditions. Thanks to Jay for making this, and I look forward to more in the future!1 No pressure, though. This is a great video all on its own, and I really do appreciate it. It&rsquo;s not like I&rsquo;m paying anybody for this stuff.&nbsp;↩",
		"keywords": ["tutorial","youtube","bunch","keyboard","maestro","miller","thanks","video","youtube","advanced","anybody","appreciate","assigning","automating","backlink","bottom","calling","class","conditions","considered","container","email","embedded","endnotes","example","features","figure","first","fnref","footnote","footnotes","great","height","highlights","https","ldquo","making","newsletter","noteref","padding","paying","pressure","process","published","rdquo","results","reversefootnote","rsquo","script","snippets","stuff","style","usefulness","using","variables","video","videoid","walkthrough","watch","width","youtube","zdsyw"]
	},{
		"title": "SummerFest 2021: Festival of Artisanal Software [Sponsor]",
		"url": "/2021/07/01/summerfest-2021-festival-of-artisanal-software-sponsor/",
		"tags": ["sponsor","tools","writing"],
		"date": "Jul 1<span>st</span>, 2021",
		"ts": "1625144400",
		"summary": "Thanks to SummerFest 2021 for sponsoring BrettTerpstra.com this week! Some of the best Mac apps you can find (and some of my personal favorites) for research, project management, and more are on sale right now. No bundles with stuff you don&rsquo;t need, just great prices from great devs. Now is the time for new plans and fresh projects and great new ideas. Whether you&rsquo;re mapping out your next novel, finishing your dissertation, planning a product, or writing memories for your grandkids, these great tools will help. As is our custom in this season, we&rsquo;re hosting a gathering of software artisans who are working to transform research and writing for a new era. We&rsquo;ve all finished our latest updates, and we&rsquo;re working together to save you lots of money. Get the tools you need at a terrific price, for a very limited time. Tinderbox: visualize and organize your ideas and plans Scrivener: your complete writing studio Panorama: collect, organize, and understand your data Mellel: a real word processor DEVONthink 3: manage documents the smart way TextExpander: recall your best words, instantly, repeatedly SmallCubed mail suite: manage mail like a maven Bookends: the reference manager you&rsquo;ve been looking for PDFPen: powerful pdf editing Easy Data Transform: merge, clean, reformat data without coding HoudahGeo: photo geotagging Nisus Writer Pro: the powerful word processor for the Mac HoudahSpot: powerful file search DEVONagent Pro: your smart (re)search assistant Aeon Timeline: the timeline tool for creative thinkers ImageFramer Pro: add creative borders and frames to your photos Trickster: your recently-used files at your fingertips Hyperplan: flexible visual planner iTaskX: professional project planning and tracking The Tinderbox Way: definitive ebook on artisanal software Artisanal software doesn&rsquo;t come from fly-by-night marketers. We work hard to make sure our tools work together, because that makes everything better. We work hard to support great new technologies and great new ideas, while avoiding buzzspeak-compliant management trends. Your inspiration doesn&rsquo;t come from a factory. Neither does artisanal software. For a limited time, we&rsquo;re all offering you a great price on great software, right at the workshop door. No ridiculous bundles, no silly gimmicks. Great software, great support, great (but sustainable) prices. Visit artisanalSoftwareFestival.com today and&hellip;",
		"keywords": ["bookends","macos","mellel","processor","shareware","tinderbox","artisanal","bookends","brettterpstra","devonagent","devonthink","great","houdahgeo","houdahspot","hyperplan","imageframer","mellel","neither","nisus","pdfpen","panorama","scrivener","smallcubed","summerfest","textexpander","thanks","timeline","tinderbox","transform","trickster","visit","writer","artisanal","artisanalsoftwarefestival","artisans","assistant","avoiding","because","borders","bundles","buzzspeak","clean","coding","collect","compliant","creative","custom","definitive","dissertation","documents","doesn","ebook","editing","everything","factory","favorites","files","fingertips","finished","finishing","flexible","frames","fresh","gathering","geotagging","gimmicks","grandkids","great","hosting","itaskx","ideas","inspiration","instantly","lasts","latest","limited","looking","makes","management","manager","mapping","marketers","maven","memories","merge","money","night","novel","offering","organize","personal","photo","photos","planner","planning","plans","powerful","price","prices","processor","product","professional","project","projects","recall","recently","reformat","repeatedly","research","ridiculous","right","rsquo","search","season","silly","smart","software","sponsoring","studio","stuff","suite","support","sustainable","technologies","terrific","thinkers","timeline","today","together","tools","tracking","transform","trends","understand","updates","visual","visualize","while","words","working","workshop","writing"]
	},{
		"title": "Web Excursions for June 29, 2021",
		"url": "/2021/06/29/web-excursions-for-june-29-2021/",
		"tags": ["bookmarking","bookmarks","reading","scripting"],
		"date": "Jun 29<span>th</span>, 2021",
		"ts": "1624942800",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Running a CPU benchmark on Apple Silicon M1 Peter Forret created a cool bash script that performs a cpu benchmark using ffmpeg and primitive. If you fork the repo and run it, you can commit the results and create a pull request to add them to the repo. Nobody seems to have done it yet (other than me), but I&rsquo;d be curious to see a few more results from M1 machines, as well as comparisons to Intel machines. Pitch in if you feel the same! Bookmarklet for Pins.app (1.6+) A browser bookmarklet for the Pinboard app Pins, which added support for the necessary URL parameters in version 1.6. Hey, I sped up Apple Mail Rules AppleScripting the creation of Mail.app Rules is a great tip from Dr. Drang. (Yes, I use MailMate, and my SaneBox @SaneBlackHole covers this particular use case for me, but it’s still a great tip. Also, yes, the persistent emails of the type Dr. Drang describes are super annoying.) Surge A service that will host your static website with a CLI that makes publishing a one-step process. Support for SSL, custom CNAME, custom 404s, and more. It’s kind of insane that this is free. Sync Safari Reading List bookmarks to Pinboard Samuel Kordik built on work from Zach Fine and updated my old Reading List Catcher script to work in these modern times. It&rsquo;s a Python script that syncs your Safari Reading List to Pinboard (and a Markdown file, to boot). You need to add a \"secrets.py\" file with your API key, and install the and packages, but other than that it \"works right out of the box.\"",
		"keywords": ["apple","benchmark","bookmarklet","pinboard","safari","silicon","apple","applescripting","bookmarklet","brett","cname","catcher","check","drang","forret","intel","kordik","mailmate","markdown","nobody","peter","pinboard","pitch","python","reading","rules","running","safari","samuel","saneblackhole","sanebox","setapp","silicon","support","surge","access","added","annoying","apple","benchmark","bookmarklet","bookmarks","brettterpstra","brought","browser","built","catcher","class","commit","comparisons","covers","create","created","creation","curious","custom","describes","emails","excursions","ffmpeg","forret","freron","github","great","height","highlighter","holding","https","hundreds","image","insane","install","language","ldquo","leancrew","links","loading","machines","makes","media","modern","monthly","necessary","noscript","original","packages","parameters","particular","partnership","performs","persistent","picture","pinboard","plaintext","posts","primitive","process","publishing","rdquo","reading","results","right","rouge","rsquo","rules","samuelkordik","sanebox","script","secrets","seems","service","setapp","silicon","source","srcset","static","subscription","super","support","surge","syncs","times","title","today","ttscoff","updated","uploads","using","version","website","width","works"]
	},{
		"title": "A Jekyll plugin for documenting Mac keyboard shortcuts",
		"url": "/2021/06/22/a-jekyll-plugin-for-documenting-mac-keyboard-shortcuts/",
		"tags": ["blogging","jekyll","keyboard","plugin","shortcuts","writing"],
		"date": "Jun 22<span>nd</span>, 2021",
		"ts": "1624393680",
		"summary": "In the process of blogging here, as well as writing extensive documentation for my own apps, I end up writing about keyboard combinations a lot. Over the years I&rsquo;ve made this easier on myself in various ways, but I think I&rsquo;ve finally perfected a Jekyll plugin to make the process simple and the results consistent across my sites. I&rsquo;m calling it, not too cleverly, \"kbd.\" A few years back I wrote about Apple&rsquo;s style guide for documenting keyboard commands. Among others, there are rules about in what order modifier keys should be presented, capitalization, and when to use hyphens versus plus signs to combine keys. Kbd handles all of that automatically. The plugin adds a Liquid tag that lets you specify a keyboard shortcut or combination in any number of ways, in any order, minimizing the amount of time you have to think about it. You can use key binding modifier symbols (like ), their names (), or actual unicode symbols (), and you can spell out the name of any key such as \"escape\" or \"home\". You can put the modifiers in any order. You don&rsquo;t have to think about whether you should use the top or bottom character on two-symbol keys like the \"/?\" key. The plugin will automatically output consistent, correct (according to Apple) results across your entire blog or documentation project. I currently have it in action on the Bunch site, and will be updating the Marked documentation to use it soon. You can configure it to use symbols or spell out the key names. Apple suggests that when using graphical keys, they be combined with \"+\", e.g. ⌘+C. This is only if the keys presented look like actual keyboard keys. When just displaying symbols and a character, there&rsquo;s no need for the , so it&rsquo;s disabled by default, but you can enable it with in your config. See the README for all of the options. It will always output the modifiers in order, and capitalize the primary key ( above). And if you enter , both will output ⇧⌘?, as per Apple&rsquo;s guidelines. The plugin also outputs plenty of markup to make styling easy, but it&rsquo;s semantic and compatible with screen readers and other accessibility tools. It even includes a spelled-out version of the combination as a title attribute on the container span so that hovering over the combo shows the full version in a tooltip. I included the styling I&rsquo;m using in the plugin&rsquo;s directory in the repo (in Sass format). The markup is easy to style with any CSS, though&hellip;",
		"keywords": ["software","static","technical","writing","among","apple","banner","bunch","command","consistency","control","github","image","jekyll","jekyllplugins","kbdtag","keyboard","liquid","marked","pages","readme","shortcuts","symbols","above","accessibility","across","action","actions","adapt","allow","amount","apple","attain","attribute","automatically","binding","blogging","bottom","brettterpstra","bunch","bunchapp","calling","capitalization","capitalize","change","character","class","cleverly","combination","combinations","combo","command","commands","compatible","config","configure","consistent","container","control","coolest","default","directory","disabled","displayed","displaying","documenting","easier","enabled","enter","entire","escape","example","extensive","finally","folder","format","formatting","github","graphical","great","guide","guidelines","handles","harder","height","hellip","highlight","highlighter","hovering","https","hyphens","image","included","includes","kbdheader","keyboard","keycombo","language","ldquo","loading","markup","master","media","minimizing","modifier","modifiers","myself","names","noscript","options","original","others","output","outputs","perfected","picture","plaintext","plenty","plugin","plugins","preferences","presented","primary","process","project","rdquo","readers","repository","results","rouge","rsquo","rules","screen","screenshots","semantic","settings","shift","shortcut","shortcuts","shows","signs","simple","since","sites","source","specify","spell","spelled","srcset","style","styling","suggests","symbol","symbols","think","title","tools","tooltip","ttscoff","unicode","updating","uploads","using","various","version","versus","width","words","works","writing","wrote","years"]
	},{
		"title": "Bunch 1.4 is here",
		"url": "/2021/06/19/bunch-1-dot-4-is-here/",
		"tags": ["automation","automator","bunch","macos","writing"],
		"date": "Jun 19<span>th</span>, 2021",
		"ts": "1624120980",
		"summary": "Welp, I did it. Bunch 1.4.0 is officially out, and is showing up as an automatic update for unsuspecting Bunch users as I write this. This should probably (definitely) have been a major version bump to 2.0, but I didn&rsquo;t because that seemed grandiose. I mean, it is a grandiose update, but let&rsquo;s not get ahead of ourselves. Quick recap for newcomers: Bunch is a macOS automation tool that runs on plain text files. At its most basic, you can just type out a list of apps you want to launch. Save the text file to Bunch&rsquo;s folder, and it shows up in a menu in your menu bar. When you click it, all those apps launch. When you click it again, all those apps quit. It goes way, way beyond that capability, but that&rsquo;s the idea. Everything you need to set up a context (writing, podcasting, zooming, relaxing&hellip; whatever you&rsquo;re doing next) in plain text. Add new automations just by creating new text files, and edit automations as easily as typing in a text editor. I added a \"What&rsquo;s New?\" page to the Bunch site. I culled the list of changes since the last stable release from 247 entries to the 36 items that I think users should be aware of. I won&rsquo;t rewrite that here, but if you&rsquo;re on the stable version (1.3.6) and have never touched the 1.4 betas, I encourage you to check it out and get a feel for all the updates. The changelog itself is overwhelming at this point, so hopefully the \"What&rsquo;s New?\" page distills it enough to be a starting point for exploring new features. Side note: I&rsquo;m sure I&rsquo;ve mentioned it before, but the Bunch docs are all written in Markdown and the site runs on Jekyll. The markdown is in a public GitHub repo. When I release a Bunch update, the repo get a matching version tag. I wrote a Jekyll plugin that shows diffs of the docs between releases as a section at the top of the changelog. Because the first thing I do after adding features or making improvements is to write about them, the \"Recently Updated Documentation\" section offers a nice, detailed look at the latest changes. Version 1.4 is easily 10x more powerful than the last 1.3 version. It&rsquo;s hard to quantify in any meaningful way, but the addition of frontmatter, expansion of variables, inclusion of conditional logic, interactive dialogs, single site browsers, embedded snippets, and a hundred other shiny new things make it a major upgrade. My only fear is that users still on 1.3 were entirely happy with the way it&hellip;",
		"keywords": ["github","markdown","because","blood","bunch","download","everything","github","hopefully","jekyll","lastly","markdown","quick","recently","screenshot","updated","version","added","adding","again","ahead","automatic","automation","automations","aware","backlink","basic","because","before","behind","betas","between","beyond","blockquote","brettterpstra","browsers","bunch","bunchapp","button","capability","changelog","changes","channel","check","class","click","conditional","context","continue","couple","craziness","creating","culled","definitely","delighted","detailed","dialogs","diffs","discussions","distills","doing","download","downloadbunch","easily","editor","embedded","encourage","endnotes","enough","entirely","entries","everyone","expansion","exploring","features","files","first","fnref","folder","footnote","footnotes","frequent","frontmatter","github","grandiose","great","happy","height","hellip","hesitate","hopefully","https","hundred","ideas","image","improvements","inclusion","interactive","issues","items","itself","latest","launch","ldquo","loading","logic","longer","macos","major","making","markdown","matching","mdash","meaningful","media","mentioned","newcomers","noscript","noteref","offers","officially","original","ourselves","overwhelm","overwhelming","people","picture","plugin","podcasting","point","posts","powerful","pressure","program","public","quantify","rdquo","recap","recently","recentlyupdateddocs","regular","relaxing","release","releases","reports","reversefootnote","rewrite","rsquo","screenshot","section","seemed","share","shiny","showing","shows","since","single","snippets","source","srcset","stable","starting","stuff","sunrise","super","think","thoughts","title","touched","ttscoff","typing","under","unsuspecting","updated","updates","upgrade","uploads","users","variables","version","videos","whatever","whats","width","willing","working","world","write","writing","written","wrote","zooming"]
	},{
		"title": "Web Excursions for June 18, 2021",
		"url": "/2021/06/18/web-excursions-for-june-18-2021/",
		"tags": ["bookmarks","macos"],
		"date": "Jun 18<span>th</span>, 2021",
		"ts": "1624037700",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. GitFinder - git client with Finder integration A fast and lightweight (but quite full-featured) git client for Mac with Finder integration. Pins \"A modern Pinboard app for 2021.\" Mac and iOS. It&rsquo;s new and currently being developed, which sets it apart from every other Pinboard app available on macOS right now. I would be sold on it if I could find a URL handler for adding a new bookmark. Maybe it&rsquo;s there, but not documented. Overall a solid app with good share extensions, organization/searching, and in-app viewing. Dato A really well done menu bar calendar app for Mac. With my new job and restricted Exchange servers, I was no longer able to use Fantastical as my primary calendar app. Dato gave me back quick dropdown access to events (with keyboard shortcut), one-click Zoom joins, and even shows my next meeting as a text block in my menu bar (with countdown). I lose all of Fantastical&rsquo;s great natural language event/task creation, but it covers all the other bases for me. How to fix macOS Accessibility permission when an app can’t be enabled Sharing this as I&rsquo;ve heard I&rsquo;m not the only one recently hit with a sudden failure of the Big Sur Accessibility permissions. Started up my Mac and was confronted with a couple dozen requests for permissions, all of which showed they were already granted. This fix took care of it. It does require re-enabling everything, but at least it works when you do. Replies.io \"Replies is an easy to use customer support tool that becomes smarter as longer you use it. Reuse your previous answers to save time and money.\" I used the \"Contact Support\" menu item in HoudahSpot and was intrigued by the interface it offered (using Replies), including searching for previous answers. Bookmarked for possible inclusion in my own apps, and think it would be cool to see in other apps, too",
		"keywords": ["calendar","macos","pinboard","accessibility","bookmarked","brett","cleanmymac","contact","exchange","fantastical","finder","gitfinder","houdahspot","maybe","overall","pinboard","replies","reuse","sharing","started","support","absolute","access","accessibility","adding","answers","apart","apple","available","bases","becomes","block","bookmark","border","brettterpstra","brought","calendar","class","click","client","confronted","countdown","couple","covers","creation","customer","developed","display","documented","dozen","dropdown","enabled","enabling","events","everything","excursions","extensions","featured","gitfinder","granted","great","handler","heard","height","hidden","holding","https","image","impactradius","including","inclusion","integration","interface","intrigued","joins","keyboard","language","ldquo","lightweight","loading","longer","macos","macmegasite","macos","macpaw","media","meeting","modern","money","natural","noscript","offered","organization","original","partnership","permission","permissions","picture","position","possible","primary","quick","rdquo","recently","replies","requests","restricted","right","rsquo","searching","servers","share","shortcut","showed","shows","smarter","solid","source","speed","srcset","style","sudden","support","think","title","tools","uploads","using","viewing","visibility","width","works"]
	},{
		"title": "A Fine Start is for lovers of lists [Sponsor]",
		"url": "/2021/06/17/a-fine-start-is-for-lovers-of-lists-sponsor/",
		"tags": ["sponsor"],
		"date": "Jun 17<span>th</span>, 2021",
		"ts": "1623934800",
		"summary": "Thanks to A Fine Start for sponsoring BrettTerpstra.com again this week! Do you like lists? Do you like lists of lists? If so, listen up. I have a treat for you. A Fine Start is a new tab page for your web browser. It lets you make lists of links — lists of lists of links to be exact. A Fine Start’s job is to show you these lists whenever you open a new tab. Your lists are limited only by your imagination. Make them, sort them, then have immediate access to them whenever you open a new tab. Get the extension for Chrome or Firefox. Or if your browser supports setting a URL as your new tab page—like Safari does—you can use the web version. It’s free to use",
		"keywords": ["bookmark","chrome","firefox","google","brettterpstra","chrome","firefox","happy","safari","thanks","access","addon","addons","afinestart","again","blogs","bookmarks","brett","brettterpstra","browser","chrome","class","content","daily","detail","exact","extension","firefox","friends","google","guilty","height","homepages","https","image","imagination","immediate","kcgjmjiklcchbhljelchjdpoooccmhcn","limited","links","listen","lists","loading","making","media","minimal","movie","mozilla","nofollow","noscript","original","picture","places","pleasures","procrastinate","productivity","quirky","references","screenshot","setting","sites","social","source","sponsoring","srcset","streaming","suggestions","supports","title","tools","treat","uploads","version","webstore","whenever","width"]
	},{
		"title": "TextExpander ends the repetition",
		"url": "/2021/06/10/textexpander-ends-the-repetition/",
		"tags": ["sponsor","textexpander"],
		"date": "Jun 10<span>th</span>, 2021",
		"ts": "1623327180",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Say goodbye to repetitive text entry, spelling and message errors, and trying to remember the right thing to say. When you use TextExpander, you can say the right thing in just a few keystrokes. Better than copy and paste, better than scripts and templates, TextExpander snippets allow you to maximize your time by getting rid of the repetitive things you type &mdash; all while still customizing and personalizing your messages. TextExpander can be used on any platform, in any app, anywhere you type. Get 20% off your first year by visiting textexpander.com today",
		"keywords": ["smile","snippet","textexpander","brettterpstra","textexpander","thanks","allow","anywhere","customizing","entry","errors","first","focus","getting","goodbye","increase","keystrokes","matters","maximize","mdash","message","messages","paste","personalizing","platform","productivity","remember","repetition","repetitive","right","scripts","snippets","spelling","sponsoring","takes","templates","textexpander","today","trying","visiting","while"]
	},{
		"title": "A Bunch update, and a Sublime Text package",
		"url": "/2021/06/08/a-bunch-update-and-a-sublime-text-package/",
		"tags": ["automation","bunch","macos","scripting","snippet","sublimetext","writing"],
		"date": "Jun 8<span>th</span>, 2021",
		"ts": "1623162420",
		"summary": "Since I last wrote about it, Bunch has received a lot of updates. It remains my favorite thing to do between 5:30 and 8am. Everything is still happening in the Bunch Beta releases, but I&rsquo;ve redirected all Bunch web traffic to the new site where the beta download is the prominent button, so hopefully new users are more likely to be on the 1.4 beta than on the (now seriously behind) stable channel. I swear I&rsquo;m very close to releasing the Beta as the public release, but I keep adding things that I want tested. The plan is to draw a line today, test existing features, then make a public 1.4 release in the next week or two. The beta will continue to be where I release new features, and you can stay on the beta channel indefinitely. I&rsquo;ll make stable releases more often, so those who don&rsquo;t choose the cutting edge won&rsquo;t end up a year behind. Which is, of course, how betas are supposed to work. (Sorry, I will probably always use that pun.) Among the new features is an entire syntax for conditional logic, which can run Bunch items based on tests like \"weekday is before Wednesday,\" \"OtherBunch is Open,\" \"Variable_1 contains This Text,\" and a dozen other permutations. Bunch&rsquo;s ability to set both local and global variables is expanded, and you can set variables using shell script output, multiple choice dialogs, or external files. Then you can use those variables to affect snippets, branch Bunch execution, and even affect other Bunches. Of course, if your needs are basic, the simple way you&rsquo;ve always used Bunch is still fully functional. Bunch can also now create Single Site Browsers, run shell scripts with a configurable task monitor, and interact with even more great Mac apps. Seriously, it would take a few blog posts just to list all the new stuff. I don&rsquo;t expect even avid users to be on top of all the changes. I just try to keep as detailed a changelog as I can, replete with links to documentation of new features. I do keep the documentation very complete. I even wrote a Jekyll plugin that puts recently-updated documentation pages in a summary at the top of the changelog with every release. Now that my official day job is \"Technical Writer\" for a Developer Relations team, I can consider writing Bunch documentation to be honing my abilities. Which is cool, I really like writing Bunch Documentation. Like I said, I&rsquo;ve officially redirected all Bunch links on this site to point to bunchapp.co, the new&hellip;",
		"keywords": ["automation","macos","sublime","among","browsers","bunch","bunches","control","developer","donations","everything","github","jekyll","markdownediting","marked","otherbunch","package","personally","python","relations","seriously","since","single","sorry","stuff","sublime","technical","textedit","thanks","variable","wednesday","writer","abilities","ability","adding","advanced","again","another","appreciation","asking","based","basic","before","began","behind","betas","between","branch","bunchapp","button","chance","changelog","changes","channel","choice","choose","clear","close","coders","coding","coming","command","commands","comment","commenting","commercial","community","complex","conditional","configurable","consider","contains","continue","create","credit","cutting","decided","decisions","detailed","development","dialogs","doesn","donations","donationware","download","dozen","drive","easily","editing","editor","effort","enjoyment","enough","entire","execution","expanded","expect","external","fashion","favorite","features","files","finally","foreseeable","fragments","fully","functional","global","going","great","handle","happening","haven","highlighting","honing","hopefully","horizon","ideas","imagine","impact","including","inclusion","indefinitely","interact","interested","items","labor","learn","likely","links","literally","local","logic","longevity","manually","meantime","monitor","motivation","multiple","names","navigation","needs","nvultra","occasional","offers","official","officially","often","options","output","package","pages","permutations","plugin","point","points","posts","prominent","promises","public","received","recently","redirected","regexes","release","released","releases","releasing","remains","replete","reports","right","rsquo","scope","script","scripts","seems","seriously","shell","simple","since","snippet","snippets","stable","stick","stretching","stuff","submitted","summary","support","supposed","swear","syntax","takes","terrible","tested","tests","tired","today","totally","traffic","tried","trouble"]
	},{
		"title": "Get files from Mac to iOS faster with WALTR PRO (+Giveaway)",
		"url": "/2021/05/26/get-files-from-mac-to-ios-faster-with-waltr-pro-plus-giveaway/",
		"tags": ["appreview","macos","video"],
		"date": "May 26<span>th</span>, 2021",
		"ts": "1622062080",
		"summary": "I&rsquo;ve mentioned WALTR before, most recently the release of WALTR 2. Well, WALTR PRO is out now with a new bag of tricks, so it&rsquo;s time for another giveaway. WALTR PRO is designed to make getting files from your Mac to your iOS device a simple drag and drop affair. Audio and video files are automatically converted from almost any format into an iOS-friendly format, then added to the appropriate app. With WALTR PRO you can now send files to third-party apps, too, just by holding down Option when you drop the file. Once converted you&rsquo;ll get a menu of all the apps that can handle that file type. It&rsquo;s not just audio/video files, though, WALTR PRO can send virtually any file type to the appropriate app on your device. Word files, PDFs and EPUBs, photos, even Markdown files. Hold down Option and send it right to the app you need it in. WALTR PRO also includes built-in metadata editing, allowing you to edit the artwork and metadata of your songs and movies before transferring them. WALTR PRO is available for Mac and Windows. It costs $29.95, with a 50% discount for WALTR 2 owners. Check it out at softorino.com/waltr. If you&rsquo;re interested in a free copy, just sign up below to enter the drawing. I&rsquo;ll be giving away free licenses to five (5) lucky random winners. Drawing will be on Monday, May 31 at 12PM CST. Sorry, this giveaway has ended",
		"keywords": ["audio","movies","songs","video","waltr","audio","check","drawing","epubs","markdown","monday","sorry","waltr","windows","added","affair","allowing","almost","another","artwork","audio","automatically","available","before","below","built","converted","designed","device","discount","drawing","editing","ended","enter","files","format","friendly","getting","giveaway","giving","handle","holding","includes","interested","licenses","lucky","mentioned","metadata","movies","owners","party","photos","promo","random","recently","release","right","rsquo","simple","softorino","songs","third","transferring","tricks","video","waltr","winners"]
	},{
		"title": "Improvements for the Increment Templated Service (+PopClip)",
		"url": "/2021/05/25/improvements-for-the-increment-templated-service-plus-popclip/",
		"tags": ["macos","popclip","service"],
		"date": "May 25<span>th</span>, 2021",
		"ts": "1621966500",
		"summary": "I wrote a macOS Service way back in 2012 that I&rsquo;ve used ever since. It allows you to write some text and include special placeholders, then select it and repeat the text, incrementing the placeholders with each iteration. I last updated it in 2014 with better indentation handling and zero-padding, but otherwise it hasn&rsquo;t seen many changes. Until this morning. Originally the Increment Templated Service only handled numeric incrementation. It still does, but I changed the syntax to instead of . You&rsquo;ll see why in a second. Since you&rsquo;re likely unfamiliar with the original (given its age), I&rsquo;ll demonstrate what it does. Start with a block of text like this: The specifies a start and end count for the iteration. The is a placeholder that inserts the current element again and optionally performs math operations (, , , , ) on it. So the result of running the Service on the above text is: You can use to repeat the current item as is. This can be handy when writing code, simulating a bit of Emmet action: You can also now specify an increment the way you would with the command. Just add a third number in the middle: gives you 2, 4, 6, 8, 10. Another big change is that Increment Templated now handles arrays of strings or numbers. Similar to glob expansion in the shell, you can use comma-separated items in the placeholder which are then enumerated. So you can now do this: When using arrays you can still repeat the current item with a placeholder, but you can&rsquo;t modify it. You do, however, have the index of the current item available as , which is zero-based (the first element is 0), and can have math operations performed on it. I also made a PopClip version of this which is now available as part of Brett&rsquo;s PopClip Extensions. It works the same way, just puts the Service on a handy button that only shows up when the selected text contains template syntax. Increment Templated Service v3.0.2 Download Increment Templated Service v3.0.2 Repeats a selected block of text a specified number of times, replacing placeholders with the count of the current item with variable start and end numbers. Published 07/01/12. Updated 02/06/23. Changelog Donate &bull; More info&hellip",
		"keywords": ["duplicate","paste","template","another","arrays","brett","changelog","donate","download","emmet","extensions","increment","increments","numeric","originally","popclip","produces","published","renders","repeats","service","similar","since","templated","updated","above","action","again","allows","arrays","available","based","block","button","change","changed","changes","comma","command","contains","count","element","enumerated","expansion","first","gives","handled","handles","handling","handy","hellip","however","increment","incrementation","incrementing","indentation","index","inserts","items","iteration","likely","macos","middle","modify","morning","numbers","numeric","operations","optionally","original","padding","performed","performs","placeholder","placeholders","repeat","replacing","rsquo","running","second","selected","separated","shell","shows","simulating","since","special","specifies","specify","strings","syntax","template","third","times","unfamiliar","updated","using","variable","version","works","write","writing","wrote"]
	},{
		"title": "Embrace the hyperlink with A Fine Start [Sponsor]",
		"url": "/2021/05/20/embrace-the-hyperlink-with-a-fine-start-sponsor/",
		"tags": ["browser","sponsor"],
		"date": "May 20<span>th</span>, 2021",
		"ts": "1621515600",
		"summary": "Thanks to A Fine Start for sponsoring BrettTerpstra.com again this week! Embrace the hyperlink with a new tab page that focuses on what makes that web work! Hyperlinks are awesome. The web wouldn’t even be a web without them. A Fine Start gives the almighty hyperlink the respect it deserves. When you open a new browser tab, A Fine Start gives you a list of links that you control. You can add whatever links you want and group and sort them however you see fit. But where are all the widgets and photos and inspirational quotes, you ask? Not here. Not in this new tab. This space is a pristine sanctuary for the textual hyperlink, unimpeded by the whims and tomfoolery of the “modern” web. Open a new tab, get to your destination. It’s fast, it’s simple, and it feels right. Chrome and Firefox users can get the extension. If your browser supports using a custom URL for new tabs &mdash; as Safari does &mdash; you can use the hosted version of the app. Either way, it’s fast and effective. And it’s free. There’s an optional upgrade for convenient syncing between browsers &mdash; no password required &mdash; for just $5 a month. Embrace the hyperlink. Get A Fine Start",
		"keywords": ["bookmark","chrome","extension","firefox","google","brettterpstra","chrome","either","embrace","firefox","hyperlinks","safari","thanks","afinestart","again","almighty","awesome","between","bookmarks","brett","brettterpstra","browser","browsers","class","content","control","convenient","custom","deserves","destination","effective","extension","feels","focuses","gives","group","height","hosted","however","https","hyperlink","image","inspirational","links","loading","makes","mdash","media","modern","nofollow","noscript","optional","original","password","photos","picture","pristine","quotes","required","right","sanctuary","screenshot","simple","source","space","sponsoring","srcset","supports","syncing","textual","title","tomfoolery","unimpeded","upgrade","uploads","users","using","version","whatever","where","whims","widgets","width","wouldn"]
	},{
		"title": "Some updates for howzit, Markdown notes for your projects",
		"url": "/2021/05/17/some-updates-for-howzit/",
		"tags": ["howzit","markdown"],
		"date": "May 17<span>th</span>, 2021",
		"ts": "1621256400",
		"summary": "I wrote a tool called howzit a while back. It allows you to keep track of all of the build tools and procedures for any project in a Markdown file, and easily reference topics in your terminal with a command like . Over time it became a task runner, too, and eventually I even had it updating my MacBook Pro&rsquo;s Touch Bar with available tasks as I changed directories. It&rsquo;s definitely become part of my development toolkit. I recently added a few new features to it that I thought made it worth mentioning again. Let me start by saying this, though: if you&rsquo;re mostly looking for a good task runner, there are some great projects like mask and maid that you should also check out. Howzit really focuses on being an easy-to-reference notepad. That said, its capabilities as a task runner are also pretty complete. Howzit now allows default configuration options to be stored in a config file. It writes the defaults to , which can be easily opened in your editor by running . All of the command line flags that modify how output is displayed can be adjusted in that file. Next, you can now use code blocks within your notes and make them executable. Just include a fenced code block with the language : It will display as formatted code when you view your notes on the command line, but will execute as a script if you run with . When you run and specify a topic to display, it uses partial matching to display the nearest match to your argument. So would display the section titled \"Deploy.\" Now you can change the configuration option to , , , or . Fuzzy matching gets a bit over-eager if you have a lot of topic titles containing the same characters, but can be a nice shortcut, allowing to match \"Build.\"",
		"keywords": ["runner","blocks","build","config","deploy","fuzzy","howzit","macbook","markdown","matching","options","topic","touch","added","adjusted","again","allowing","allows","argument","available","became","block","blocks","build","called","capabilities","change","changed","characters","check","command","config","configuration","containing","default","defaults","definitely","development","directories","display","displayed","eager","easily","editor","eventually","executable","execute","features","fenced","flags","focuses","formatted","great","howzit","language","learn","looking","match","matching","mentioning","modify","mostly","nearest","notepad","notes","opened","options","output","partial","procedures","project","projects","recently","rsquo","runner","running","saying","script","section","shortcut","specify","stored","tasks","terminal","thought","titled","titles","toolkit","tools","topic","topics","track","updating","while","within","worth","writes","wrote"]
	},{
		"title": "Just a SearchLink fix",
		"url": "/2021/05/15/just-a-searchlink-fix/",
		"tags": ["bookmarking","hookmark","macos","search","searchlink","service"],
		"date": "May 15<span>th</span>, 2021",
		"ts": "1621054800",
		"summary": "I noticed last week as I was working on show notes for Overtired #238 that SearchLink was returning raw search urls instead of the results I expected. I didn&rsquo;t have time to look at it until this weekend, so I finished the show notes jumping back and forth between my editor and my web browser, like some kind of primitive beast. I think I have it sorted now, though, and I just published version 2.2.17 which should fix the issue. Download below or visit the project page. If you have no idea what I&rsquo;m talking about but do any writing for the web, do yourself a favor and check it out. I even made some tutorials for you. Out of all the tools I&rsquo;ve created, it&rsquo;s among my most loved. Like top three. Maybe top two. I&rsquo;ll be honest, it might just be my favorite1. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip; If you&rsquo;re curious: something changed in the way DuckDuckGo&rsquo;s nginx server responds to header requests, so the line wasn&rsquo;t showing up in a request. Which is baffling. It threw a error every time I tried to (follow redirects and return headers), yet would redirect properly if I left the (return just response headers) out. So now SearchLink is doing a full download of the destination page just to get the location headers, but it works. (Hopefully someday there will be a search engine with an actual API that doesn&rsquo;t require all of this hacking. Google used to have one but they canned it years ago and made scraping impossible. DuckDuckGo puts up with scraping, for now, but I really do hope they offer an actual search API someday, like they do with Instant Answers.) Since we&rsquo;re talking SearchLink, I&rsquo;d like to point out a feature I added a while back but hadn&rsquo;t used all that much until recently. If you add your Pinboard API key in the config file, you can search your Pinboard bookmarks and insert the URL for the top match with the search type. I&rsquo;ve been using this more as of late because Hook can now create a private Pinboard bookmark every time you hook a web page (or even just copy a Hook link). So now any time I hook a page that I know will be of interest in the future, it&rsquo;s readily available to my SearchLink searches, offering a nice, finite set of possibilities that all but guarantees I&rsquo;ll get the URL I was hoping for&hellip;",
		"keywords": ["duckduckgo","macos","search","answers","bunch","changelog","donate","download","duckduckgo","google","gritty","hopefully","instant","markdown","marked","maybe","nitty","overtired","pinboard","published","searchlink","searches","since","tuvbv&#39;","updated","added","among","available","background","backlink","baffling","beast","because","below","between","bookmark","bookmarks","brettterpstra","browser","bunchapp","canned","changed","changelog","check","child","class","config","cover","create","created","curious","description","destination","dlbox","doesn","doing","donate","download","duckduckheader","editor","endnotes","engine","error","expected","fathom","favor","favorite","feature","finished","finite","fnref","footnote","footnotes","format","forth","github","gradient","gritty","guarantees","hacking","header","headers","height","hellip","highlighter","honest","hookproductivity","hoping","https","illegal","image","impossible","information","interest","jumping","language","latest","leaving","linear","links","loading","location","loved","marked","match","media","missing","nginx","nitty","noscript","noteref","notes","noticed","nvultra","nvultra","offer","offering","onclick","original","overtiredpod","picture","pinboard","plaintext","point","possibilities","primitive","private","project","projects","properly","published","readily","recently","redirect","redirects","releases","repeat","requests","responds","response","results","return","returning","reversefootnote","rouge","rsquo","scraping","search","searches","searchlink","series","server","showing","someday","sorted","source","srcset","style","talking","think","threw","thumbnail","title","tools","trackgoal","tried","ttscoff","tutorials","updated","uploads","using","version","visit","weekend","while","width","working","works","writing","years"]
	},{
		"title": "Catching up with progress",
		"url": "/2021/05/13/catching-up-with-progress/",
		"tags": ["blogging","jekyll","macos","personal","plugin","scripting"],
		"date": "May 13<span>th</span>, 2021",
		"ts": "1620947880",
		"summary": "Well, I finally updated the Jekyll instance that runs this blog. If everything went to plan, this post will be the inauguration of a new era. One that looks a lot like the last era, hopefully. My Jekyll install had been stuck in about 2012 because a lot of the custom plugins I&rsquo;d written over the years required very specific versions of various libraries, and it was working, so it got left alone. Then I got an M1 Mac mini, and my very specific requirements became impossible. Much of the transition to Apple Silicon is easy, thanks to most developer&rsquo;s readiness1 combined with Rosetta and Universal Binary, but anyone who spends time on the command line will know that things are a little stickier once you get into your shell. After wrestling with Mackup, , and dotbot for a weekend, I got things mostly working. The Homebrew community has done a great job of updating brew formulae for ARM compilation, and I only had trouble with about 3% of my (fairly large) Brewfile when I installed it on the M1. (It does, however, install everything to instead of , so I had to update a few scripts here and there where I&rsquo;d hardcoded paths. But easy enough.) However, Node and Ruby are a little bit stickier. If you want the latest versions of either, no problem, the edge builds are fine on ARM. But if you need, say, Node 10 and Ruby 2.6.5 for something (like this blog), you&rsquo;re in trouble. You can kind of work around the Node issue by launching Terminal (or iTerm) using Rosetta (Get Info -> Open Using Rosetta) and using the command to fake an Intel machine, but no such luck with Ruby. Big Sur on the M1 ships with Ruby 2.6.3. If you want to use another version, you can install 3.0.1. That&rsquo;s it. That&rsquo;s all that will actually build. So I&rsquo;ve been updating everything to use newer versions of the various tools. The last thing that was keeping me from letting go of my Intel MacBook Pro was this blog. (Well, that and Izotope plugins for Logic Pro X. I really miss the RX plugins &mdash; which crash Logic on the M1 &mdash; and hope they get their act together soon.) I spent the weekend rewriting Jekyll plugins, giving up a few that I didn&rsquo;t really need anymore, and revamping some templates and scripts as needed to work with Jekyll 4. I have a 2012 Mac mini that actually handles the final build/deploy of this site (I needed an always-on machine to handle post scheduling hackery). It takes that machine about 30 minutes to render this&hellip;",
		"keywords": ["apple","computers","homebrew","macintosh","macos","rosetta","apple","binary","brewfile","bunch","everything","homebrew","however","intel","izotope","jekyll","logic","macbook","mackup","marked","oracle","rosetta","running","silicon","terminal","universal","using","account","again","alone","amiss","another","anymore","anyone","backlink","became","because","brettterpstra","broke","build","builds","bundle","changes","class","command","community","compilation","consider","contact","corporate","crash","crazy","create","custom","dating","deploy","developer","dotbot","either","endnotes","enough","everything","fairly","finally","fnref","footnote","footnotes","formulae","forthcoming","giving","gotten","great","hackery","handle","handles","hardcoded","haven","height","highlighter","homebrew","hopefully","however","https","iterm","image","impossible","inauguration","indexes","install","installed","instance","keeping","language","latest","launching","letting","libraries","library","little","loading","local","looking","looks","machine","mdash","media","miniheader","minutes","mostly","myriad","needed","newer","noscript","noteref","original","paths","picture","plaintext","plugins","posts","problem","projects","readiness","realize","related","required","revamping","reversefootnote","reverted","rewriting","rouge","rsquo","scheduling","scripts","search","seconds","seems","shell","shenanigans","ships","source","specific","spends","spent","squeezed","srcset","started","stickier","stuck","stuff","takes","templates","thanks","thoroughly","title","together","tools","transition","trouble","updated","updates","updating","uploads","using","various","version","versions","vital","weekend","where","whole","width","working","wrestling","written","wrote","years"]
	},{
		"title": "PDFpen: for all your PDF needs",
		"url": "/2021/05/13/pdfpen-for-all-your-pdf-needs/",
		"tags": ["sponsor"],
		"date": "May 13<span>th</span>, 2021",
		"ts": "1620910800",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! If you&rsquo;re searching for a powerful PDF editing tool for your Mac, iPad, or iPhone, look no further than PDFpen. Whether you&rsquo;re on the road or at your desk, need advanced editing features or just want to sign and email back a contract, PDFpen has you covered. All of this comes standard in PDFpen. PDFpenPro takes it even further to allow you to add permissions, turn websites into PDFs, and even integrate with DocuSign to sign or send documents easily and securely. PDFpen and PDFpenPro work with PDFpen for iPad & iPhone for seamless editing across devices with cloud services such as iCloud, Dropbox, Google Drive, OneDrive, and more",
		"keywords": ["cloud","dropbox","icloud","smile","storage","annotations","brettterpstra","docusign","document","drive","dropbox","google","learn","onedrive","pdfpen","pdfpenpro","password","redact","thanks","across","advanced","allow","allows","basics","cloud","comes","compression","contract","covered","devices","documents","easily","editing","email","features","forms","icloud","iphone","integrate","permissions","powerful","protected","rsquo","seamless","searching","securely","sensitive","services","sponsoring","standard","takes","today","typos","websites"]
	},{
		"title": "Web Excursions for April 28, 2021",
		"url": "/2021/04/28/web-excursions-for-april-28-2021/",
		"tags": ["bookmarks"],
		"date": "Apr 28<span>th</span>, 2021",
		"ts": "1619614800",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. This is a very developer-centric excursions post. I spent too long looking at git utilities this week, so you get a bunch of links to cool git stuff I found. If you are, somehow, a developer who doesn&rsquo;t care about git, be sure to check out the last link anyway. dandavision/delta I&rsquo;ve been using diff-so-fancy with git for a long time, but recently discovered delta. It does way more, with in-line diffs, side-by-side view, and themed output. It even makes copying text out of a diff easier by removing the +/- by default. Git Town A set of git utilities that works on top of your favorite workflow (e.g. git-flow) and provides high-level (but simpler) commands for creating and shipping feature branches. I especially like for updating your working feature branch with all changes from the develop branch and updating remotes in one command. sobolevn/git-secret: A bash-tool to store your private data inside a git repository. A git command that allows you to store secret information (credentials, etc.) as encrypted files in a repo. Automates ignoring the original and adding an encrypted copy. Allow others access based on public PGP keys. MichaelMure/git-bug Distributed, offline-first bug tracker embedded in git, with bridges for major bug tracking apps (GitHub, Gitlab, Jira, Launchpad). Stores tickets as git objects that can move with a repo without affecting history. It even has a GUI for terminal and a web view. Mac Dev Survey 2021 Results The new Mac Dev Survey results are out. Turns out I&rsquo;m in some smaller segments these days (I still use Sublime and everyone else uses VS Code). Fun results to look at, though (at least for devs). Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["control","version","allow","automates","check","distributed","github","gitlab","launchpad","michaelmure","mindmeister","results","stores","sublime","survey","turns","access","adding","affecting","allows","anyway","based","boosting","brainstorming","branch","branches","bridges","brought","bunch","centric","changes","check","collaborating","collaborative","command","commands","copying","creating","credentials","dandavision","default","delta","develop","developer","diffs","discovered","doesn","easier","embedded","encrypted","especially","everyone","excursions","fancy","favorite","feature","files","first","found","history","ignoring","information","inside","level","links","looking","major","makes","mapping","objects","offline","original","others","output","partnership","private","productivity","provides","public","recently","remotes","removing","repository","results","rsquo","secret","segments","shipping","simpler","smaller","sobolevn","software","somehow","spent","store","stuff","terminal","themed","tickets","tracker","tracking","updating","using","utilities","workflow","working","works"]
	},{
		"title": "Peek brings text selection back to Quick Look (+Giveaway)",
		"url": "/2021/04/27/text-selection-in-quick-look-with-peek/",
		"tags": ["extension","macos","quicklook"],
		"date": "Apr 27<span>th</span>, 2021",
		"ts": "1619539740",
		"summary": "There used to be a defaults write trick that would allow you to select text in Quick Look previews, but Apple curtailed it back in 2015. Since then, dragging your cursor on any Quick Look plugin just moves the window. No selection possible, and thus no copy paste from the preview. Enter Peek, an $8 macOS extension that brings back text selection in Quick Look, at least for source code and Markdown files (which it also syntax highlights and renders, respectively). Both of the latter features do have free alternatives, so the primary draw here is text selection. That, and having your syntax highlighting and Markdown rendering all in one plugin. In addition to working in Finder, Peek includes support for HoudahSpot, Path Finder and Forklift. While I have some guesses, I don&rsquo;t know exactly how Peek is working this magic. All I know is that I&rsquo;ve really missed text selection in Quick Look, and Peek has solved it. (I&rsquo;ll also mention that I had some weirdness on my machine that ultimately had nothing to do with Peek, but the developer spent a good week helping me track down the problem. ★★★★★ Great support.) I have 10 copies of Peek to give away to BrettTerpstra.com readers. Sign up below to enter the drawing. Winners receive a Mac App Store promo code for Peek, value $8 US. Ten winners will be picked at random on Friday, April 30th at 12PM Central. Entering a giveaway does not subscribe you to any newsletters. If you&rsquo;d like to get occasional announcements, special offers, and whatever else I come up with, please sign up for the BrettTerpstra.com mailing list separately. Sorry, this giveaway has ended. If you can&rsquo;t wait to get your text selection back, check out Peek today",
		"keywords": ["markdown","quick","selection","apple","brettterpstra","central","enter","entering","finder","forklift","friday","great","houdahspot","markdown","quick","since","sorry","store","while","winners","allow","alternatives","announcements","below","bigzlabs","binarynights","brettterpstra","brings","check","class","cocoatech","copies","cursor","curtailed","defaults","developer","dragging","drawing","ended","enter","extension","features","files","giveaway","guesses","having","height","helper","helping","highlighting","highlights","houdah","houdahspot","https","image","includes","latter","loading","macos","machine","magic","mailing","media","mention","missed","moves","newsletters","noscript","nothing","occasional","offers","original","paste","picked","picture","plugin","possible","preview","previews","primary","problem","promo","random","readers","receive","rendering","renders","respectively","rsquo","selection","separately","solved","sorry","source","special","spent","srcset","subscribe","support","syntax","title","today","track","trick","uploads","value","weirdness","whatever","width","window","winners","working","write"]
	},{
		"title": "Hacking around with Marked's Streaming Preview",
		"url": "/2021/04/23/hacking-around-with-markeds-streaming-preview/",
		"tags": ["keyboard","keyboardmaestro","marked","scripting","writing"],
		"date": "Apr 23<span>rd</span>, 2021",
		"ts": "1619193780",
		"summary": "In the last Marked newsletter I wrote a bit about Marked&rsquo;s Streaming Preview, a feature of Marked that flew under the radar for a few years before starting to gain some traction. It&rsquo;s a special window (Preview->Streaming Preview) that watches a private clipboard for updates, updating the preview every time the clipboard contents change. All an app needs to do to interface with it is write Markdown content to the named clipboard, which is easily done from any Swift/Objective-C instance. Normally Marked watches files on the disk for changes, but this special window allows apps to update the preview in Marked without ever writing to disk, and with closer-to-live update speeds. Apps like Drafts, Bear, and The Archive have all implemented it with great results. (I even added some special processing for Bear users, so a majority of the Polar syntax translates to your live Marked 2 preview.) Because the only trick to using the Streaming Preview is to write to a clipboard, it&rsquo;s possible to do it in your own scripts as well. You just need to write to a pasteboard named \"mkStreamingPreview\" and Marked will do the rest. As an example, Bruno Conte created a Keyboard Maestro macro that will take any currently-selected text and update the Marked preview. Marked has a \"Preview Clipboard\" command, of course, but that requires copying the text, switching to Marked, and hitting ⇧⌘V &mdash; and it opens a new window every time. This macro means you can just select text and hit a keyboard shortcut to live-update the preview window from any application. Here&rsquo;s the Keyboard Maestro macro: Copy and Stream to Marked. In order to use it, you&rsquo;ll need Python&rsquo;s module installed, so if needed, open Terminal and run: . You can incorporate this kind of script in whatever tools you like. The macro also makes use of Marked 2&rsquo;s url handler for opening the Streaming Preview externally: just call . See the docs for more implementation details (including settings a base URL for relative paths). If you come up with cool new ways to use this, I&rsquo;d love to hear about it. And if you&rsquo;d like to see Marked&rsquo;s Streaming Preview integrated into your favorite app, just put the developers in touch with me! Want to get Marked tips (and special discounts) in your inbox? Sign up for the mailing list",
		"keywords": ["appkit","archive","because","bruno","clipboard","conte","copyandstreamtomarked","drafts","keyboard","maestro","markdown","marked","nspasteboard","normally","polar","preview","pyobjc","python","stream","streaming","swift","terminal","zlkngu","added","allows","apple","archive","assets","before","brettterpstra","change","changes","class","clearcontents","clipboard","closer","command","contact","content","contents","copying","created","decode","details","developers","discounts","easily","example","externally","favorite","feature","files","fortype","getdrafts","great","handler","height","highlight","highlighter","hitting","https","image","implementation","implemented","import","inbox","including","incorporate","install","installed","instance","integrated","interface","keyboard","language","ldquo","loading","macro","mailing","makes","marked","mdash","media","mkstreamingpreview","module","named","needed","needs","newsletter","nltpodhkcaiwfskgqdaj","noscript","opening","opens","original","pasteboard","pasteboardwithname","paths","picture","plaintext","possible","preview","private","processing","public","python","rnpdm","radar","rdquo","relative","requires","results","rouge","rsquo","script","scripts","selected","sendy","setstring","settings","shortcut","source","special","speeds","srcset","starting","stream","subscription","switching","syntax","title","tools","touch","traction","translates","trick","utuiibteq","under","updates","updating","uploads","users","using","watches","whatever","width","window","write","writing","wrote","years","zettelkasten"]
	},{
		"title": "Add form and function to your new tabs with A Fine Start [Sponsor]",
		"url": "/2021/04/15/add-form-and-function-to-your-new-tabs-with-a-fine-start/",
		"tags": ["browser","sponsor"],
		"date": "Apr 15<span>th</span>, 2021",
		"ts": "1618491600",
		"summary": "Thanks to A Fine Start for sponsoring BrettTerpstra.com this week! Think about how many new tabs you open in your browser every day. If you’re an internet junkie like me then it’s probably a lot. So they might as well look nice and be useful. A Fine Start combines minimalist design sensibility with brutalist utility. It gives you a list of links that turns your new tab into a chill portal to your internet world. Add as many or as few links as you want and group them how you see fit. A Fine Start is totally free to use in your favorite browser and your links are saved locally. There’s a handy import/export feature built right in so you can move your links around. If you would like to automatically sync your links between browsers and devices you can grab a premium sync account for just $5 a month, no password required",
		"keywords": ["bookmark","chrome","extension","firefox","google","brettterpstra","chrome","firefox","thanks","think","account","afinestart","automatically","between","bookmarks","brett","brettterpstra","browser","browsers","brutalist","built","chill","class","combines","content","design","devices","export","favorite","feature","gives","group","handy","height","https","image","import","internet","junkie","links","loading","locally","media","minimalist","nofollow","noscript","original","password","picture","portal","premium","required","right","saved","screenshot","sensibility","source","sponsoring","srcset","title","totally","turns","uploads","useful","utility","version","width","world"]
	},{
		"title": "Fixing the Big Sur proxy icon delay globally",
		"url": "/2021/04/14/fixing-the-big-sur-proxy-icon-delay-globally/",
		"tags": ["macos","terminal"],
		"date": "Apr 14<span>th</span>, 2021",
		"ts": "1618428360",
		"summary": "I had previously bemoaned the fact that the proxy icon is now hidden behind a hover delay in Big Sur. In that post, I mentioned that you could remove that delay in Finder using the command . But that only affects Finder, and you have to repeat it with various bundle identifiers for each app making use of the Big Sur toolbar layout. As far as I can tell, that seems to have done the trick. Just thought I&rsquo;d update with the new info. I&rsquo;ve updated the older post as well",
		"keywords": ["defaults","finder","proxy","finder","affects","behind","bemoaned","bundle","command","globally","hidden","hover","identifiers","layout","making","mentioned","older","previously","proxy","realized","remove","repeat","rsquo","seems","since","swoop","thought","toolbar","trick","updated","using","various"]
	},{
		"title": "Rewind: Quick reminders in Terminal",
		"url": "/2021/04/12/rewind-quick-reminders-in-terminal/",
		"tags": ["scripting","terminal"],
		"date": "Apr 12<span>th</span>, 2021",
		"ts": "1618243740",
		"summary": "I was browsing my gists recently and found one I&rsquo;d totally forgotten about, which is somewhat ironic given its purpose: scheduling short-term reminders with alarms from the Terminal. I posted it about it back in 2016, but eventually it fell into disuse, as a lot of my just-playing-with-an-idea scripts tend to. This one was actually pretty cool, though, and I&rsquo;ve started using it again. You just run something like in Terminal, and in 30 minutes, you get a reminder in the form of a \"ding\" and your computer saying \"Time to get ready for dinner.\" It has LaunchBar integration for large display text. I don&rsquo;t know why I ever decided that Bash scripting was the efficient way to write this one. It definitely isn&rsquo;t. But I stuck with it and updated it a little bit. You can now use \"at 3pm\" or \"at 10:30am\" type strings to set a specific time. The meridian (am or pm) is required. This only works within 24 hours of the current time. I also added an AppleScript if you don&rsquo;t have the LaunchBar integration enabled. Oh, and for some reason I thought it deserved smarter display of the time, so instead of \"in 128 minutes,\" it says \"in 2 hours 8 minutes\". Contrary to what I wrote in my original post on this, it will actually work fine if you quit the Terminal session you launched it in (assuming you didn&rsquo;t force it to run in the foreground, but why would you do that, really?). This little script really isn&rsquo;t meant to be used for much beyond a quick reminder within a few hours. I use it when I tell my girlfriend I just need to take care of a quick coding problem I thought of in the evening after I&rsquo;m supposed to be done for the day. \"I&rsquo;ll be back in 20 minutes, I promise.\" When I sit down I run and my Mac will make sure I&rsquo;m not a liar. You can find the updated script in the gist. Feel free to leave comments there if you think of additions or fixes it needs! By the way, I&rsquo;m using Fish as my shell these days, but this works fine as long as it has the shebang on the script",
		"keywords": ["applescript","comment","script","shebang","applescript","launchbar","terminal","added","additions","again","alarms","assuming","beyond","browsing","coding","comments","computer","decided","definitely","deserved","dinner","display","disuse","efficient","enabled","evening","eventually","fixes","force","foreground","forgotten","found","girlfriend","gists","hours","integration","ironic","launched","leave","little","meant","meridian","minutes","needs","original","playing","posted","problem","promise","quick","ready","recently","reminder","reminders","required","rsquo","saying","scheduling","script","scripting","scripts","session","shebang","shell","short","smarter","somewhat","specific","started","strings","stuck","supposed","think","thought","totally","updated","using","within","works","write","wrote"]
	},{
		"title": "Improve your PDF workflow with PDFpen [Sponsor]",
		"url": "/2021/04/08/improve-your-pdf-workflow-with-pdfpen-sponsor/",
		"tags": ["sponsor"],
		"date": "Apr 8<span>th</span>, 2021",
		"ts": "1617886800",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com again this week! PDFpen is truly the ultimate tool for everything you need to do with PDFs, and I highly recommend it. Does your current PDF editor allow you to secure documents? Perform OCR? Fill out and sign forms? Do all of this on the go and at a low cost? PDFpen does. Improve your workflow and productivity Add signatures, text, and images Make changes and correct typos And the ultimate tool for editing PDFs on the Mac now includes even more powerful features including page label support in multiple formats for documents. And Pro users can go a step farther with the ability to add or edit page labels. That’s in addition to the great features available in PDFpen 12, including: PDFpen and PDFpenPro work with PDFpen for iPad & iPhone for seamless editing across devices with cloud services such as iCloud, Dropbox, Google Drive, OneDrive, and more. Learn more about PDFpen and PDFpenPro at pdfpen.com",
		"keywords": ["pdfpen","smile","brettterpstra","customizable","drive","dropbox","google","improve","learn","magnifier","onedrive","pdfpen","pdfpenpro","stationery","thanks","window","ability","across","again","allow","allows","available","brettterpstra","changes","class","cloud","colors","compression","custom","designs","devices","document","documents","editing","editor","everything","farther","features","formats","forms","great","height","highly","https","icloud","iphone","image","images","includes","including","iphone","label","labels","loading","media","multiple","nofollow","noscript","original","paper","pdfpen","picture","podcast","powerful","productivity","recommend","seamless","secure","services","settings","signatures","source","sponsoring","srcset","support","title","truly","typos","ultimate","uploads","users","width","workflow"]
	},{
		"title": "Scripting with sudo on Mac",
		"url": "/2021/04/06/scripting-with-sudo-on-mac/",
		"tags": ["macos","scripting","security","tools"],
		"date": "Apr 6<span>th</span>, 2021",
		"ts": "1617742440",
		"summary": "The gist is this: when you need to script a tool that requires administrator privileges, you want to make the process as automated as possible without creating glaring security problems (like including a password in plain text). An example of why you&rsquo;d want to do this would be the command line utility, which allows you to perform Time Machine tasks from the command line. But the and commands require to work, so pausing Time Machine from a script isn&rsquo;t as easy as just running . You&rsquo;d either have do some terribly insecure things to , or store your Mac&rsquo;s most valuable password in plain text in a script. Neither option is good. Fortunately, macOS has tools built in to make this work. We&rsquo;ll use a combination of macOS&rsquo;s and the command to make running superuser tasks both convenient and secure. Side note: 1Password has a command line tool that can do something very similar to this, but it requires signing in on the command line. The method below allows you to have a script run in the background, only popping up a password dialog when needed. The macOS Keychain is where all of your logins and certificates are stored for everything on your Mac. It&rsquo;s encrypted and secure, storing everything behind a single password. You have to unlock it (enter your password) at intervals, but once it&rsquo;s unlocked, every app that needs to access an account can pull the credentials it needs from it quietly. You use it every day, even if you&rsquo;re not directly aware of it. The Keychain is the center of this tip. We&rsquo;re going to use it to store the password for our user, and then use command line tools to access that password, never having to store it in plain text. If your Keychain locks, you&rsquo;ll be asked to enter a password, but whenever it&rsquo;s already unlocked (which happens any time any app needs credentials), we&rsquo;ll be able to retrieve it silently. The first step is to create a Keychain entry for the password you want to use. In our case, this will be your system password. Open Keychain Access in /Applications/Utilities. Unlock your keychain if needed, then click the \"Create new\" button in the toolbar. Give the item a unique name, any account name you want, and then enter the password and click \"Add.\" Note that you can right click on the login toolchain in the left sidebar and use Change Settings&hellip; to tell it how long to remain unlocked after entering your password. If your Mac is private&hellip;",
		"keywords": ["keychain","login","password","superuser","access","adding","allow","applications","bunch","change","command","create","entry","fortunately","keychain","machine","neither","password","stdin","settings","unlock","using","utilities","access","accessed","account","administrator","advanced","allow","allows","asked","asking","assigned","automated","avoid","aware","background","behind","below","built","button","center","certificates","check","click","combination","command","commands","convenience","convenient","create","creating","credentials","cribbing","dialog","directly","disable","either","encrypted","enough","enter","entering","entry","everything","example","first","generally","generous","getting","glaring","going","happens","having","hellip","including","incorporate","insecure","interaction","intervals","keychain","label","locked","locks","logged","login","logins","macos","method","needed","needs","newline","obvious","overly","password","pausing","popping","possible","private","privileges","problems","process","prompt","quietly","realized","requires","retrieve","retrieved","return","right","rsquo","running","script","scripting","secure","security","shell","sidebar","signing","silently","similar","single","sleeping","spits","store","stored","storing","superuser","system","tasks","tells","terribly","timeout","toolbar","toolchain","tools","unique","unlock","unlocked","useful","using","utility","valuable","variable","whenever","where","worth","worthwhile","writing"]
	},{
		"title": "A GitHub Stars widget for WordPress",
		"url": "/2021/04/02/a-github-stars-widget-for-wordpress/",
		"tags": ["wordpress","developer","github","wordpress"],
		"date": "Apr 2<span>nd</span>, 2021",
		"ts": "1617397080",
		"summary": "Backstory: my co-host on Overtired, Christina Warren, has a constantly growing collection of repositories she&rsquo;s starred on GitHub. As a developer advocate for a Big Tech company, she always keeps her finger on the pulse of the new and cool developer stuff, and her stars serve as a curated list of \"projects to watch.\" It came up on an episode a while ago, and I decided we should have a way to display the latest ones. The Overtired site uses WordPress, so even though I&rsquo;m not doing a lot of WordPress development these days, I figured I&rsquo;d dust off my PHP skills and whip up a plugin for this. It&rsquo;s pretty barebones, but it does the job, and you can plug in any username to get their latest stars as a widget. You can see it in action on overtiredpod.com, all the way down in the footer. I actually have never tried it as a sidebar widget, but it&rsquo;s really simple markup and I&rsquo;m just assuming it will work. As with a lot of my little side projects, this one has a finite audience. A convergence of GitHub users who think their stars are worth sharing and happen to be running a WordPress blog. If that describes you, I have just the thing. Check out the project page for more details. I doubt this will ever see many updates, but it&rsquo;s tested with WP 5.7 and should be good for the foreseeable future. WordPress GitHub Stars Widget v1.0.1 Download WordPress GitHub Stars Widget v1.0.1 A WordPress widget to display your GitHub stars Published 04/02/21. Updated 03/24/22. Changelog Donate &bull; More info&hellip; (I would add this to the WordPress plugin directory for fun, but you still have to set everything up in Subversion and I don&rsquo;t even have installed these days, let alone remember how to use it. If it were a bigger project, I might consider it, but it&rsquo;s just not worth it.)",
		"keywords": ["automattic","github","software","stars","widget","backstory","changelog","check","christina","donate","download","github","overtired","published","stars","subversion","updated","warren","widget","wordpress","action","advocate","alone","assuming","audience","barebones","bigger","collection","company","consider","constantly","convergence","curated","decided","describes","details","developer","development","directory","display","doing","doubt","episode","everything","figured","finger","finite","footer","foreseeable","growing","happen","hellip","installed","keeps","latest","little","markup","overtiredpod","plugin","project","projects","pulse","remember","repositories","rsquo","running","serve","sharing","sidebar","simple","skills","starred","stars","stuff","tested","think","tried","updates","username","users","watch","while","widget","worth"]
	},{
		"title": "Loopback: powerful audio routing for Mac, no cables required [Sponsor]",
		"url": "/2021/04/01/loopback-powerful-audio-routing-for-mac-no-cables-required/",
		"tags": ["macos","sponsor"],
		"date": "Apr 1<span>st</span>, 2021",
		"ts": "1617282000",
		"summary": "Thanks to Loopback and Rogue Amoeba for sponsoring BrettTerpstra.com this week! When I first tried out Loopback I was immediately astounded by what it could do for me. With my current audio setup &mdash; two external audio interfaces with a combination of 8 inputs and 6 outputs &mdash; routing was a necessity. A few virtual Loopback devices and I haven&rsquo;t had to think about what was going where ever since, whether in Skype, Zoom, Logic, or just listening to music. Not to mention routing for audio in all my apps (including my bootstrapped Stream Deck soundboard). I&rsquo;m a very happy, very impressed user. With Loopback, it&rsquo;s trivial to pass audio from one application to another on your Mac. Need to play a recording into Zoom? Add sound effects into a podcast? Include music in a streamed event? Loopback gives you the power to do just that with just a few clicks. It’s like a high-end mixing board, right inside your Mac. Loopback creates virtual audio devices which merge audio from multiple applications and input devices into a single source. These virtual devices appear on your Mac just like a real, physical device, and can be selected for use in any audio app on your Mac. It’s incredibly powerful. Fortunately, it’s also incredibly easy to use. Loopback’s intuitive wire-based setup makes it easy and obvious to understand exactly how your virtual devices work. Configure, adjust, and experiment, just by clicking and dragging. Whether you’re a podcaster, a live performer, a tabletop gamer, or even just someone stuck on too many Zoom calls, Loopback can help you. Check out Loopback today with a free trial. Through April 30, BrettTerpstra.com readers can save 21% with coupon code ",
		"keywords": ["amoeba","apple","audio","device","macos","rogue","amoeba","brett","brettterpstra","check","configure","fortunately","logic","loopback","rogue","skype","stream","thanks","through","adjust","another","appear","applications","astounded","audio","based","board","bootstrapped","brett","brettterpstra","brettzoom","calls","class","clicking","clicks","combination","coupon","creates","device","devices","dragging","effects","experiment","external","first","gamer","gives","going","happy","haven","height","highlighter","https","image","impressed","including","incredibly","input","inputs","inside","interfaces","intuitive","language","listening","loading","loopback","makes","mdash","media","mention","merge","mixing","multiple","music","necessity","nofollow","noscript","obvious","original","outputs","performer","physical","picture","plaintext","podcast","podcaster","powerful","readers","recording","right","rogueamoeba","rouge","routing","rsquo","selected","sentby","setup","since","single","sound","soundboard","source","sponsor","sponsoring","srcset","streamed","stuck","tabletop","think","title","today","trial","tried","trivial","understand","uploads","virtual","where","width"]
	},{
		"title": "SearchLink gets a bit more social",
		"url": "/2021/03/31/searchlink-gets-a-bit-more-social/",
		"tags": ["macos","searchlink","service"],
		"date": "Mar 31<span>st</span>, 2021",
		"ts": "1617223920",
		"summary": "I was working on Systematic show notes today and, as always, making good use of SearchLink for quickly adding links to my notes. Then I ran into a LinkedIn handle and decided I needed a faster way to do that. Fast forward an hour. Yes, I could have opened a browser, searched for the username, and copied the url 120 times in the time it took me to do this, but next time it&rsquo;s going to be a cinch. For a while now SearchLink has had the ability to turn into , but not many other services, and that shorthand version only worked with Twitter. So, as of 2.2.16, you can now type and get or and get . The services handled are Twitter (), Facebook (), Instagram () and LinkedIn (). These work as above in single-line searches, or using the full syntax like , which is replaced with . The format of the linked text can be defined in your configuration file. The configuration option is and uses the placeholders , , and . You can combine these any way you like. As you can see in the examples above, my template is set to use an abbreviated url, e.g. . You can easily make them look like \"ttscoff on Instagram\" or \"Instagram/ttscoff\" with the placeholders. See the docs for details. It&rsquo;s a minor update, but as someone who interviews a lot of people, I&rsquo;m constantly turning handles into links for show notes. This saves me a bunch of steps, so I&rsquo;m not ashamed. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip; P.S. TextBuddy Stuff An addendum because it&rsquo;s so simple it doesn&rsquo;t deserve its own post&hellip; I added another TextBuddy script that takes a bunch of methods in an Objective-C implementation file and turns them into declarations to stick in your interface. Basically just turns: It&rsquo;s another one that there used to be an Xcode plugin for and I missed it",
		"keywords": ["action","instagram","linkedin","productivity","quick","twitter","changelog","donate","download","facebook","github","instagram","linkedin","markdown","published","searchlink","stuff","systematic","textbuddy","twitter","updated","xcode","abbreviated","ability","above","added","addendum","adding","another","ashamed","because","browser","bunch","cinch","collection","configuration","constantly","copied","decided","declarations","defined","deserve","details","doesn","easily","editor","examples","faster","format","going","growing","handle","handled","handles","hellip","implementation","interface","interviews","leaving","linked","links","making","methods","minor","missed","needed","notes","opened","people","placeholders","plugin","quickly","replaced","rsquo","saves","script","scripts","searched","searches","services","shorthand","simple","single","slowly","steps","stick","syntax","takes","template","times","today","ttscoff","turning","turns","username","using","version","while","worked","working"]
	},{
		"title": "Mind Maps and Marked 2",
		"url": "/2021/03/29/mind-maps-and-marked-2/",
		"tags": ["markdown","marked","mindmapping","tools","writing"],
		"date": "Mar 29<span>th</span>, 2021",
		"ts": "1617038700",
		"summary": "I know mind mapping isn&rsquo;t for everybody, but if it&rsquo;s for you, I&rsquo;d like to remind you that Marked 2 works with some of the major Mac mind mapping apps, bringing mind mapping, markdown, and writing together for some amazing workflows. I&rsquo;ve written about all of these integrations individually before, but it&rsquo;s been a while and I&rsquo;ve had enough people seem shocked to find out about Marked&rsquo;s mind map capabilities that it seemed like a good idea to put the info out there again. This was originally written as a newsletter for Marked subscribers, but it got longer than any email I&rsquo;d ever want to receive, so I&rsquo;m turning it into a blog post for everybody. If you&rsquo;d like to stay up to date on Marked 2, please do sign up for the mailing list. It offers tips, tricks, and news, as well as special discounts on my various apps and products. (If you run popup blockers, the \"Marketing Consent\" field might not appear. If you get a \"Consent not given\" error, please reload the page without blockers and check the box. GDPR stuff&hellip;) I use mind maps whenever I&rsquo;m planning out a project or a longer writing piece (in fact, I&rsquo;m using one for this blog post). When I&rsquo;m writing, I put the general focus of the piece at the center, then use the first level of child nodes to define the headlines that will break the piece up. Each headline gets related topic ideas. I can even start writing out paragraphs (in Markdown, of course) in the notes for each node. Starting my writing out this way lets me easily restructure and re-order as I start to get all of the ideas and thoughts out of my head. I can just \"dump\" them out onto the screen and let the organization happen as it makes sense. I don&rsquo;t have to have a structure in mind when I start. Want to see the a draft of this piece as a mind map? Check it out here. I exported to MindMeister for easy sharing, but it was all thought out in iThoughtsX as shown in the image above. Two great apps for mind mapping on the Mac are iThoughtsX and MindNode (both also available through a Setapp subscription). And, great news, Marked works with both of these apps. You can open their maps directly in Marked and the preview will refresh every time you save your work. Start your writing project in a mind map and keep track of how it&rsquo;s coming together with Marked. You get all of Marked&rsquo;s writing tools, including spell check, text analysis, and&hellip;",
		"keywords": ["languages","lightweight","markdown","markup","outline","outliner","advanced","american","association","banner","beauty","change","check","consent","decimal","hopefully","images","layout","markdown","marked","marketing","mindmeister","mindnode","notes","outline","preferences","preview","psychological","refresh","screenshot","setapp","share","starting","style","thinking","typography","using","workflow","zlkngu","above","added","again","allowing","allows","almost","amazing","appear","applied","automatically","available","beauty","before","below","beyond","blockers","brainstorming","break","brettterpstra","bring","bringing","bulleted","ciybfxtb","cancel","capabilities","center","change","changing","check","child","children","choice","choose","class","collapse","combination","coming","commonly","contents","decimal","default","define","detailed","developed","dialog","directly","discounts","display","displayed","document","draft","easily","editable","email","enough","error","everybody","export","exported","extension","extensions","faster","field","filename","files","first","fleshing","focus","forget","format","formats","general","great","happen","headline","headlines","height","hellip","highlighter","https","ithoughts","ithoughtsx","ideas","ignore","image","import","included","including","indented","individually","initialize","inspires","integration","integrations","items","ithoughts","ithoughtsx","language","ldquo","letters","level","levels","lists","loading","longer","lower","mailing","major","makes","mapping","markdown","marked","mdash","media","mentioned","mindmap","mindnode","modes","modify","newsletter","nltpodhkcaiwfskgqdaj","nodes","noscript","notes","numerals","nvultra","offers","organization","original","originally","outline","outliner","palette","papers","paragraphs","people","picture","piece","plaintext","planning","point","popup","prefer","preferred","prepare","press","preview","previously","products","project","projects","proxy","questions","rnpdm","rdquo","ready","receive","refresh","regular","related","reload","remind","restructure","right","roman","rouge","round"]
	},{
		"title": "Prettier comments for flags and switches",
		"url": "/2021/03/26/prettier-comments-for-flags-and-switches/",
		"tags": ["comments","developer","service","terminal"],
		"date": "Mar 26<span>th</span>, 2021",
		"ts": "1616766480",
		"summary": "A buddy of mine is ramping up his command-line fu lately. He&rsquo;s a thorough notetaker, and he&rsquo;s taken to commenting his shell code immaculately. I applaud this. He mentioned that he really liked this particular formatting for describing what each flag/switch in a command does: I dug it, but my first though was how tedious it would be to type out, even with handy TextExpander snippets. So I made a thing. A silly little thing of limited utility, to be sure. But a thing. The \"Comment Flags\" Service will simply scan a line for a grouping of characters following a dash, e.g. the \"ltr\" in . It will then output a \"diagram\" for comments like what you see above (minus the actual comments), ready to be filled in. It will work for multiple groupings (or even multiple single flags). For example, it provides this, ready for all the explaining: It ignores long flags. They&rsquo;re more descriptive anyway, but I might add some formatting for those in the future. Figured I&rsquo;d share this, just in case it scratches anyone else&rsquo;s itch. Comment Flags Service v1.0.1 Download Comment Flags Service v1.0.1 A Service to make pretty comments for switches/flags in command line examples Published 03/25/21. Updated 12/31/22. Changelog Donate &bull; More info&hellip; By the way, TextBuddy (this week&rsquo;s gracious sponsor) can run Services now. That means things like this Service, all of the Markdown Service Tools, and even SearchLink can all work in TextBuddy from a single popup palette alongside its own extensive toolset. It&rsquo;s a secret setting you have to enable from Terminal, but if you&rsquo;re curious scroll down this page a bit. You know, to the part where Tyler says in 21pt type \"Please Don&rsquo;t Tell Anyone About This&hellip;\"",
		"keywords": ["command","comment","anyone","changelog","comment","donate","download","figured","flags","markdown","published","searchlink","service","services","terminal","textbuddy","textexpander","tools","tyler","updated","above","alongside","anyone","anyway","applaud","buddy","characters","command","commenting","comments","curious","describing","descriptive","diagram","example","examples","explaining","extensive","filled","first","flags","formatting","gracious","grouping","groupings","handy","hellip","ignores","immaculately","liked","limited","little","mentioned","minus","multiple","notetaker","output","palette","particular","popup","provides","ramping","ready","rsquo","scratches","scroll","secret","setting","share","shell","silly","simply","single","snippets","sponsor","switch","switches","taken","tedious","thorough","toolset","utility","where"]
	},{
		"title": "Beat your your text into submission with TextBuddy [Sponsor]",
		"url": "/2021/03/25/beat-your-your-text-into-submission-with-textbuddy-sponsor/",
		"tags": ["sponsor"],
		"date": "Mar 25<span>th</span>, 2021",
		"ts": "1616677200",
		"summary": "Thanks to TextBuddy for sponsoring BrettTerpstra.com this week! I have rapidly become a huge fan of this app and am honored to have them as a sponsor. If you read BrettTerpstra.com (hint: you’re reading it right now), then you’re almost certainly a fan of plain text. And, oh boy, do I have a plain text Mac app for you. Say hello to TextBuddy. It’s a Swiss Army knife for plain text that’s faster than your IDE and easier than the command line. TextBuddy is not for writing code, or editing Markdown, or managing a library of notes. Instead, the app offers over one hundred nerdy commands you can run with a single keyboard shortcut to edit, filter, transform, and manipulate plain text. You can also use the app to do crazy stuff like extract text from images and screenshots (OCR) or transcribe speech in audio and video files. And advanced users can write their own commands using JavaScript. If you frequently work with text that needs to be cleaned up, transformed, or manipulated, give TextBuddy a try. BrettTerpstra.com readers save 25% on TextBuddy using this special link. But, please, don’t share that top-secret link with anyone else on the internet",
		"keywords": ["macos","manipulation","markdown","services","textbuddy","tyler","brettterpstra","javascript","markdown","swiss","textbuddy","thanks","advanced","almost","anyone","audio","brettterpstra","capture","certainly","class","cleaned","command","commands","crazy","custom","discount","easier","editing","extract","faster","files","filter","height","hello","honored","https","hundred","image","images","internet","keyboard","knife","library","loading","managing","manipulate","manipulated","media","needs","nerdy","nofollow","noscript","notes","offers","original","picture","pricing","promo","rapidly","readers","reading","right","screenshots","scripts","secret","share","shortcut","single","source","special","speech","sponsor","sponsoring","srcset","stuff","textbuddy","title","transcribe","transform","transformed","uploads","users","using","video","width","write","writing"]
	},{
		"title": "An overdue nvUltra update",
		"url": "/2021/03/23/an-overdue-nvultra-update/",
		"tags": ["developer","nvultra"],
		"date": "Mar 23<span>rd</span>, 2021",
		"ts": "1616522880",
		"summary": "I know we haven&rsquo;t been very regular with updates on nvUltra lately, and Fletcher and I wanted to give you a status report. Yes, it has taken much longer than initially predicted for a 1.0 release. The 1.0 feature set has grown in ways we didn&rsquo;t foresee and is now a more complete solution than it would have been, but that&rsquo;s taken some time. As the feature set grew, we&rsquo;ve also had to rethink some core components, in some cases completely rewriting them to ensure that future development is smooth and bug-free. For those not on the beta, recent updates have included back/forward history, saved search improvements, and a lot of refinements. Meanwhile, COVID-19 has impacted Fletcher&rsquo;s day job, and thus his development schedule, and he&rsquo;s had some events in his personal life that have been very important, but also time consuming. And nvUltra doesn&rsquo;t work without Fletcher, so his schedule affects timing. We&rsquo;ve recently elected to do a major reconfiguration of the underpinnings of nvUltra prior to release, a process we started last week and are making rapid progress on. We feel it&rsquo;s something that would be better to achieve while we&rsquo;re still in beta and have a large group of testers to help us catch new bugs that will likely come up. The end result will be a significantly faster, smoother experience that I think will be worth waiting for. We can&rsquo;t make any promises on timeline at this point, but despite this step back, we&rsquo;re still closer than we&rsquo;ve ever been to a shipped product. We hope to continue making rapid progress with the update over the next two weeks. Once the new build reaches rough feature parity with the current version, that will be pushed out to the beta testers to kick the tires and look for issues. If all goes well, at that point we&rsquo;ll be ready to add the final touches and prepare for release",
		"keywords": ["macos","notes","covid","fletcher","meanwhile","thanks","achieve","affects","build","catch","closer","completely","components","consuming","continue","development","doesn","elected","events","experience","faster","feature","foresee","group","grown","haven","history","impacted","important","improvements","included","issues","likely","longer","major","making","nvultra","parity","personal","point","predicted","prepare","process","product","promises","pushed","rapid","reaches","ready","recent","recently","reconfiguration","refinements","regular","release","report","rethink","rewriting","rough","rsquo","saved","schedule","search","shipped","significantly","smooth","smoother","solution","started","status","sticking","taken","testers","think","through","timeline","timing","tires","touches","underpinnings","updates","version","waiting","wanted","weeks","while","worth"]
	},{
		"title": "Web Excursions for March 18, 2021",
		"url": "/2021/03/18/web-excursions-for-march-18-2021/",
		"tags": ["bookmarks","macos","setapp"],
		"date": "Mar 18<span>th</span>, 2021",
		"ts": "1616072400",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Paletro — Command Palette in any applications A new app showed up on Setapp that has me pretty excited. Paletro adds a hotkey palette to any app for accessing all of the menu commands. It&rsquo;s superior to using Command-Shift-? (Help search) because it has full fuzzy matching and can access commands usually only exposed by holding down modifier keys. CleanShot X for Mac Ok, I didn&rsquo;t think I needed another screenshot/screen recording app, but holy cow. CleanShot X really nails it with minimal interface and robust functionality. I mean, edge detection when cropping is just the kind of attention to detail you can expect from this app. Scrolling screencaptures, animated GIF recording with keystroke and mouseclick overlays, full annotation tools&hellip; it&rsquo;s very complete. Oh, and it&rsquo;s also on Setapp. Sip - URL Schemes I&rsquo;m a big fan of Sip, an outstanding color picker for Mac. This tip will only be useful to a few people, but I was pleased to discover that they&rsquo;ve added a url scheme which, among other things, allows you to directly open the contrast checker with any two colors in HEX or RGBA format. Ok, that&rsquo;s 3 apps in a row from the Setapp library. But, I mean, you can pay for them outright if you want to. Nobody is holding any guns to anybody&rsquo;s head here. TextBuddy Version 1.0.4 Release Notes – TextBuddy for macOS I know I just mentioned TextBuddy in the last Web Excursions, but there&rsquo;s already an update worth talking about. Tyler added SmartyPants typography conversion, as well as a feature request of my own: code comment wrapping. Great stuff. The Great Mac Developer Survey The 2021 Mac Dev Survey from Tower is happening now, and there are some great prizes (including Marked 2 licenses) available for participating. If you&rsquo;re a Mac developer, pitch in and maybe win some great stuff",
		"keywords": ["macos","productivity","screenshot","shortcut","brett","cleanmymac","cleanshot","command","developer","excursions","great","marked","nobody","notes","paletro","palette","release","schemes","scrolling","setapp","shift","smartypants","survey","textbuddy","tower","tyler","version","absolute","access","accessing","added","allows","among","animated","annotation","another","anybody","applications","appmakes","available","because","border","brettterpstra","brought","checker","class","cleanshot","color","colors","commands","comment","contrast","conversion","cropping","detail","detection","developer","directly","discover","display","excited","excursions","expect","exposed","feature","format","functionality","fuzzy","great","happening","height","hellip","hidden","holding","hotkey","https","image","impactradius","including","interface","keystroke","library","licenses","loading","macos","macpaw","matching","maybe","media","mentioned","minimal","modifier","mouseclick","nails","needed","noscript","notes","original","outright","overlays","paletro","palette","participating","partnership","people","picker","picture","pitch","pleased","position","prizes","recording","release","robust","rsquo","scheme","schemes","screen","screencaptures","screenshot","search","setapp","showed","sipapp","source","speed","srcset","stuff","style","superior","survey","talking","textbuddy","think","title","tools","tower","typography","uploads","useful","using","usually","version","visibility","width","worth","wrapping"]
	},{
		"title": "The latest on the Bunch beta",
		"url": "/2021/03/17/the-latest-on-the-bunch-beta/",
		"tags": ["bunch","scripting","shell"],
		"date": "Mar 17<span>th</span>, 2021",
		"ts": "1615986000",
		"summary": "If you&rsquo;re keeping track at all, you&rsquo;ve probably noticed that I haven&rsquo;t posted about Bunch since the beta for version 1.4 launched. This is not due to a lack of progress. It&rsquo;s more like the changes were coming too fast. There have been over 100 changelog items since the last time I wrote about Bunch. And there&rsquo;s some big stuff in there. I&rsquo;m going to bullet point just a few of them, but first I want to extend the invitation to beta test again. There&rsquo;s a small but very helpful group of testers who&rsquo;ve helped out with getting the beta to where it is today. I&rsquo;d love to have this tested by even more people, though. The beta is a whole new app compared to Bunch 1.3, and I&rsquo;m hoping to bring it back to the stable branch soon. Just head to the bunch-beta section of the site to grab the download, find the support links, and see the latest documentation. One of the big questions I need answered right now is: does anybody actually use Bunch in Dock mode? A large number of the new features in the last update only work in menu bar mode, and that&rsquo;s the only way I use it now. Dock mode feels crippled to me at this point. Would you miss it if running in the menu bar became the only option? Let me know in this discussion. I&rsquo;m also seriously considering making it a commercial app. Well, \"planning to\" would be more accurate at this point. I&rsquo;d like to charge enough to offset the hours I&rsquo;ve been putting into it as a \"passion project,\" but not so much that it&rsquo;s inaccessible. If you have thoughts on this, or suggestions for pricing or sales models, I&rsquo;m always open to hearing from users. In the meantime, I&rsquo;ve greatly appreciated the donations that have come in. Enough people have donated that I think there&rsquo;s a fair amount of interest in this, and a willingness to pay for it, but I have constant, nagging doubts. But that could also be a blanket statement about my life. So what&rsquo;s new with the Bunch beta? Bunch originally only had a couple of preferences, so they were easy to just include in the main menu. As it grew, that became untenable. So now Bunch has a Preference pane (and a nifty first-launch splash, too). You now have the option to launch items in a Bunch in parallel or sequential order. You can set this globally, but also affect it per-Bunch with frontmatter. In a sequential Bunch, you can even affect it per-line by prefixing any&hellip;",
		"keywords": ["applescript","productivity","applescripts","bunch","bunches","command","control","discussions","display","download","enough","everything","execution","honestly","hyper","interactivity","keyboard","keystrokes","monitors","parallel","preference","script","scripts","shell","since","tracker","above","access","accurate","actions","adding","again","allow","allows","almost","amount","another","answered","anybody","anyway","appended","appreciated","arrow","assign","background","based","became","before","below","blanket","bottom","branch","bring","browser","bullet","bunch","changelog","changes","character","charge","check","choice","clicked","colors","combo","combos","coming","command","commands","commercial","compared","complaints","considering","constant","contains","context","continuing","couple","credentials","crippled","custom","customizable","definitely","desktop","dialogs","different","discussion","display","donated","donations","double","doubts","download","elsewhere","enough","essentially","everything","example","executing","execution","expect","extend","features","feels","files","first","floating","foreground","forum","frontmatter","fully","getting","global","globally","going","greatly","group","happen","haven","hearing","hellip","helped","helpful","hoping","hotkey","hotkeys","hours","ideal","ideas","inaccessible","including","input","interest","invitation","items","keeping","keyboard","keystrokes","later","latest","launch","launched","launches","level","lightning","links","local","making","mdash","meantime","method","models","monitor","multiple","nagging","navigation","necessarily","nerds","nifty","normal","noticed","offers","offset","opening","originally","output","parallel","parameters","particular","passion","pause","people","performing","planning","podcast","point","populate","posted","preferences","prefixing","press","preview","previously","pricing","proceeds","project","putting","questions","quoting","rarely","recording","release","reliably","repeats","reports","requires","restart","resume","rewrote","right","rsquo","running"]
	},{
		"title": "An ode to Bartender",
		"url": "/2021/03/16/an-ode-to-bartender/",
		"tags": ["appreview","icons","keyboard","macos","setapp","shortcuts","status"],
		"date": "Mar 16<span>th</span>, 2021",
		"ts": "1615899600",
		"summary": "Bartender has long been a contender for Most Valuable Utility on my Mac. I&rsquo;ve mentioned it a lot. It&rsquo;s up there with TextExpander and BetterTouchTool. And I can&rsquo;t believe it, but it somehow keeps getting better. If you don&rsquo;t know, Bartender is an app that helps manage all those icons in your menu bar. If you&rsquo;re any ilk of power user, you run a bunch of apps that don&rsquo;t have Dock icons and only exist in your menu bar. And that menu bar can get pretty crowded pretty fast. I bet even \"normal\" users could use some menu bar taming. Bartender, at its most basic, lets you hide menu bar apps you don&rsquo;t need to see, and gives you a hidden secondary menu bar so you can still access those apps you just don&rsquo;t need all the time. The only apps that are always showing in my menu bar these days are apps that have drop zones to which I want to be able to drag items (like Droplr, Dropzone, and Hook), apps I want to see status from all the time (like MailMate and Timing), and apps with useful at-a-glance info (like SoundSource and Fantastical). Everything else is either completely hidden, or available by clicking a blank area of the menu bar and popping up my secondary menu bar. Version 4 of Bartender is insanely good. This version is only available on Big Sur, but if you&rsquo;re running Big Sur, you&rsquo;ll probably love it. It adds a whole new interface that&rsquo;s elegant and super snappy. The keyboard shortcuts are expanded, and it even has a Spotlight-style search window for accessing menu items via the keyboard. You can even control the spacing between menu bar items. I definitely didn&rsquo;t like the increased spacing that Big Sur added, so being able to get back to \"sane\" spacing is great. You can also have menu items show only when they change. For example, Time Machine only shows up in my menu bar when it&rsquo;s backing up, and Dropbox only appears when it gets a notification. You can have it display on any change, when it changes based on an image comparison, or, if you&rsquo;re feeling cheeky, you can also write your own shell scripts that display the item if the script returns true. And get this&hellip; the latest update that just came out adds the ability to assign a keyboard shortcut to any item in your menu bar. You can have that keyboard shortcut make the item visible, and then automatically right or left click the icon. It&rsquo;s keyboard access for all kinds of apps that usually require&hellip;",
		"keywords": ["keyboard","setapp","shortcut","taskbar","bartender","bettertouchtool","dropbox","droplr","dropzone","everything","fantastical","machine","mailmate","setapp","soundsource","spotlight","textexpander","timing","using","utility","valuable","version","ability","access","accessing","added","affiliate","appears","assign","automatically","available","awesome","backing","based","basic","because","believe","between","blank","bunch","change","changes","check","cheeky","click","clicking","comparison","completely","contender","continue","control","crazy","crowded","definitely","developed","directly","display","either","elegant","example","exist","expanded","favorite","feature","feeling","first","getting","gives","glance","great","hellip","helps","hidden","hotkey","icons","image","implemented","increased","insanely","intentional","interface","items","keeps","keyboard","kinds","latest","links","makes","making","mentioned","missing","normal","notification","opening","paying","popping","possible","price","provides","returns","right","rsquo","running","screen","script","scripts","search","secondary","shell","shortcut","shortcuts","showing","shows","snappy","solves","somehow","spacing","status","style","subscriber","summarize","super","taming","trigger","upgrade","useful","users","using","usually","version","visible","where","whole","window","write","zones"]
	},{
		"title": "A Service to make Objective-C \"description\" methods easier",
		"url": "/2021/03/15/a-service-to-make-objective-c-description-methods-easier/",
		"tags": ["scripting","service","xcode"],
		"date": "Mar 15<span>th</span>, 2021",
		"ts": "1615813200",
		"summary": "Ok, so I still write Mac apps in Objective-C. I swear I&rsquo;ll buckle down and get more comfortable with Swift eventually, but for the time being, I&rsquo;m mostly square brackets. In that spirit, I wanted to share a simple Automator Quick Action I created to make adding method overrides to your Objective-C classes a little simpler. Back in the day when Xcode plugins roamed freely, there was one from Adam Smith that did exactly this (and was probably a more complete solution). I haven&rsquo;t found one that did the same since Apple updated Xcode&rsquo;s plugin architecture to extensions and moved them all to the App Store. Download the Service below and double click it to install. Once installed, you can open a header () file and select all the text, right click, and run from the contextual menu. The resulting method will be copied to your clipboard, ready to paste in the implementation. It&rsquo;s a pretty simple task: grab all of the properties from a class header and figure out an NSString format placeholder for each type. This script uses a pretty basic lookup table and can&rsquo;t do much with custom types, so you&rsquo;ll just get for anything unrecognized. When you paste the result into your file, let Xcode warn you about any mismatched placeholders and clean up manually. As an example, if I run it on this class from Gus Mueller, I get this method in my clipboard: If you try this out and have any suggestions, let me know. I&rsquo;ve only tested this on a few classes at this point, so I&rsquo;m probably missing a few things. Xcode Describe Service v1.0.0 Download Xcode Describe Service v1.0.0 Create description methods from header files for Objective-C classes Published 03/14/21. Updated 03/14/21. Changelog Donate &bull; More info&hellip; I also created a TextBuddy script for this. I&rsquo;m growing very fond of that app. I&rsquo;ll be collecting my scripts in this TextBuddyScripts repository on GitHub. The README there explains how to use them. This is my first for-public-consumption TextBuddy script, so the repo is a little thin right now, but it may grow over time1. Assuming Tyler doesn&rsquo;t keep implementing my crazy requests himself.&nbsp;↩",
		"keywords": ["xcode","action","apple","assuming","automator","changelog","create","describe","donate","download","fmdatabase","github","mueller","nsstring","published","quick","readme","service","smith","store","swift","tuvbv&#39;","textbuddy","textbuddyscripts","tyler","updated","xcode","xcodedescribe","adamontherun","adding","architecture","automatoricon","background","backlink","basic","below","brackets","brettterpstra","buckle","cachedstatements","ccgus","changelog","changes","class","classes","clean","click","clipboard","collecting","comfortable","contextual","copied","cover","crashonerrors","crazy","created","custom","databasepath","describe","description","dlbox","doesn","donate","double","download","downloads","endnotes","eventually","example","explains","extensions","fathom","figure","files","first","fnref","footnote","footnotes","format","found","freely","github","goodconnection","gradient","growing","hasopenresultsets","haven","header","hellip","highlight","highlighter","himself","https","images","implementation","implementing","information","install","installed","language","linear","little","lookup","manually","master","method","methods","mismatched","missing","mostly","moved","noteref","onclick","overrides","paste","placeholder","placeholders","plaintext","plugin","plugins","point","properties","public","published","ready","repeat","repository","requests","resulting","return","reversefootnote","right","roamed","rouge","rsquo","script","scripts","service","share","simple","simpler","since","solution","spirit","sqlitehandle","square","statement","stringwithformat","style","suggestions","super","swear","table","tested","textbuddy","title","traceexecution","trackgoal","ttscoff","tyler","types","unrecognized","updated","usecount","wanted","write","xcodegeneratedescriptionplugin","xcode"]
	},{
		"title": "Work smarter not harder with TextExpander",
		"url": "/2021/03/11/work-smarter-not-harder-with-textexpander/",
		"tags": ["sponsor","textexpander"],
		"date": "Mar 11<span>th</span>, 2021",
		"ts": "1615471200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! Don&rsquo;t forget to check out the TextExpander Tools snippet group I just published! TextExpander helps you work faster and smarter so you can focus your time on your most important work. With just a few keystrokes, TextExpander keeps you consistent, accurate, and working efficiently. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more",
		"keywords": ["productivity","smile","textexpander","&#39;nofollow&#39;","brettterpstra","speed","textexpander","thanks","tools","visit","abbreviation","abbreviations","accurate","again","bdddfe","blank","brettterpstra","check","class","consistent","content","corrects","efficiently","emails","everything","expand","faster","fields","first","focus","forget","forms","group","helps","highlight","highlighter","https","important","keeps","keystrokes","language","learn","loading","media","message","nofollow","noscript","original","picture","plaintext","podcast","powerful","published","quick","readers","right","rouge","rsquo","saving","shortcuts","smarter","snippet","snippets","source","speed","spelling","sponsoring","srcset","streamline","strong","textexpander","through","title","uploads","using","width","working"]
	},{
		"title": "Updating the TextExpander Tools",
		"url": "/2021/03/02/updating-the-textexpander-tools/",
		"tags": ["snippet","textexpander","tools"],
		"date": "Mar 2<span>nd</span>, 2021",
		"ts": "1614726360",
		"summary": "I&rsquo;ve started going through and cleaning up my large collection of TextExpander snippets, starting with the ones I share publicly. In the process I&rsquo;m moving away from my homebrew snippet sharing system to using TextExpander&rsquo;s new(ish) public snippet groups. Once I&rsquo;ve pruned and updated all of the groups in the te-snippets tool, I&rsquo;ll redirect that page to a list of my publicly shared snippet groups. Much like my custom tool, TextExpander sharing lets you define your own prefixes for the group, and it doesn&rsquo;t take a bunch of XML foolishness on my end to make it work. I like it. The first group up for a refresh was my \"Tools\" group, which is kind of a general collection of tools for text, Markdown, and miscellaneous tasks like getting the front Finder window path. You can find the new group as \"Brett&rsquo;s Tools\" on TextExpander.com. Some of its original contents are being moved into more specific groups, and a bunch of the snippets got updates. Only a few had to be removed due to APIs being discontinued or other issues that have popped up. There&rsquo;s a new snippet for creating obfuscated links. It pops up a fill-in for link text, email address, and optional subject line, then spits out an HTML tag that uses a combination of JavaScript and unicode encoding to completely obfuscate the link, including the \"mailto\" part, so bots are less likely to pick them up. I&rsquo;ve gotten to the point where I&rsquo;m getting as much spam from contact forms as I ever got from just putting my email address out there, so in a lot of applications I&rsquo;m just back to using links. Obfuscating is of questionable value overall, but the general consensus on it is \"it&rsquo;s better than nothing.\" This snippet makes it easier to just do it.1 I also updated the \"swear\" snippet (which turns your swears into \"f#@!\" for you) to include first letter of censored word. It&rsquo;s just more fun that way. Snippets that generate urls now assume https, rather than http. The \"Slugify\" snippet (which turns \"hey there\" into \"hey-there\", mostly for file naming purposes) now removes all non-alphanumeric characters and compresses multiple hyphens. Anyway, check out the shiny new result here. Watch for more updates soon! There is, of course, a concern about using JavaScript because it&rsquo;s possible a user won&rsquo;t have JavaScript enabled, in which case they&rsquo;d be left with a non-functioning link and no way to contact you. I&hellip;",
		"keywords": ["productivity","snippet","anyway","brett","finder","javascript","markdown","obfuscating","slugify","snippets","textexpander","tools","watch","address","alphanumeric","alternate","applications","assume","backlink","bdddfe","because","brettterpstra","bunch","censored","characters","check","class","cleaning","collection","combination","completely","compresses","concern","consensus","contact","contents","creating","custom","define","discontinued","doesn","easier","email","enabled","encoding","endnotes","entity","first","fnref","foolishness","footnote","footnotes","forms","front","functioning","general","getting","going","gotten","group","groups","highlighter","homebrew","https","hyphens","including","issues","language","ldquo","letter","likely","links","mailto","makes","miscellaneous","mostly","moved","moving","multiple","naming","noteref","nothing","obfuscate","obfuscated","optional","original","overall","plaintext","point","popped","possible","prefixes","process","projects","pruned","public","publicly","putting","questionable","rather","rdquo","redirect","refresh","removed","removes","reversefootnote","rouge","rsquo","rudimentary","share","shared","sharing","shiny","snippet","snippets","specific","spits","started","starting","swear","swears","system","tasks","textexpander","through","tools","turns","unicode","updated","updates","using","value","version","where","window"]
	},{
		"title": "Open Zoom links in Zoom (and why Choosy is the best default browser)",
		"url": "/2021/02/26/open-zoom-links-in-zoom-and-why-choosy-is-the-best-default-browser/",
		"tags": ["browser","macos"],
		"date": "Feb 26<span>th</span>, 2021",
		"ts": "1614373560",
		"summary": "Ok, so we&rsquo;re all in Zoom way too much these days. We&rsquo;re clicking links in calendar entries, Slack messages, and emails. They&rsquo;re opening a browser tab every time, which then opens Zoom. I wrote a little script to clean up all those tabs, but that&rsquo;s a kludge. Choosy is better. I&rsquo;ll start with the very simple tip: in Choosy you can add an advanced rule that targets any URL containing \"zoom.us\" and have it open directly in Zoom, completely bypassing your browser. You don&rsquo;t even have to add Zoom as a browser in Choosy, just select \"Browse&hellip;\" from the dropdown list when specifying what browser to use and find \"zoom.us\" in your Applications folder. There have been a few \"default browser\" apps for macOS over the years. Notably BetterTouchTool can function as one now, doing all kinds of neat tricks with your urls. The thing is, I&rsquo;ve never seen one that has the perfect combination of ease and power that Choosy pulls off. Choosy is a breeze to set up, offers a great popup menu either horizontally or in a circle around your cursor, and has all of the advanced features you need. You can specify all the browsers you&rsquo;ll ever use, and set their order of preference. You can have Choosy always use the best running browser, only asking you to select one if none are running. Or you can have it offer you a selection of all your browsers, just your running browsers, or automatically assume it should use your favorite if no others are running. It can even expand shortened URLs for you on the fly. This is all great if you&rsquo;re a developer and constantly using every browser out there. But it&rsquo;s also handy for anyone that has some sites that need a specific browser that&rsquo;s not their preferred browser. You know, the sites you keep Chrome around for even though you prefer Firefox or Safari for everything else. Or, as illustrated above, a need to open links in an app that isn&rsquo;t normally able to capture URL clicks. What makes all of that possible is Choosy&rsquo;s custom rules. Under advanced preferences you can build rules like the Zoom one above. You can have specific url patterns trigger specific browsers. Or have one that detects local HTML file clicks and lets you choose whether to open them in your browser or your text editor (yes, you can add your favorite editor as a browser option). My setup defaults to the best running browser, but if I hold down option when clicking a link anywhere on my Mac&hellip;",
		"keywords": ["bookmark","chrome","development","google","safari","applications","bettertouchtool","browse","choosy","chrome","everything","firefox","notably","safari","slack","under","above","advanced","anyone","anywhere","asking","assume","automatically","available","bookmarklets","breeze","browser","browsers","bucks","build","bypassing","calendar","capture","choose","choosyosx","circle","clean","clicking","clicks","combination","comments","completely","constantly","containing","cursor","custom","customizable","default","defaults","detects","developer","directly","doing","dropdown","editor","either","emails","entries","everything","expand","favorite","favorites","features","folder","function","great","handy","hellip","horizontally","illustrated","integrate","kinds","kludge","links","little","local","longer","macos","makes","messages","normally","offer","offers","opening","opens","others","patterns","popup","possible","prefer","preference","preferences","preferred","pulls","remember","rsquo","rules","running","scheme","script","scripts","selection","served","setup","shell","shortened","simple","sites","specific","specify","specifying","targets","tools","tricks","trigger","using","worth","wrote","years"]
	},{
		"title": "Web Excursions for February 26, 2021",
		"url": "/2021/02/26/web-excursions-for-february-26-2021/",
		"tags": ["bookmarks","macos"],
		"date": "Feb 26<span>th</span>, 2021",
		"ts": "1614344040",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. A Guide to Palettes - Diagrams Diagrams 2.0 is out, available on the Mac App Store and Setapp. The new release features customizable palettes for making more flexible flow charts and diagrams. TextBuddy for macOS – Faster than your IDE and easier than the command line A new app from Tyler Hall that can perform all kinds of transformations on text with just a couple of keystrokes. Includes OCR and audio/video transcription capabilities. I tried it out for 5 minutes and immediately purchased. NotePlan I&rsquo;ve mentioned NotePlan before, the Markdown-notes-meets-calendar-meets-tasks app for Mac and iOS, but it&rsquo;s worth pointing out again. Eduard recently added text folding and hidden Markdown links, among other things. Check out this YouTube video for details, as well as a look at how he uses NotePlay for Zettelkasten. Nord Theme Via Martin Smith, if you still like dark themes in your IDE, this one is beautiful. Minus.app — Minimal Productivity for macOS An interesting take on the minimal workspace for Mac. It&rsquo;s free, take it for a spin. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["macos","markdown","store","backblaze","brett","check","diagrams","eduard","faster","guide","includes","markdown","martin","minimal","minus","noteplan","noteplay","palettes","productivity","skorz","setapp","smith","store","textbuddy","theme","tyler","youtube","zettelkasten","added","affordably","again","among","audio","available","backblaze","backs","beautiful","before","brettterpstra","brought","calendar","capabilities","charts","class","cloud","command","computer","couple","customizable","details","diagrams","easier","entire","everything","excursions","feature","features","flexible","folding","guide","height","hidden","holding","https","image","interesting","keystrokes","kinds","links","loading","macos","making","media","meets","mentioned","minimal","minus","minutes","msmith","nordtheme","noscript","noteplan","notes","original","palettes","partnership","picture","pointing","purchased","recently","release","reliably","rsquo","secure","securely","source","srcset","status","tasks","textbuddy","themes","title","today","transcription","transformations","tried","twitter","uploads","video","watch","width","workspace","worth","youtu","youtube"]
	},{
		"title": "HardWrap extension for PopClip",
		"url": "/2021/02/11/hardwrap-extension-for-popclip/",
		"tags": ["extension","popclip"],
		"date": "Feb 11<span>th</span>, 2021",
		"ts": "1613067720",
		"summary": "I made a quick PopClip extension today for adding hard line wrapping to blocks of text. In general I&rsquo;m a fan of letting text wrap automatically, but when I&rsquo;m coding I prefer hard line breaks at 70-80 columns. Easy to do in almost any decent text editor, but elsewhere (ahem, Xcode) I wanted a fast way to do it. You can install the extension from the latest version of Brett&rsquo;s PopClip Extensions (download directly below), and the source is available on GitHub. When you install the extension you can define the column at which the text will wrap. You can also define an alternate column, which can then be accessed by holding down Option when clicking the extension (which shows up as in your PopClip bar). Holding down Command will unwrap selected text, removing newlines at line endings but preserving multiple consecutive newlines and trailing space. Just a quick side project, but I thought others might find it useful. Of course, I&rsquo;d bet money something like this already exists, but it was a nice break from other tasks anyway. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["extension","newline","textmate","xcode","allan","brett","changelog","command","credit","donate","download","extensions","github","holding","markdown","odgaard","popclip","published","textmate","updated","xcode","accessed","adding","almost","alternate","anyway","automatically","available","because","below","blocks","break","breaks","clicking","coding","column","columns","consecutive","decent","define","directly","download","editor","elsewhere","endings","exists","extension","extensions","general","heart","hellip","holding","install","latest","letting","money","multiple","newlines","others","prefer","preserving","project","quick","reinvent","removing","rsquo","selected","shows","source","space","tasks","thought","today","tools","trailing","unwrap","useful","version","wanted","wheel","wrapping","writing"]
	},{
		"title": "Focus on what matters most with TextExpander",
		"url": "/2021/02/11/focus-on-what-matters-most-with-textexpander/",
		"tags": ["sponsor","textexpander"],
		"date": "Feb 11<span>th</span>, 2021",
		"ts": "1613048400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! I&rsquo;m a huge fan, and my life without TextExpander would be very tedious, indeed. Say goodbye to repetitive text entry, spelling and message errors, and trying to remember the right thing to say. Have the right response for the right occasion always at your fingertips on any device. Better than copy and paste, better than scripts and templates - TextExpander snippets allow you to maximize your time by getting rid of the repetitive things you type while still customizing and personalizing your messages. TextExpander can be used in any platform, any app, anywhere you type. Take your time back and increase your productivity. My readers get 20% off their first year! Visit textexpander.com to learn more",
		"keywords": ["productivity","repetition","smile","snippet","software","brettterpstra","textexpander","thanks","visit","allow","anywhere","customizing","device","entry","errors","fingertips","first","focus","getting","goodbye","increase","indeed","learn","matters","maximize","message","messages","paste","personalizing","platform","productivity","readers","remember","removes","repetition","repetitive","response","right","rsquo","scripts","snippets","spelling","sponsoring","tedious","templates","textexpander","trying","while"]
	},{
		"title": "LinkChecker: a bookmarklet for web writers",
		"url": "/2021/02/08/linkchecker-a-bookmarklet-for-web-writers/",
		"tags": ["bookmarklet","browser","marked","scripting","webdesign"],
		"date": "Feb 8<span>th</span>, 2021",
		"ts": "1612798260",
		"summary": "I did a little more weekend work on Bunch, and I&rsquo;ll probably post an update on some exciting new stuff soon. I&rsquo;d love it if you helped test by downloading the beta version and checking the changelog to see what&rsquo;s up. Anyway, that&rsquo;s not the point of this post. As part of working on the new release, I&rsquo;ve been doing a lot of documentation. And because the documentation has continued to grow, there&rsquo;s been a lot of reorganizing. And as a result of that, I keep breaking links between pages. So I made a quick tool to make finding broken links easier. If you&rsquo;re just writing a blog post in Markdown, I would (of course) recommend using Marked, which has more complete link validation built in. Just preview your Markdown in Marked and use Gear Menu->Proofing->Validate All URLs (or hit Control-Command-L). However, if you&rsquo;re writing an entire website with inter-linked documents, you&rsquo;re more likely to have broken links, and depending on your platform, Marked might not be the right solution. This is a little JavaScript function that can be run as a bookmarklet, or embedded in your while you&rsquo;re working to trigger any time you preview a page. It cycles through all the links on the page, doing a quick HEAD request to see if they return an error code of 400 or higher. If so, it highlights them in red and displays a little navigator at the top with the number of bad links and arrows to scroll between them. When you scroll to a broken link, it will show you the URL it currently has at the bottom. Here&rsquo;s the bookmarklet version, tested with Safari, Chrome, and Firefox: If your Chromium browser doesn&rsquo;t allow bookmarklets (like Arc), download the LinkChecker extension version and follow the instructions here. In most browsers you can just drag that to your Bookmarks toolbar and then click it on any page you want to check. In some browsers you&rsquo;ll need to right click that bookmarklet and copy the link, then create a new bookmark (⌘D) for the current page. Edit the properties of the new bookmark with the title \"LinkChecker\" and paste the copied URL into the destination field. Here&rsquo;s a broken link, so if you run the bookmarklet on this page (or just click the link above), you can see it in action. My docs run on Jekyll, so I added a slightly modified version of the script to my template with a conditional. If I have in , it includes this script. The script checks to see if I&rsquo;m&hellip;",
		"keywords": ["bookmark","development","javascript","markdown","anyway","bookmarks","bunch","chrome","chromium","command","control","firefox","however","javascript","jekyll","linkchecker","markdown","marked","proofing","safari","validate","above","action","added","allow","animated","anyone","appendchild","arrows","automatically","because","before","between","bookmark","bookmarklet","bookmarkletwrap","bookmarklets","bottom","breaking","brettterpstra","broken","browser","browsers","built","bunch","caption","changelog","check","checking","checks","class","click","conditional","config","continued","copied","create","createelement","cycles","depending","deploying","destination","developer","displays","document","documents","doesn","doing","download","downloading","easier","embedded","entire","error","exciting","extension","field","figure","finding","floor","forget","frame","function","github","height","helped","higher","highlighter","highlights","howtos","https","includes","install","instructions","inter","javascript","language","ldquo","likely","linkchecker","linked","links","little","localhost","marked","measure","middle","modified","navigator","needs","pages","paste","plaintext","platform","point","preview","properties","quick","random","rdquo","reach","ready","recommend","release","reorganizing","return","right","rouge","rsquo","safety","screen","script","scroll","setattribute","slightly","solution","source","specifics","strong","stuff","tabindex","template","tested","testing","through","title","toolbar","trigger","triggering","ttscoff","uploads","using","validation","version","website","weekend","while","width","working","writing"]
	},{
		"title": "Web Excursions for February 04, 2021",
		"url": "/2021/02/05/web-excursions-for-february-04-2021/",
		"tags": ["bettertouchtool","bookmarks","hyper","macos","survey"],
		"date": "Feb 5<span>th</span>, 2021",
		"ts": "1612561080",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. If you&rsquo;re not keeping up with the latest in Bunch, there have a been more updates since my last post. I&rsquo;d love to have as many beta testers as I can right now, so give it a shot! Defining a Hyper Key in BetterTouchTool BetterTouchTool can now create a Hyper Key without the need for Karabiner Elements. Since I define most of the shortcuts I use my Hyper Key for in BetterTouchTool, I&rsquo;m excited about moving all of this functionality into one place. tiny-scripts/calm-notifications Vitor Galvao wrote a great Ruby script for command line control of Do Not Disturb settings under Big Sur. It&rsquo;s a lot more complicated than it was with previous OSs, so this is a pretty cool feat. SwiftDefaultApps RCDefaultApps was a cool Mac utility for controlling what apps owned which filetypes and url handlers. It kind of faded away around macOS 10.12 (though some say it still works), but SwiftDefaultApps modernizes and revives it. Seems to be working well so far. VSCode Notion This is not for me. While I&rsquo;m always impressed with VSCode, it hasn&rsquo;t grabbed me yet, despite my Overtired co-host&rsquo;s enthusiasm. And while I&rsquo;m impressed with Notion, it&rsquo;s not my thing either. But I know I have readers who like both of these things, so here you go. 2020 Mac Developers Survey: Key insights The results of the MacPaw 2020 Mac Developer Survey are in, with some good insights into the state of the industry. Apple in 2020: The Six Colors report card – Six Colors Speaking of annual surveys, Jason Snell&rsquo;s 2020 Apple report card is out, with input from a bunch of Apple bloggers and podcasters (and me). Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["macos","macpaw","studio","visual","apple","bettertouchtool","brett","bunch","check","colors","defining","developer","developers","disturb","elements","galvao","hyper","jason","kamina","karabiner","macpaw","mindmeister","notion","overtired","rcdefaultapps","seems","since","snell","speaking","survey","swiftdefaultapps","vscode","vitor","while","annual","apple","bloggers","boosting","brainstorming","brettterpstra","brought","bunch","changelog","class","collaborating","collaborative","colors","command","complicated","control","controlling","create","define","developers","download","either","enthusiasm","excited","excursions","faded","filetypes","folivora","frenco","functionality","github","grabbed","great","handlers","height","holding","https","hyper","image","impressed","industry","input","insights","itemname","items","keeping","latest","loading","macos","mapping","marketplace","master","media","mindmeister","modernizes","moving","noscript","notifications","notion","original","owned","partnership","picture","podcasters","productivity","readers","report","results","revives","right","rsquo","script","scripts","setapp","settings","shortcuts","since","sixcolors","software","source","srcset","survey","surveys","testers","title","under","updates","uploads","utility","visualstudio","vitorgalvao","vscode","while","width","working","works","wrote"]
	},{
		"title": "Turn any website into a Mac app with Unite 4 [Sponsor]",
		"url": "/2021/02/04/turn-any-website-into-a-mac-app-with-unite-4-sponsor/",
		"tags": ["sponsor"],
		"date": "Feb 4<span>th</span>, 2021",
		"ts": "1612445400",
		"summary": "Thanks to Unite 4 from BZG for sponsoring BrettTerpstra.com this week! I&rsquo;d been missing a good, modern app for making Single Site Browsers, and Unite came to the rescue. I highly recommend it! Unite 4 for macOS allows you to turn any website into an app on your Mac. Using a lightweight, WebKit powered browser as a backend, you can easily create isolated, customizable apps from any site. Unite 4 includes dozens of new features, including support for native notifications, new customization options, and much more. Unite apps also serve as a great alternative for resource hogging Electron apps or half-baked Catalyst apps. A Gmail web client that behaves like a native mail client A status bar app for Apple Music or Overcast An isolated workspace for apps like Facebook that track your browsing A lightweight and power efficient version of Slack, Discord, or Whatsapp with full notification support A full-featured Instagram app with a resizable window, unlike the M1 version A Robinhood, Figma, or Roam Research app for your desktop BrettTerpstra.com readers get 20% off this week when you purchase Unite 4 at bzgapps.com/brett or when you use the promo code at checkout",
		"keywords": ["coherence","setapp","unite","apple","brett","brettterpstra","browsers","catalyst","discord","electron","facebook","figma","gmail","instagram","music","overcast","research","robinhood","setapp","single","slack","thanks","unite","using","webkit","whatsapp","allows","backend","baked","banner","behaves","brett","brettterpstra","browser","browsing","bzgapps","campaign","checkout","class","client","content","create","customizable","customization","desktop","dozens","easily","efficient","examples","featured","features","great","height","highlighter","highly","hogging","https","image","includes","including","isolated","language","lightweight","loading","macos","making","media","medium","minutes","missing","modern","native","nofollow","noscript","notification","notifications","options","original","picture","plaintext","powered","program","promo","readers","recommend","rescue","resizable","resource","rouge","rsquo","serve","setapp","source","sponsoring","srcset","status","subscriber","subscription","support","title","track","unite","unlike","uploads","vendor","version","website","width","window","workspace"]
	},{
		"title": "Bunch gets scheduling (and lots more)",
		"url": "/2021/02/02/bunch-gets-scheduling-and-lots-more/",
		"tags": ["automation","bunch","notifications","sleep","snippet"],
		"date": "Feb 2<span>nd</span>, 2021",
		"ts": "1612274400",
		"summary": "Are you ready? I kinda went down a rabbit hole with Bunch this last week. It&rsquo;s a lot. Because this release is so big, I&rsquo;m releasing it as a beta first. All of the documentation for the new version is at brettterpstra.com/bunch-beta/docs, and the download link can be found at brettterpstra.com/bunch-beta/download. The documentation for everything here is fully updated (and expanded, as part of the aforementioned rabbit hole), and all of the pertinent pages are linked from the changelog. You can just skip there if you like. First, the blame for this whole development cycle belongs partially to one Jake Bernstein. He had a couple ideas that I thought were pretty clever, and it was a slippery slope from there. Scheduled Bunches and Spotlight searches were mostly his fault. I&rsquo;m far from blameless in this, but just I want him to share in the responsibility. Well, really I just wanted to give him credit. The first big thing is that I&rsquo;ve introduced frontmatter. It&rsquo;s YAML-esque formatting that lets you define attributes and variables at the top of your Bunch file. This means additional settings without further complicating the syntax. Just nice, readable keys and values. First benefit: you can use a key to define a display name that&rsquo;s different from the filename. Which, of course, means that you can use emojis in your menu titles. A vanity feature, but I really like it. You can define whether a Bunch launches at startup with the key, as an alternative to using startup scripts. I know what you&rsquo;re asking yourself at this point. \"Did he really stop with just having static data at the top of a file?\" No, of course not. Frontmatter can also be dynamically loaded from external files or shell script output. So that&rsquo;s nice and all, you say, but is there any real benefit to having frontmatter? This leads to the second big deal: scheduling. In the frontmatter, you can define keys like and to open and close bunches at specific times, or on specific days, or even at repeating intervals. Have Bunches launch in the morning, close in the evening, or have a special Friday 9pm Bunch, for whatever nefarious things you do to kick off the weekend. Have a \"Social\" Bunch that only opens at set hours and automatically closes when your social media time is up1. You can even use to have Bunches that automatically re-open apps at specific intervals. All of the keys work with natural language syntax. You can&hellip;",
		"keywords": ["github","snippet","&#39;kind","affinity","automation","backblaze","because","bernstein","bettertouchtool","bunch","bunches","center","close","commands","default","delayed","delays","desktop","disturb","dividers","downloads","dropbox","embedded","firefox","first","forum","fragments","friday","frontmatter","github","hammerspoon","here&#39;s","improvements","integration","interval","keyboard","launch","maestro","notification","notifications","pdfpenpro","photo","preferences","safari","scheduled","scheduling","searches","section","snippet","snippets","social","spotlight","support","system","waiting","where","works","abhor","above","accept","action","added","additions","advantage","aforementioned","again","alert","angle","another","applications","arbitrary","arrangements","aside","asking","attributes","automatic","automatically","automation","available","avoid","backlink","before","begin","beginning","belongs","benefit","blame","blameless","bothering","bracket","brackets","brettterpstra","bunch","bunches","bunchlog","bunchnotification","bunchspotlight","button","called","center","changelog","character","class","clever","close","closed","closes","closing","commands","complicating","contact","contains","corrections","countdown","couple","credit","curious","cycle","dashes","dated","default","define","delayed","delays","demands","details","development","different","directly","discussions","display","dividers","document","download","downloaded","dynamically","dynamicfrontmatter","embed","embedded","embeddedsnippets","emojis","emojititles","enabled","endnotes","enough","error","especially","esque","evening","everything","example","executing","expanded","explanatory","explore","external","fault","feature","features","filename","files","finished","first","fnref","folder","footnote","footnotes","formats","formatting","forum","found","fragments","frontmatter","fully","generator","getting","github","great","grows","handle","handler","happening","hashes","having","height","hellip","highlight","highlighter","hourglass","hours","https","ideas","image","important","improvements","included","inconvenient","indent","information","integration","interactive","intervals"]
	},{
		"title": "Another round of Bunch Updates",
		"url": "/2021/01/19/another-round-of-bunch-updates/",
		"tags": ["bunch","music","scripting","snippet"],
		"date": "Jan 19<span>th</span>, 2021",
		"ts": "1611064800",
		"summary": "Ok, one more batch of updates for Bunch. It&rsquo;s just so much fun to work on that I spent last weekend on it. Don&rsquo;t worry, nvUltra is getting an equal amount of love. By the way, if you want to keep tabs on all of my latest work, apps, and special discounts, I formally invite you to subscribe to my new email list. It&rsquo;ll be low-traffic and a great way for me to let you know about the important stuff. Anyway, Bunch&hellip; The single-page documentation was getting way out of hand, so I built a mini-site (using Jekyll and just-the-docs), now located at brettterpstra.com/bunch. All of the docs have been broken up into sections with full search, and an updated Quick Reference with input from Stuart Hertzog. Over the weekend I added a few new features that I think are really useful. This is all in addition to last week&rsquo;s Do Not Disturb for Big Sur, AppleScript command, and interactive snippets. There&rsquo;s now a URL method for running snippets. This is different from raw text handling or Bunch handling because it allows easy access to fragments and use of variables. If you have a snippet set up with sections and variables, you can easily run it from a URL using a link like: That loads the MySnippets file, locates the Music section, and fills in the variable. This opens up a lot of clever integration options! To match the snippet URL method, there&rsquo;s a new AppleScript command: . It takes the same parameters, and variables can be passed as a URL query string. Variable strings pairs separated by ampersands. If you need to use an actual ampersand in the value, the contents are url decoded so you can just replace it with %26. Side note: I wanted to make accept an AppleScript record format, e.g. , but coercing a record with arbitrary keys into an NSDictionary is, as far as I can tell, impossible. So we get URL query strings&hellip; You can now specify default values for variables in snippets. Also, if you include variables in a snippet and then don&rsquo;t pass a value, Bunch just removes the snippet placeholder and attempts to process without it, rather than, well, crashing. To add a default value, use something akin to Bash variable formatting: . If no variable with a matching key name is passed when importing the snippet, the default value (everything after the colon) will be used instead. If you want to have one or more Bunches launch automatically when the application loads, you can now create files in your&hellip;",
		"keywords": ["applescript","handler","snippet","anyway","applescript","bugfixes","bunch","bunches","command","defaults","development","disturb","files","general","hertzog","jekyll","launch","method","music","mysnippets","nsdictionary","optional","quick","snippet","snippets","startup","stuart","supporting","unlike","variable","accept","access","added","allow","allows","among","amount","ampersand","ampersands","arbitrary","attempts","automatically","batch","because","brettterpstra","broken","built","bunch","calling","changelog","check","clever","close","coercing","colon","command","commands","consider","contain","contents","crashing","create","decoded","default","details","development","different","discounts","donation","download","easily","email","enough","everyone","everything","extension","extensively","feature","features","feedback","files","fills","finding","fixing","folder","formally","format","formatting","found","fragments","getting","great","handler","handling","handy","hellip","important","importing","impossible","includes","input","install","instructions","integration","interactive","invite","issues","items","latest","launch","launched","launching","loaded","loads","located","locates","login","match","matching","meaning","method","needed","nvultra","opens","options","pairs","parameters","passed","people","pitched","placeholder","process","query","rather","received","record","registered","removes","replace","rsquo","running","search","section","sections","separated","separately","single","snippet","snippets","special","specify","spent","startup","string","strings","stuff","subscribe","support","takes","taking","thanks","think","traffic","updated","updates","useful","using","value","values","variable","variables","wanted","weekend","within","working","worry"]
	},{
		"title": "FIXED: Marked 2, Big Sur, and blurry PDFs",
		"url": "/2021/01/18/fixed-marked-2-big-sur-and-blurry-pdfs/",
		"tags": ["marked"],
		"date": "Jan 18<span>th</span>, 2021",
		"ts": "1610978400",
		"summary": "I wrote back in November that Marked had an incompatibility with Big Sur that was causing the PDFs it generated to come out as raster images, rather than as vector-based text that would be scalable and selectable. I&rsquo;m happy to report that Apple has fixed this issue on their end and it&rsquo;s now 100% safe to use Marked 2 on Big Sur. I&rsquo;ve spent the last couple of months working on the massive rewrite that was required to incorporate Apple&rsquo;s new WebKit version into Marked 2&rsquo;s existing architecture. I&rsquo;ll admit, it wasn&rsquo;t going great. I&rsquo;m ecstatic that Apple has fixed their bug and I don&rsquo;t have to work around it right now. That said, the rewrite will continue as I work to avoid such issues in the future. I first noticed the bug was fixed on the Developer Beta 2 of Big Sur. I had a couple of people test on the current public release and it seems the fix is already available to everyone. As long as you&rsquo;re on the current release of Big Sur, Marked 2 is good to go. Thanks everyone for your patience on this. To celebrate I&rsquo;m running a little 10%-off sale. Just use the coupon code (or click here to apply it automatically). It&rsquo;s good until March 1st, feel free to share it with someone you care about! If you&rsquo;d like to stay up-to-date with Marked news, tips, and discounts, please join the mailing list",
		"keywords": ["webkit","apple","developer","marked","thanks","webkit","admit","apply","architecture","automatically","available","avoid","based","causing","celebrate","click","continue","couple","coupon","discounts","ecstatic","everyone","first","fixed","generated","going","great","happy","images","incompatibility","incorporate","issues","little","mailing","massive","noticed","patience","people","public","raster","rather","release","report","required","rewrite","right","rsquo","running","scalable","seems","selectable","share","spent","vector","version","working","wrote"]
	},{
		"title": "And then there were interactive Bunches",
		"url": "/2021/01/14/and-then-there-were-interactive-bunches/",
		"tags": ["bunch","music","scripting","snippet"],
		"date": "Jan 14<span>th</span>, 2021",
		"ts": "1610649840",
		"summary": "Here&rsquo;s the latest stuff in Bunch 1.3.1! This is all the result of a combination of new (better) ADHD meds (I refer you to the last couple episodes of Overtired) and the fact that the latest developer seed of Big Sur fixed the blurry PDF issue that I&rsquo;ve been dedicating an inordinate amount of time to working around, so I suddenly have a little extra time in my day. Thank you Apple. For fixing what you broke, I mean. But still, I&rsquo;m grateful. (I&rsquo;ll do an official announcement post on the Marked bug when this fix makes it into the stable release and is available to everyone.) So what&rsquo;s new with Bunch? First, I think I&rsquo;ve come up with a solution for Do Not Disturb commands under Big Sur. This needs further testing but&mdash;to the best of my knowledge&mdash;Bunch doesn&rsquo;t break anything in the process. It&rsquo;s a more complicated trick than it was in earlier versions of the OS. It used to just be a boolean stored in the preferences. Now it&rsquo;s a plist stored as data in a preference key and modifying it gently has proven difficult. The end result is a kind of brute force hack that seems to be working. So now using or in your Bunch should once again function under Big Sur. Please let me know if you run into any issues. I have to include a standard disclaimer here: I am not responsible for anything Bunch breaks on your system, or any damages suffered as a result1. I will work to fix anything wrong, though, serious or not. If you have \"Toggle Bunches\" or \"Single Bunch Mode\" enabled under Preferences, Bunch adds a checkmark in the menu when you launch a Bunch. Clicking a checked item will then close the Bunch. Mostly for the sake of debugging Bunches, I have an option in the menu to Clear Checkmarks, allowing you to launch a Bunch again without quitting it. I&rsquo;ve expanded this to allow clearing a single checkmark by Option-clicking a checked Bunch in the menu. There&rsquo;s a new AppleScript command for directly processing text as if it were read from a Bunch file. The command is and correlates to the raw URL method. This can be used for sending simple commands or reading text in, modifying it, and then executing it. I saved my favorite bit for last: a new feature I&rsquo;m calling \"optional snippets.\" I wanted to add some interactivity to a Bunch so that I didn&rsquo;t have to make two different bunches when only one part of it was different. I&rsquo;ve started this process by allowing&hellip;",
		"keywords": ["applescript","languages","scripting","snippet","apple","applescript","automator","autoplay","banner","bonus","bunch","bunches","checkmarks","clear","clicking","coding","comms","depending","disturb","enough","example","first","focusing","interactivity","marked","mostly","music","mysnippet","optional","optionalsnippetsheader","overtired","playspotifyurl","podcasting","preferences","screenshot","single","snippet","snippets","spotify","sublime","thank","toggle","tower","using","within","workflow","xcode","above","adding","again","allow","allowing","allows","amount","announcement","another","appear","applescript","approach","assets","automator","available","background","backlink","based","basics","because","block","blurry","boolean","break","breaks","brettterpstra","broke","brute","build","bunch","bunchchoices","bunches","cspil","calling","calls","checked","checkmark","checkmarks","choice","choices","choose","class","clear","clearing","click","clicking","close","closes","closing","codingbunch","combination","command","commands","complex","complexity","complicated","confirm","contents","context","correlates","couple","create","damages","debugging","dedicating","default","defined","developer","dialog","dialogs","different","difficult","directly","disclaimer","disturb","doesn","download","earlier","easily","either","elegant","enabled","endnotes","enough","episodes","everyone","example","execute","executes","executing","expand","expanded","extra","extracting","false","favorite","feasible","feature","features","figcaption","figure","fixed","fixing","fnref","footnote","footnotes","force","fragment","fragments","function","gently","going","grateful","handler","happen","happens","having","height","hellip","highlight","highlighter","https","iterm","image","import","including","inordinate","interactive","interactivity","issues","items","knowledge","language","latest","launch","launched","launches","ldquo","leave","little","loading","logic","makes","marked","mdash","media","method","modifying","music","needs","noscript","noteref","notification","notifications","obliterate","official","optional"]
	},{
		"title": "PDFpen on the road or at your desk [Sponsor]",
		"url": "/2021/01/14/pdfpen-on-the-road-or-at-your-desk-sponsor/",
		"tags": ["sponsor"],
		"date": "Jan 14<span>th</span>, 2021",
		"ts": "1610635980",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com again this week! If you’re searching for a powerful PDF editing tool for your Mac, iPad, or iPhone, look no further than PDFpen. Whether you&rsquo;re on the road or at your desk, need advanced editing features, or just want to sign and email back a contract, PDFpen has you covered. PDFpen, PDFpenPro, and PDFpen for iPad & iPhone, all work together for seamless editing across devices when used with Dropbox or iCloud",
		"keywords": ["icloud","iphone","pdfpen","smile","software","brettterpstra","customizable","dropbox","learn","magnifier","pdfpen","pdfpenpro","stationary","thanks","window","ability","across","advanced","again","available","brettterpstra","class","colors","comes","compression","contract","covered","custom","designs","devices","document","editing","email","features","formats","great","height","https","icloud","iphone","image","including","iphone","label","labels","loading","media","multiple","nofollow","noscript","original","paper","pdfpen","picture","podcast","powerful","rsquo","seamless","searching","settings","smilesoftware","source","sponsoring","srcset","support","title","together","ultimate","uploads","users","width"]
	},{
		"title": "Web Excursions for January 13, 2021",
		"url": "/2021/01/13/web-excursions-for-january-13-2021/",
		"tags": ["bookmarks","email"],
		"date": "Jan 13<span>th</span>, 2021",
		"ts": "1610559840",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Slow Feeds I&rsquo;ve mentioned Slow Feeds in the past. It&rsquo;s an iOS RSS feed reader that lets you filter your feeds by posting frequency. Now, back and at version 6, Slow Feeds is simpler than ever. It’s a free download, but you can buy an upgrade to Super Slow Feeds to get unlimited access to older posts and lower posting frequency filters. Sorted3 I mentioned Sorted3 back in 2017. They&rsquo;ve just come out with a Mac companion version (Catalyst) of their streamlined todo/scheduling app. It&rsquo;s definitely worth a look. What I Use Now Instead Of Google A good list of alternatives to Google for everything from email to web searches. Cyber Attribution Report Writing a post-cyber-attack press release and need a nation state actor to blame? This page will generate everything you need. (humor) Sendy - Send Newsletters 100x cheaper via Amazon SES I&rsquo;ve been mentioning this lots of places, but I&rsquo;m really excited about it. Pointed out to my by Tyler Hall on Systematic, this self-hosted newsletter app lets you send trackable emails via Amazon Simple Email Service (SES) for a fraction of what major email services like Mailchimp will charge. If you have a medium-to-large mailing list, it&rsquo;s more than worth every penny",
		"keywords": ["amazon","email","publishing","technology","amazon","attribution","brett","catalyst","check","cyber","email","feeds","google","mailchimp","newsletters","pointed","report","sendy","service","setapp","simple","sorted","super","systematic","tyler","writing","access","actor","alternatives","apple","attack","blame","blockquote","brettterpstra","brought","charge","cheaper","class","companion","cyber","definitely","download","email","emails","everything","excited","excursions","feeds","filter","filters","fraction","frequency","google","height","holding","hosted","https","humor","hundreds","image","kiramclean","loading","lower","mailing","major","media","medium","mentioned","mentioning","monthly","nation","newsletter","noscript","older","original","partnership","penny","picture","places","posting","posts","press","producthunt","reader","release","rsquo","scheduling","searches","sendy","services","setapp","simpler","slowfeeds","source","srcset","store","streamlined","subscription","systematicpod","title","today","trackable","unlimited","upgrade","uploads","version","whohackedus","width","worth","zoziapps"]
	},{
		"title": "Bunch Updates",
		"url": "/2021/01/06/bunch-updates/",
		"tags": ["bunch"],
		"date": "Jan 6<span>th</span>, 2021",
		"ts": "1609949520",
		"summary": "I&rsquo;ve released an update to Bunch (v1.2.9) that all current users will appreciate. The universal change is related to some beachballing that would happen any time you quit a bunch. It turned out to be the AppleScript I use to save and restore desktop wallpaper. I made this routine only run when the Bunch actually has any commands that modify the wallpaper, and made it faster when it does run. So you should see a lot less \"spinning\" when launching and quitting Bunches. Secondly, I added a syntax for specifying a delay. You just add a tilde (~) immediately followed by an integer at the end of any app, script, or command line. So to have an AppleScript command delay by five seconds, you would use: The delay only affects the current line, and things after it in the Bunch won&rsquo;t wait for it to complete. I played with adding a full pause command, but Bunch is very asynchronous when it launches everything, and it would be an inefficient refactoring to make that work. Lastly, new Big Sur-style icon. In related news, the Bunch CLI is now a gem and can be installed with . Once it&rsquo;s installed, just run for an overview of commands. The update is available for current users under Bunch->Check for Updates. Learn more about Bunch and download the latest release on the project page",
		"keywords": ["applescript","command","interface","languages","scripting","applescript","bunch","bunches","check","lastly","learn","secondly","updates","added","adding","affects","appreciate","asynchronous","available","beachballing","bunch","change","command","commands","desktop","download","everything","faster","followed","happen","inefficient","installed","integer","latest","launches","launching","modify","overview","pause","played","project","quitting","refactoring","related","release","released","restore","routine","rsquo","script","seconds","specifying","spinning","style","syntax","tilde","turned","under","universal","users","wallpaper"]
	},{
		"title": "Brett's Favorites 2020",
		"url": "/2020/12/31/bretts-favorites-2020/",
		"tags": ["appreview","browser","developer","drafts","extension","hookmark","howzit","iphone","macos","mailmate","nvultra","podcasting","recipe","recording","search","setapp","solutions","spotlight","systematic","textexpander","tools","webdesign"],
		"date": "Dec 31<span>st</span>, 2020",
		"ts": "1609435860",
		"summary": "Happy New Year&rsquo;s Eve! As has been my tradition for almost a decade now (since 2011!), I&rsquo;ve compiled some of my favorite apps and things for the last year. Not a complete list, of course &mdash; I like a lot of things &mdash; but a good overview. Enjoy! Side note: I apologize for the lack of posts this last month. A combination of being (thankfully) stable with my bipolar (my manic episodes are great for blogging&hellip;) and being pretty sure my ADHD meds aren&rsquo;t working anymore has led to me mostly just being able to do what&rsquo;s absolutely required without a lot of room for creative pursuits. Hopefully I&rsquo;ll turn a corner on all that soon. Thanks for bearing with me! Anyway, onward! A good number of these apps are available via a Setapp subscription, so my first pick is going to be Setapp. For a low monthly price you get access to hundreds of high quality apps. Use my special link and I&rsquo;ll get a little bonus when you sign up. If an app I mention is available on Setapp, I&rsquo;ll note that in the description. Affinity Designer / Affinity Photo These apps have 100% replaced Adobe apps for me (Photoshop, Illustrator, respectively). Honestly, you couldn&rsquo;t ask for more complete photo/illustration tools, and the price is amazing for what you get. BarRemote I previously recommended NepTunes for this kind of thing, but since I almost exclusively use Spotify when listening on my Mac, BarRemote has been my menu bar music controller of choice. Spotify already scrobbles to Last.fm, and I haven&rsquo;t had space on my desktop for album artwork lately, so having a more compact controller in my menu bar is ideal. Bartender Bartender is the ultimate app for managing the macOS menu bar. Hide menu items you don&rsquo;t need while maintaining access to them when they are. It even has the ability to show items for a period of time when they change, so menu items that notify you of things can be temporarily visible. The Big Sur-only beta of version 4 is amazing, too. Available via Setapp. BetterTouchTool This app lets you do amazing things with your trackpad, keyboard, and even your Touch bar on MacBooks. If you want to customize your input devices, this is the ultimate app. Available via Setapp. Curio Curio 14 came out this year. This is still the most flexible app for brainstorming, reference collection, rich note taking, and project management. See the release notes for all the latest stuff. Dash Now on&hellip;",
		"keywords": ["setapp","store","adobe","affinity","amoeba","anyway","apple","arcade","audio","automatic","available","barremote","bartender","bettertouchtool","billings","brett","browsers","bunch","chrome","chromium","coherence","crossword","curio","daily","decent","default","defaultfolderx","descript","designer","developer","disclosure","drafts","ecamm","enjoy","everyone","fantastical","finder","firefox","folder","forklift","games","great","grind","grindstone","happy","hazel","hijack","honestly","honorable","hopefully","houdahspot","illustrator","kaleidoscope","letter","lively","logic","loopback","macbooks","mailmate","manager","markdown","marked","medisafe","merlin","metronome","midis","mindmeister","mindnode","multimarkdown","multimedia","neptunes","obscura","opener","paprika","patterned","photo","photos","photoshop","pierce","presented","preview","productivity","projects","pushcut","recipe","recorder","reincubate","rogue","sanebox","searchlink","service","setapp","shortcuts","silicon","single","soundsource","soundtrack","spark","spotify","spotlight","systematic","tableflip","textexpander","textsniper","thanks","timing","toaster","touch","tower","tyler","unite","virtualhostx","voice","watch","workona","works","writer","writing","ability","absolute","access","acquired","added","advanced","affinity","album","allowed","allowing","allows","almost","alphabetical","amazing","amount","animated","another","anymore","apologize","apple","appreciate","array","articles","artwork","audio","audiohijack","audiokit","automatically","automation","available","awesome","barremote","based","bases","basic","batch","bearable","bearing","became","because","before","between","binarynights","bipolar","bizarre","blogging","bonus","boost","bought","brainstorming","bretts","brettterpstra","browser","browsers","build","built","bunch","bzgapps","calendar","called","camera","capable","capture","change","changelog","changes","charm","cheap","cheat","check","choice","chose","class","click","clickontyler","clicks","client","clipboard","clock","close","coherence","collaborative","collages","collection"]
	},{
		"title": "Get ahead of your 2021 productivity with TextExpander",
		"url": "/2020/12/10/textexpander/",
		"tags": ["productivity","sponsor","textexpander"],
		"date": "Dec 10<span>th</span>, 2020",
		"ts": "1607608800",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Get ahead of your productivity for the New Year with the power of TextExpander. TextExpander removes the repetition out of work so you can focus on what matters most. Say goodbye to repetitive text entry, spelling and message errors, and trying to remember the right thing to say. When you use TextExpander, you can say the right thing in just a few keystrokes. Better than copy and paste, better than scripts and templates &mdash; TextExpander snippets allow you to maximize your time by getting rid of the repetitive things you type while still customizing and personalizing your messages. TextExpander can be used on just about any platform, in any app, anywhere you type. Take your time back in the New Year and increase your productivity with TextExpander. BrettTerpstra.com readers get 20% off their first year. Just visit textexpander.com to learn more",
		"keywords": ["computing","nofollow","paste","productivity","snippet","wordpress","world","brettterpstra","textexpander","thanks","ahead","allow","anywhere","customizing","entry","errors","first","focus","getting","goodbye","increase","keystrokes","learn","matters","maximize","mdash","message","messages","paste","personalizing","platform","productivity","readers","remember","removes","repetition","repetitive","right","scripts","snippets","spelling","sponsoring","templates","textexpander","trying","visit","while"]
	},{
		"title": "Remove the proxy icon hover delay in Big Sur",
		"url": "/2020/12/02/remove-the-proxy-icon-hover-delay-in-big-sur/",
		"tags": ["finder","icons","macos","terminal"],
		"date": "Dec 2<span>nd</span>, 2020",
		"ts": "1606925760",
		"summary": "I&rsquo;m usually a good sport about macOS updates. I find stuff to like, and deal with the bugs as they get worked out. I&rsquo;m not feeling as generous about Big Sur. Among many annoyances I have is a relatively (well, very) small one: Apple hid the proxy icon behind a rollover with a delay in Finder. If you&rsquo;re unfamiliar with them, proxy icons are the little icon to the left of a document title in the title bar. They act as a proxy for the document/file, allowing you to drag from the title bar to any application that accepts that type of document. Like I said, this change is tiny, but it&rsquo;s the kind of thing where I can&rsquo;t really understand the motivation for doing it. It seems like a regression to me, no matter how I look at it. I haven&rsquo;t found a way to sneakily bring them back, but I did find a way to at least remove the ~1s delay between hovering and the icon being exposed. Running that in Terminal and then restarting Finder () will make the proxy icon display immediately when your cursor rolls over it. It&rsquo;s a start., but I&rsquo;m still uncharacteristically grumpy about this whole OS",
		"keywords": ["cursor","finder","interfaces","managers","proxy","among","apple","boeijen","finder","herman","running","terminal","thanks","above","accepts","affects","allowing","annoyances","behind","between","bring","bundle","change","cursor","display","document","doing","exposed","feeling","found","generous","globally","grumpy","haven","hovering","icons","identifiers","little","macos","motivation","proxy","regression","relatively","remove","repeated","restarting","rollover","rolls","rsquo","seems","small","sneakily","sport","stuff","title","uncharacteristically","understand","unfamiliar","updates","using","usually","where","whole","worked"]
	},{
		"title": "Marked 2, Big Sur, and blurry PDFs",
		"url": "/2020/11/12/marked-2-big-sur-and-blurry-pdfs/",
		"tags": ["macos","marked","webkit"],
		"date": "Nov 12<span>th</span>, 2020",
		"ts": "1605196200",
		"summary": "Ok, so here&rsquo;s the deal. Marked works on Big Sur. If you&rsquo;re using it for previewing your Markdown or exporting HTML, it should continue to work perfectly for you. But if you, like a majority of my customers, use Marked to output great-looking PDFs, you&rsquo;re going to run into some trouble that will take me a while to sort out. The short story is this: on Big Sur, for whatever reason, generating PDFs using WebKit outputs a raster image rather than a vector PDF as it has always done in the past. This means it can&rsquo;t be zoomed, text isn&rsquo;t selectable, and it&rsquo;s basically a useless PDF. The workaround is simply to export to HTML, load it in Safari, and then print to PDF. You can get even better results using Firefox, but I&rsquo;ll be posting a knowledge base article on that. You&rsquo;ll lose some of Marked&rsquo;s more advanced export features, but you&rsquo;ll get a nice vector PDF out of it. Allow me to explain a little further why this isn&rsquo;t working, and why I&rsquo;m not prepared for the release of Big Sur today. When I first tested on Big Sur months ago, this problem became apparent. I filed bug reports and posted to forums but apparently I was the only person seeing this. This is mostly because the version of WebKit that Marked uses was deprecated a while ago, and most people had moved on to using the newer WKWebView. This wasn&rsquo;t an option for Marked at the time, though, as WKWebView completely lacked printing and PDF capabilities until recently. Switching to WKWebView meant major changes to Marked. I mean a complete rewrite of thousands of lines of code. And because the process meant losing major export functionality (among other losses), there was no justification for doing it. Zero. So I hoped that this PDF bug would be fixed and I wouldn&rsquo;t have to make the switch until WKWebView was actually suitable for use. WKWebView has finally added some of the features I need, though implemented in such a way that I still can&rsquo;t fully replicate the functionality Marked had with the older WebView. And if I implement the latest features, it risks becoming incompatible with older macOS versions, meaning I&rsquo;d have to have two entirely different apps available if I wanted to maintain customers who, for various reasons, haven&rsquo;t chosen to update their OS. Which isn&rsquo;t a trivial number these days. After spending days and weeks on workarounds, I&rsquo;ve come down to completely bypassing&hellip;",
		"keywords": ["safari","webkit","allow","firefox","markdown","marked","safari","switching","wkwebview","webkit","webview","ability","across","added","advanced","allow","among","apparently","article","available","basic","became","because","becoming","browser","bypassing","capabilities","change","changes","chosen","coming","completely","continue","custom","customers","customizable","deprecated","different","documents","doing","entirely","especially","explain","export","exported","exporting","exports","features","filed","finally","first","fixed","footers","forums","fully","functionality","generating","going","great","haven","headers","hoped","image","implemented","improve","incompatible","justification","knowledge","lacked","latest","little","looking","losing","losses","macos","maintain","major","meaning","meant","mostly","moved","newer","offering","older","output","outputs","people","perfectly","person","posted","posting","prepared","previewing","print","printing","problem","process","raster","rather","reasons","recently","release","replicate","reports","results","rewrite","right","risks","rsquo","ruined","seeing","selectable","short","shouldn","showstopper","significantly","simply","solid","solution","spending","story","suitable","summarize","switch","system","tested","themes","thousands","through","today","trivial","trouble","updating","useless","using","various","vector","version","versions","wanted","weeks","whatever","while","workaround","workarounds","working","works","wouldn","zoomed"]
	},{
		"title": "PDFpen: Powerful PDF Editing [Sponsor]",
		"url": "/2020/11/12/pdfpen/",
		"tags": ["sponsor"],
		"date": "Nov 12<span>th</span>, 2020",
		"ts": "1605189600",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! If you want truly flexible and powerful PDF editing, PDFpen is the only app you need. If you’re searching for a powerful PDF editing tool for your Mac, iPad, or iPhone, look no further than PDFpen. Whether you’re on the road or at your desk, need advanced editing features or just want to sign and email back a contract, PDFpen has you covered. The ultimate tool for editing PDFs on the Mac now includes even more powerful features including page label support in multiple formats for documents. And Pro users can go a step farther with the ability to add or edit page labels. That&rsquo;s in addition to the great features available in PDFpen 12, including: PDFpen, PDFpenPro, and PDFpen for iPad & iPhone, all work together for seamless editing across devices when used with Dropbox or iCloud. Learn more about PDFpen and PDFpenPro at smilesoftware.com",
		"keywords": ["icloud","iphone","pdfpen","smile","software","brettterpstra","customizable","dropbox","learn","magnifier","pdfpen","pdfpenpro","stationery","thanks","window","ability","across","advanced","available","brettterpstra","class","colors","compression","contract","covered","custom","designs","devices","document","documents","editing","email","farther","features","flexible","formats","great","height","https","icloud","iphone","image","includes","including","iphone","label","labels","loading","media","multiple","nofollow","noscript","original","paper","pdfpen","picture","podcast","powerful","rsquo","seamless","searching","settings","smilesoftware","source","sponsoring","srcset","support","title","together","truly","ultimate","uploads","users","width"]
	},{
		"title": "Hook 2.0 and updated CLI",
		"url": "/2020/11/11/hook-2-dot-0-and-updated-cli/",
		"tags": ["hookcli","hookmark"],
		"date": "Nov 11<span>th</span>, 2020",
		"ts": "1605115560",
		"summary": "Version 2.0 of Hook is out, and there&rsquo;s a lot to talk about. Creator Luc Beaudoin was on Mac Power Users recently, discussing Hook among other things. You can see everything that&rsquo;s new in the Hook 2.0 Release Notes. If you&rsquo;ve checked out Hook in the past but weren&rsquo;t sold, take a fresh look at it. There&rsquo;s an updated UI, including a full browser with previews for hooked items, pinned hooks, and an expansion of the way hooks can act as bookmarks. As part of this, the API was significantly changed (all for the better), thus the command line interface I wrote for it (which relies on Hook&rsquo;s AppleScript library) required an overhaul. The CLI has several new features, including a command for searching bookmarks by url or name, for selecting files to operate on, and built-in shell completion scripts for bash, zsh, and fish. Check out the project page and see the GitHub README for full documentation. If you already have the gem installed, you can update it to work with Hook 2.0 using ",
		"keywords": ["applescript","hooking","languages","rubygems","scripting","applescript","beaudoin","check","creator","github","notes","readme","release","users","version","among","bookmarks","browser","built","changed","checked","command","discussing","everything","expansion","features","files","fresh","hooked","hooks","including","installed","interface","items","library","overhaul","pinned","previews","project","recently","relies","required","rsquo","scripts","searching","selecting","several","shell","significantly","updated","using","weren","wrote"]
	},{
		"title": "Dealing with leftover Zoom tabs in the browser",
		"url": "/2020/11/06/dealing-with-leftover-zoom-tabs-in-the-browser/",
		"tags": ["applescript","safari","scripting","webdesign"],
		"date": "Nov 6<span>th</span>, 2020",
		"ts": "1604682420",
		"summary": "I wrote a quick script in response to a tweet from Brittany Smith in which she sought a solution for all the leftover Zoom tabs she had open in Safari after following a link that launched the Zoom app. I&rsquo;m not in enough Zoom calls on a daily basis for this to be a real issue for me, but it was an easy enough script to whip up. I&rsquo;m sharing it in case more people than just Brittany are in the same boat. My kingdom for an automation tool to close every Zoom browser tab I forgot to close in Safari. @ttscoff ?&mdash; Brittany Sith (@addliberator) November 5, 2020 It should be noted that there&rsquo;s a Safari extension called Zoom In that purports to provide a very elegant solution to this issue. I only hacked this together when Brittany said that the extension wasn&rsquo;t working for her. Rather than bother trying to test it myself, I just wrote an AppleScript to handle it. This will only work with Safari, but could easily be adapted to Chrome (and Brave, and probably Edge). It will never work with Firefox. Well, I shouldn&rsquo;t say never, maybe someday Mozilla will get its AppleScript act together&hellip; Here&rsquo;s the script. You can trigger it from LaunchBar or Alfred, or use Automator to create a Workflow, Service, or App bundle. I&rsquo;ll leave it at that. It&rsquo;s working in my initial testing, but if you try it out and run into issues, please leave a comment or Tweet at me and I&rsquo;ll update the gist with any fixes",
		"keywords": ["browser","alfred","applescript","automator","brave","brittany","chrome","firefox","launchbar","mozilla","rather","safari","service","smith","workflow","adapted","addliberator","automation","basis","bother","browser","bundle","called","calls","close","comment","create","daily","easily","elegant","enough","extension","fixes","forgot","hacked","handle","hellip","initial","issues","kingdom","launched","leave","leftover","maybe","mdash","myself","noted","people","purports","quick","response","rsquo","script","sharing","shouldn","solution","someday","sought","testing","together","trigger","trying","ttscoff","working","wrote"]
	},{
		"title": "The Podcasts: Week of November 2nd",
		"url": "/2020/11/06/the-podcasts-week-of-november-2nd/",
		"tags": ["overtired","podcast","systematic"],
		"date": "Nov 6<span>th</span>, 2020",
		"ts": "1604679480",
		"summary": "Hey, welcome to another week of podcasts! On Systematic this week I was joined by Kelly Guimont. Since her last visit, she&rsquo;s become an Operations Manager for Technolutionary. We talked a bit about her work, tech support, and before long we got into some of her true loves: Star Wars and fiber arts. The lighthearted conversation we all need right now (at least in the US), and Kelly is always a delight. Overtired 212 was recorded on election day, prior to knowing any results at all. We predicted exactly what&rsquo;s happened, though it didn&rsquo;t take a pair of geniuses to guess how things were going to turn out. So we don&rsquo;t take too much credit for stating the obvious. Among the spread of other toppics, we also get into the mental health concerns that so many people have surrounding election season. Worth a listen to even if it&rsquo;s not technically \"Live Election Coverage.\" Find all the episodes at systematicpod.com and overtiredpod.com, and be sure to subscribe! My ability to keep the shows going is dependent on my ability to secure advertisers, which is in turn dependent on subscriber numbers. Getting yourself counted in my download stats (and maybe checking out the sponsors now and then) is all you have to do to support either or both shows",
		"keywords": ["election","guimon","kelly","president","among","coverage","discord","election","getting","guimont","kelly","manager","operations","overtired","since","systematic","technolutionary","worth","ability","advertisers","another","before","checking","concerns","conversation","counted","credit","delight","dependent","download","either","election","episodes","fiber","geniuses","going","guess","happened","health","joined","knowing","lighthearted","listen","loves","maybe","mental","numbers","obvious","overtiredpod","people","podcasts","predicted","recorded","results","right","rsquo","season","secure","shows","sponsors","spread","stating","stats","subscribe","subscriber","support","surrounding","systematicpod","talked","technically","toppics","visit","welcome"]
	},{
		"title": "The Podcasts: Week of October 26th",
		"url": "/2020/10/30/the-podcasts-week-of-october-26th/",
		"tags": ["overtired","podcast","systematic"],
		"date": "Oct 30<span>th</span>, 2020",
		"ts": "1604090940",
		"summary": "So I took this week off on Systematic. I was working (really hard!) to bring on a guest who could speak well to the mood of the US right before an historic election, but it turns out that most people that I consider \"credentialed\" for this discussion also have a lot of other stuff to do right before an historic election. So scheduling fell through a few times, and I&rsquo;ll try to connect with some of my hopefuls in a few weeks and see how things are going. In the meantime, I&rsquo;m very much looking forward to chatting with Kelly Guimont this coming week! Overtired #211 was a blast. We&rsquo;ve decided to record in the mornings for the foreseeable future. We&rsquo;re just better that way. This episode was heavy on the TV discussions, but also dug in hard to command line note taking and custom keyboards. So if you fit some overlap of that Venn diagram, we have you covered. Find all the episodes at systematicpod.com and overtiredpod.com, and be sure to subscribe! My ability to keep the shows going is dependent on my ability to secure advertisers, which is in turn dependent on subscriber numbers. Getting yourself counted in my download stats (and maybe checking out the sponsors now and then) is all you have to do to support either or both shows",
		"keywords": ["keyboard","politics","television","getting","guimont","kelly","overtired","systematic","ability","advertisers","before","blast","bring","chatting","checking","coming","command","connect","consider","counted","covered","credentialed","custom","decided","dependent","diagram","discussion","discussions","download","either","election","episode","episodes","foreseeable","going","guest","heavy","historic","hopefuls","keyboards","looking","maybe","meantime","mornings","numbers","overlap","overtiredpod","people","record","right","rsquo","scheduling","secure","shows","speak","sponsors","stats","stuff","subscribe","subscriber","support","systematicpod","taking","through","times","turns","weeks","working"]
	},{
		"title": "Progressive builds for Deckset",
		"url": "/2020/10/27/progressive-builds-for-deckset/",
		"tags": ["markdown","service"],
		"date": "Oct 27<span>th</span>, 2020",
		"ts": "1603833900",
		"summary": "I&rsquo;m a fan of Deckset for creating presentation decks using Markdown. Being able to write out an entire presentation in plain text is slick, and doing so cuts out time spent on transitions, animations, and other frivolities that come with building a deck in Keynote or PowerPoint. One thing that I&rsquo;ve always missed, though, is progressive builds for lists, where each bullet item is revealed only when you advance. The only way to replicate this in Deckset is to slowly build over multiple slides, adding one new list item with each. Which is a pain. A friend of mine had the same issue and asked me to automate it. So I present the \"Spread Build Service.\" This Service just takes text containing multiple lines and expands it to a series of slides, starting with just the first line and progressively adding one line at a time until the full set is displayed. It can be used with bullet lists, numeric lists, or any text that has line breaks in it. Example input",
		"keywords": ["bullet","keynote","powerpoint","presentation","software","build","deckset","example","keynote","markdown","powerpoint","service","spread","adding","animations","asked","automate","breaks","build","building","builds","bullet","containing","creating","decks","displayed","doing","entire","expands","first","friend","frivolities","input","lists","missed","multiple","numeric","presentation","progressive","progressively","replicate","revealed","rsquo","series","slick","slides","slowly","spent","starting","takes","transitions","using","where","write"]
	},{
		"title": "The Podcasts: Week of October 19th",
		"url": "/2020/10/23/the-podcasts-week-of-october-19th/",
		"tags": ["overtired","podcast","systematic"],
		"date": "Oct 23<span>rd</span>, 2020",
		"ts": "1603465920",
		"summary": "This week on Systematic, I spoke with Jay Miller, a developer advocate for Elastic, and a guy who \"builds stuff to help people who build stuff build stuff.\" Which is a descriptive, albeit circumspect, way to say he makes cool stuff. He&rsquo;s also one of the few Black developers I&rsquo;ve had the pleasure of talking to on Systematic, a thing I&rsquo;d like to make less rare. This week&rsquo;s Overtired has the topic list in the title: \"A Disturbing B-12 Social Media Sex Cult Injection.\" We navigate from dietary supplements to sex cults to radicalizing people via algorithms. It&rsquo;s not necessarily a line, as I&rsquo;m wont to switch topics very abruptly, but it does all relate in some manner, if you try hard enough. I have no intention of ever being good at sticking to a theme. Find all the episodes at systematicpod.com and overtiredpod.com, and be sure to subscribe! My ability to keep the shows going is dependent on my ability to secure advertisers, which is in turn dependent on subscriber numbers. Getting yourself counted in my download stats (and maybe checking out the sponsors now and then) is all you have to do to support either or both shows",
		"keywords": ["miller","nxivm","vitamins","black","disturbing","elastic","getting","injection","media","miller","overtired","social","systematic","ability","abruptly","advertisers","advocate","albeit","algorithms","build","builds","checking","circumspect","counted","cults","dependent","descriptive","developer","developers","dietary","download","either","enough","episodes","going","intention","makes","maybe","navigate","necessarily","numbers","overtiredpod","people","radicalizing","relate","rsquo","secure","shows","spoke","sponsors","stats","sticking","stuff","subscribe","subscriber","supplements","support","switch","systematicpod","talking","theme","title","topic","topics"]
	},{
		"title": "The Podcasts: Week of October 12th",
		"url": "/2020/10/16/the-podcasts-week-of-october-12th/",
		"tags": ["overtired","podcast","systematic"],
		"date": "Oct 16<span>th</span>, 2020",
		"ts": "1602872820",
		"summary": "This is actually a double &mdash; well, quadruple &mdash; update. I missed the summary last week, so you get four at once. Four high quality, like-new podcasts, for the low, low price of $0. Let&rsquo;s start with Systematic. On episode 241 I had Tyler Hall on. He&rsquo;s a Mac and iOS developer who has consistently created amazing software, always with the purpose of solving a problem he himself has, but crafted in a way that makes them accessible and useful to many others. In some ways I think of him as a kindred spirit, so it was great to chat with him. On episode 242 I spoke with the delightful Alex Cox. They co-host Two Headed Girl and Do By Friday, and I&rsquo;ve been a fan of theirs for a few years now. We caught up and dove into a discussion about gender, bipolar disorder, and virtual reality, among other topics. It was an excellent conversation. Meanwhile, episode 208 of Overtired was titled \"More Things to Not Talk About at Dinner\" and basically serves as a guide to topics that should generally be avoided at family gatherings. Unless your family is just down for anything. Veganism, politics, religion, we hit &lsquo;em all. On Overtired 209 we stuck more to drugs, mechanical keyboards, and Microsoft Excel, though we did dip again into politics. How can you not right now? We recorded this one pretty early in the morning and that actually seemed to make it even more energetic. Guess us insomniacs are good morning people. I&rsquo;d also like to mention that I&rsquo;ve started a Discord server for Systematic and Overtired listeners. There&rsquo;s already a great community forming there, and I&rsquo;d love it if you joined us! Find all the episodes at systematicpod.com and overtiredpod.com, and be sure to subscribe! My ability to keep the shows going is dependent on my ability to secure advertisers, which is in turn dependent on subscriber numbers. Getting yourself counted in my download stats (and maybe checking out the sponsors now and then) is all you have to do to support either or both shows",
		"keywords": ["christina","tyler","warren","dinner","discord","excel","friday","getting","guess","headed","meanwhile","microsoft","overtired","systematic","tyler","veganism","ability","accessible","advertisers","again","amazing","among","avoided","bipolar","caught","checking","community","consistently","conversation","counted","crafted","created","delightful","dependent","developer","discussion","disorder","double","download","drugs","either","energetic","episode","episodes","excellent","family","forming","gatherings","gender","generally","going","great","guide","himself","insomniacs","joined","keyboards","kindred","listeners","lsquo","makes","maybe","mdash","mechanical","mention","missed","morning","numbers","others","overtiredpod","people","podcasts","politics","price","problem","quadruple","quality","reality","recorded","religion","right","rsquo","secure","seemed","server","serves","shows","software","solving","spirit","spoke","sponsors","started","stats","stuck","subscribe","subscriber","summary","support","systematicpod","theirs","think","titled","topics","useful","virtual","years"]
	},{
		"title": "Get more done: check out Curio 14 today [Sponsor]",
		"url": "/2020/10/15/get-more-done-check-out-curio-14-today-sponsor/",
		"tags": ["productivity","sponsor","support"],
		"date": "Oct 15<span>th</span>, 2020",
		"ts": "1602766800",
		"summary": "Thanks to Curio for sponsoring BrettTerpstra.com this week! I&rsquo;ve been a fan of Curio for years &mdash; for everything from research and brainstorming to full project management &mdash; and it keeps getting better! Curio is an intuitive, freeform notebook environment with all the integrated tools you need to take notes, brainstorm ideas, collect research, and organize your tasks and documents. Fill your projects with your rich text and markdown notes, images, PDFs, document files, web links, and multimedia. Then use Curio’s integrated mind maps, lists, tables, index cards, albums, pinboards, and Kanban-style stacks to organize your data into powerful collections. macOS Big Sur support An integrated journalling system Dynamic Table of Contents figure Brush and pen support for iPad+Apple Pencil sketching, Improved DEVONthink and Hook integration And much, much more Curio is available as either a traditional license purchase or as a Mac App Store subscription. Learn more about Curio 14 and begin your 2-week trial today",
		"keywords": ["curio","macos","productivity","apple","buvspx","bigsur","brettterpstra","brush","contents","curio","devonthink","dynamic","embedded","equation","extensive","gqlna","himcrzl","hulogsm","helpful","improved","jghrsu","jnmoasg","jnmoys","kanban","learn","mlnvbzm","pencil","sgkqwlaysg","sleuth","spread","store","tfrgexlxtttttttzthahottttttgr","table","thanks","woucoz","wuncrzl","yoncrzl","youtube","zfauyttttttbdw","zyzatttttte","albums","annotations","assistant","available","begin","brainstorm","brainstorming","brettterpstra","buysellads","cards","class","collect","collections","document","documents","either","environment","everything","features","figure","figures","files","freeform","getting","height","https","ideas","image","images","index","integrated","integration","internet","intuitive","journalling","keeps","license","linking","links","lists","loading","macos","management","markdown","mdash","media","metadata","multimedia","nofollow","noscript","notebook","notes","organize","original","picture","pinboards","powerful","productive","project","projects","rendering","research","rsquo","shelf","sketching","source","sponsoring","srcset","stacks","style","subscription","support","system","tables","tasks","title","today","tools","tracking","traditional","trial","uploads","videos","views","width","years"]
	},{
		"title": "Web Excursions for October 13, 2020",
		"url": "/2020/10/13/web-excursions-for-october-13-2020/",
		"tags": ["bookmarks","webdesign"],
		"date": "Oct 13<span>th</span>, 2020",
		"ts": "1602615900",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Vertical tabs and why Firefox is the new hotness (again) Having switched to Firefox, I was happy that Justin Blanton pointed me to this post on Tree Style Tab, an extension for adding vertical tabs in Firefox. The post includes instructions for hiding the regular horizontal tabs. Hello Kinopio Kinopio is a freeform brainstorming application that lets you drop ideas in with zero connections, figuring out how things connect later. A different take on mind mapping. xwmx/nb CLI plain-text note-taking, bookmarking, and archiving with encryption, filtering and search, Git-backed versioning and syncing, Pandoc-backed conversion, and more in a single portable script. Tokens 2 Tokens is a great app for developers who want to make easy-to-redeem promo code links for their giveaways and promos. Version 2 is a huge upgrade, so even if you&rsquo;ve looked at it in the past, it&rsquo;s worth checking out again. sassman/t-rec-rs Blazingly fast terminal recorder that generates animated GIFs",
		"keywords": ["firefox","promo","store","terminal","blanton","blazingly","cleanmymac","firefox","having","hello","justin","kinopio","pandoc","style","tokens","version","vertical","adding","again","animated","archiving","backed","bookmarking","brainstorming","brought","checking","connect","connections","conversion","developers","different","encryption","excursions","extension","figuring","filtering","freeform","generates","giveaways","great","happy","hiding","horizontal","hotness","ideas","includes","instructions","later","links","looked","mapping","partnership","pointed","portable","promo","promos","recorder","redeem","regular","rsquo","sassman","script","search","single","speed","switched","syncing","taking","terminal","tools","upgrade","versioning","vertical","worth"]
	},{
		"title": "Take your time back with TextExpander [Sponsor]",
		"url": "/2020/10/09/take-your-time-back-with-textexpander-sponsor/",
		"tags": ["sponsor","textexpander"],
		"date": "Oct 9<span>th</span>, 2020",
		"ts": "1602244800",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! I&rsquo;ve said it many times, but I&rsquo;d be lost without TextExpander on my Mac, iPhone, and iPad. Take your time back with the power of TextExpander. Repetitive typing, little mistakes, searching for answers &mdash; they&rsquo;re all taking precious time away from you and your team. With TextExpander, you can take it back. Work faster and smarter Create powerful snippets to save you time so that all you type is a short abbreviation, and TextExpander does the rest of the typing for you Use TextExpander&rsquo;s powerful shortcuts and abbreviations to streamline and speed up everything you type Keep your team consistent, accurate, and current. Everyone will share the same message and give the same answers to all customer questions Share your snippets for messaging, signatures, and descriptions with everyone who works on projects with you TextExpander is available on Mac, Windows, Chrome, iPhone, iPad. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["iphone","software","textexpander","brettterpstra","chrome","create","enterprise","everyone","repetitive","share","textexpander","thanks","visit","windows","abbreviation","abbreviations","ability","accurate","answers","available","build","consistent","customer","customizable","descriptions","everyone","everything","faster","first","iphone","improved","including","individuals","latest","learn","little","mdash","message","messaging","mistakes","organizations","powerful","precious","projects","questions","ranges","readers","reporting","reports","rsquo","saves","searching","share","short","shortcuts","signatures","smarter","snippets","speed","sponsoring","statistics","streamline","taking","textexpander","times","track","typing","version","works"]
	},{
		"title": "The Podcasts: Week of September 28th",
		"url": "/2020/10/02/the-podcasts-week-of-september-28th/",
		"tags": ["overtired","podcast","podcasting","systematic"],
		"date": "Oct 2<span>nd</span>, 2020",
		"ts": "1601673540",
		"summary": "I&rsquo;ve been a bit light on the blogging this week. My energy level is pretty good, but most of my time has gone into podcast editing and guesting on other podcasts. I guess I&rsquo;m a podcaster? That doesn&rsquo;t sound quite right, but I&rsquo;ll keep trying to figure it out. This week on Systematic, my guest was Jared Rodriguez, an assistant professor at the University of Alabama, teaching in the department of gender and race studies. It was his second appearance, and a timely one to discuss racism in the context of current events. Conversations with Jared are always enlightening, and I love his energy. Over on the Overtired, Christina and I recorded unexpectedly early, which meant even more off-script than usual. It turns out that, given no prompts or bullet points, we do exactly what we always do&hellip; nerd out about mental health and mass media. I do enjoy our shared love of television. My mom said no good would come from hours of watching the boob-tube, but I&rsquo;m trying to make the best of it. Find all the episodes at systematicpod.com and overtiredpod.com, and be sure to subscribe! My ability to keep the shows going is dependent on my ability to secure advertisers, which is in turn dependent on subscriber numbers. Getting yourself counted in my download stats (and maybe checking out the sponsors now and then) is all you have to do to support either or both shows",
		"keywords": ["commentary","health","mental","racism","television","alabama","christina","conversations","getting","jared","overtired","rodriguez","systematic","university","ability","advertisers","appearance","assistant","blogging","bullet","checking","context","counted","department","dependent","doesn","download","editing","either","energy","enjoy","enlightening","episodes","events","figure","gender","going","guess","guest","guesting","health","hellip","hours","level","light","maybe","meant","media","mental","numbers","overtiredpod","podcast","podcaster","podcasts","points","professor","prompts","racism","recorded","right","rsquo","script","second","secure","shared","shows","sound","sponsors","stats","studies","subscribe","subscriber","support","systematicpod","teaching","television","timely","trying","turns","unexpectedly","watching"]
	},{
		"title": "The Podcasts: Week of September 21st",
		"url": "/2020/09/25/the-podcasts-week-of-september-21st/",
		"tags": ["overtired","podcast","systematic"],
		"date": "Sep 25<span>th</span>, 2020",
		"ts": "1601060400",
		"summary": "I had the pleasure of interviewing Patrice Brend&rsquo;amour on Systematic #239 this week. Last time Patrice was on Systematic (2014), she was living as a man, and has since transitioned to being a proud, transgender woman. I&rsquo;ve always supported trans people, but have been hesitant to ask a lot of questions I assume are stupid of trans the people in my life. Patrice gave me a chance to ask them with openness and understanding, and I learned a lot. Meanwhile, on Overtired #206, Christina and I started with our \"mental health corner,\" in which we talked about depression, both in the context of my bipolar disorder and in the broader world of clinical depression. Of course, we soon moved on to mechanical keyboards, Schitt&rsquo;s Creek, and our favorite audio books, closing with a bit of debate over the legacy of Ruth Bader Ginsburg. (Spoiler: she was a hero, but not perfect. Because nobody is.) Thanks to ExpressVPN for sponsoring both shows this week. If you want secure, private internet browsing with the added benefit of circumventing geographic restrictions on streaming services, ExpressVPN is the #1 rated choice. Check it out with my exclusive link, expressvpn.com/systematic, to get three months free with a one-year plan. Find all the episodes at systematicpod.com and overtiredpod.com, and be sure to subscribe! My ability to keep the shows going is dependent on my ability to secure advertisers, which is in turn dependent on subscriber numbers. Getting yourself counted in my download stats (and maybe checking out the sponsors now and then) is all you have to do to support either or both shows",
		"keywords": ["creek","depression","keyboard","mechanical","schitt&#39;s","transgender","bader","because","brend","check","christina","creek","expressvpn","getting","ginsburg","meanwhile","overtired","patrice","schitt","spoiler","systematic","thanks","ability","added","advertisers","amour","assume","audio","benefit","bipolar","books","broader","browsing","chance","checking","choice","circumventing","clinical","closing","context","corner","counted","debate","dependent","depression","disorder","download","either","episodes","exclusive","expressvpn","favorite","geographic","going","health","hesitant","internet","interviewing","keyboards","learned","legacy","living","maybe","mechanical","mental","moved","nobody","numbers","openness","overtiredpod","people","private","proud","questions","rated","restrictions","rsquo","secure","services","shows","since","sponsoring","sponsors","started","stats","streaming","stupid","subscribe","subscriber","support","supported","systematic","systematicpod","talked","trans","transgender","transitioned","understanding","woman","world"]
	},{
		"title": "Web Excursions for September 25, 2020",
		"url": "/2020/09/25/web-excursions-for-september-25-2020/",
		"tags": ["bookmarks"],
		"date": "Sep 25<span>th</span>, 2020",
		"ts": "1601048340",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Pixelmator Pro gets AppleScript support In a collaboration with Sal Soghoian himself, Pixelmator has released a very full-featured AppleScript library for their top-shelf photo editing app. As far as I know, only Acorn has ever paid this much attention to automation, and it&rsquo;s really refreshing to see. To Anybody Going Through It I wrote about the depressive side of my bipolar disorder last week. I wanted to also share this excellent piece on depression from Kevin Love of the Cleveland Cavaliers. GitHub CLI 1.0 is now available I&rsquo;ve been happily using the CLI for a lot of GitHub functionality, but this completes the toolset. Rethinking the App Store A well-thought-out look from Ben Thompson at the App Store by way of the Epic/Apple debacle. asdf-vm/asdf: Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more I&rsquo;m afraid I&rsquo;ve lost track of who pointed me to this when I was having issues, but it&rsquo;s a pretty impressive tool: > is a CLI tool that can manage multiple language runtime versions on a per-project basis. It is like gvm, nvm, rbenv & pyenv (and more) all in one. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["acorn","applescript","editors","github","graphics","pixelmator","raster","soghoian","acorn","anybody","apple","applescript","backblaze","cavaliers","check","cleveland","elixir","erlang","extendable","github","going","kevin","pixelmator","rethinking","soghoian","store","thompson","through","affordably","afraid","automation","available","backs","basis","bipolar","brought","cloud","collaboration","completes","computer","debacle","depression","depressive","disorder","editing","entire","everything","excellent","excursions","featured","functionality","happily","having","himself","impressive","issues","language","library","manager","multiple","partnership","photo","piece","pointed","project","pyenv","rbenv","refreshing","released","reliably","rsquo","runtime","securely","share","shelf","support","thought","today","toolset","track","using","version","versions","wanted","wrote"]
	},{
		"title": "Bipolar: feelings vs. reality",
		"url": "/2020/09/21/bipolar-feelings-vs-reality/",
		"tags": ["bipolar","mentalhealth","personal","writing"],
		"date": "Sep 21<span>st</span>, 2020",
		"ts": "1600693200",
		"summary": "I wrote a couple of weeks ago about being bipolar. I wrote that piece while I was in a manic phase, and I told myself I&rsquo;d write another one while I was in a depression, just to contrast. If I&rsquo;m going to share about a binary disorder, it seems important to document it from both sides. The thing is, I went through the depression and was unable to write for the whole week. I queued up a full week of posts while I was manic and just scheduled them to publish over the week I knew I was going to be down. Planning ahead! Writing about the manic side was easy. It just flowed out of me &mdash; kind of unstoppable. Writing about the depressive side is much more difficult. It takes a concerted effort and there&rsquo;s a whole potential shame spiral involved. Anyone suffering from depression is probably intimately familiar with this. I always underestimate the depression side of my mood swings. I know what the manic phase will be like. I know how much I&rsquo;ll get done, how I&rsquo;ll be full of ideas, how little sleep I&rsquo;ll get, and how much that will wear me down over the course of it. In my mind the depression will just be a couple of days off, catching up on sleep, getting back to normal. It never is, and I don&rsquo;t know why I never remember that. Writing this post is an example of the difference. While I&rsquo;m manic I assume that people want to hear what I have to say. I assume that people are interested in what&rsquo;s happening to me, and that what I can share might help them in their own lives. When I&rsquo;m depressed, it&rsquo;s the opposite. I assume that nobody wants to hear from me, that nobody could possibly care enough about what I have to say for it to matter. I get down about my readership and listenership numbers &mdash; I don&rsquo;t think there&rsquo;s any number high enough to make me feel validated in those times. There&rsquo;s no amount of affirmation that can make me feel like I&rsquo;m OK. My depressions are short enough that I can rest assured there&rsquo;s some sunlight just over the horizon. Sometimes they&rsquo;re as short as three days. It will usually be at about the middle of the run that I&rsquo;ll realize that what I&rsquo;m feeling doesn&rsquo;t reflect the reality around me. Unlike the manic phases, where I&rsquo;m immediately aware of what&rsquo;s happening and am cognizant of my mental state the entire time, depression settles in more slowly and feels more real. At the point I finally become aware&hellip;",
		"keywords": ["anxiety","depression","anyone","based","lifeboat","planning","sometimes","unlike","while","writing","above","adult","affirmation","again","ahead","amount","another","assume","assurance","assured","aware","becomes","before","between","binary","bipolar","catching","climbing","cognizant","communication","concerted","contrast","convince","couple","credit","depressed","depression","depressions","depressive","developed","difference","difficult","disorder","document","doesn","doing","downs","effort","enough","entire","especially","eventually","example","experience","familiar","family","feeling","feels","finally","first","floating","flowed","foremost","fortune","friends","getting","going","greatest","happen","happening","happens","harder","having","heart","honest","horizon","human","ideas","important","interested","intimately","involved","keeping","knowing","lasted","level","listenership","little","lives","losing","loved","maintain","manic","mdash","mental","middle","myself","nobody","normal","numbers","opposite","patterns","people","periods","person","phase","phases","piece","point","possible","possibly","posts","potential","proven","psychiatrist","publish","queued","readership","reality","realize","reflect","regret","remember","repeating","right","rising","rough","rsquo","scheduled","seems","settles","shame","share","short","sides","significantly","sleep","slowly","spiral","stable","suffer","suffering","sunlight","swings","takes","talking","themselves","think","thoughts","through","times","token","tools","track","unable","underestimate","understanding","unstoppable","usually","validated","wants","weeks","where","while","whole","world","worst","write","writing","wrote","years"]
	},{
		"title": "The Podcasts: Week of September 14th",
		"url": "/2020/09/18/the-podcasts-week-of-september-14th/",
		"tags": ["overtired","podcast","systematic"],
		"date": "Sep 18<span>th</span>, 2020",
		"ts": "1600458420",
		"summary": "I had a frank discussion about my bipolar disorder with Christina on Overtired this week. We eventually moved on to an in-depth discussion of the benefits of VS Code, which might seem like a strange transition, but you&rsquo;ll be amazed how effortless we make it seem. Before it was all over, we also got into cable management for nerds and somehow managed to ignore Taylor Swift completely for a week. I&rsquo;m not complaining, this was more up my alley. I&rsquo;m also really proud of the Sleep Quality Index episode image &mdash; topical and nicely executed. Good work, Brett. Over on Systematic, I had the pleasure of welcoming Rabbi Eric Linder back. The conversation ranged from leading a congregation during the age of Zoom to home music and his Klezmer band, with some fun talk about Mac and iOS and how they play into both of the aforementioned topics. Find all the episodes at systematicpod.com and overtiredpod.com, and be sure to subscribe! My ability to keep the shows going is dependent on my ability to secure advertisers, which is in turn dependent on subscriber numbers. Getting yourself counted in my download stats (and maybe checking out the sponsors now and then) is all you have to do to support either or both shows",
		"keywords": ["culture","jewish","klezmer","music","yiddish","before","brett","christina","getting","index","klezmer","linder","overtired","quality","rabbi","sleep","swift","systematic","taylor","ability","advertisers","aforementioned","alley","amazed","benefits","bipolar","cable","checking","complaining","completely","congregation","conversation","counted","dependent","depth","discussion","disorder","download","effortless","either","episode","episodes","eventually","executed","frank","going","ignore","image","leading","managed","management","maybe","mdash","moved","music","nerds","nicely","numbers","overtiredpod","proud","ranged","rsquo","secure","shows","somehow","sponsors","stats","strange","subscribe","subscriber","support","systematicpod","topical","topics","transition","welcoming"]
	},{
		"title": "Bunch Snippet Fragments",
		"url": "/2020/09/17/bunch-snippet-fragments/",
		"tags": ["automation","bunch","dropbox","snippet"],
		"date": "Sep 17<span>th</span>, 2020",
		"ts": "1600347600",
		"summary": "Ok, this should probably be my last Bunch post for a while. I just wanted to point out a couple of new features. First, as I mentioned in another post recently, there&rsquo;s a new syntax which allows you to launch an app when closing a Bunch. Take Dropbox as an example. If you quit Dropbox when starting a context that needs the bandwidth (e.g. podcasting), you probably want to load it again when you&rsquo;re done. This makes it easy: just use . The double bang is a bit inelegant, but I&rsquo;d already used for quitting an app, whereas with any script commands it means \"run when quitting\". So that&rsquo;s a bit ugly, but I figure it&rsquo;s a double negative, which kind of makes sense, semantically. I also added the ability to affect volume and mute settings of input and output devices independently. Now you can use or . still works and defaults to the current output device. Ok, here&rsquo;s the headline feature: I&rsquo;ve added a feature that allows you to define multiple sections in a snippet file, and specifically reference them when including in a Bunch. Bunch allows snippet files, which are just partial Bunches in your Bunch folder with any extension other than . So if you have in your Bunch folder, you can then include its contents in any Bunch using: Which is handy if you want to avoid repeating common tasks in every Bunch. With this new feature, you can have a single snippet file containing multiple snippets, delineated with lines like this: If you don&rsquo;t include the fragment id, it will run all the sections, which opens some possibilities for complex snippet handling. One universal snippet but the ability to run just individual parts of it when needed",
		"keywords": ["dropbox","snippet","bunch","bunches","dropbox","first","ability","added","again","allows","another","avoid","bandwidth","closing","commands","common","complex","containing","contents","context","couple","defaults","define","delineated","device","devices","double","example","extension","feature","features","figure","files","folder","fragment","handling","handy","headline","identifier","including","independently","individual","inelegant","input","launch","makes","mentioned","multiple","needed","needs","negative","opens","output","partial","parts","podcasting","point","possibilities","quitting","recently","repeating","rsquo","script","section","sections","semantically","sense","settings","single","snippet","snippets","specifically","starting","syntax","tasks","universal","using","volume","wanted","while","works"]
	},{
		"title": "Bunch and the Stream Deck",
		"url": "/2020/09/16/bunch-and-stream-deck/",
		"tags": ["automation","bunch","keyboard","keyboardmaestro","plugin","streamdeck"],
		"date": "Sep 16<span>th</span>, 2020",
		"ts": "1600267500",
		"summary": "If you have a Stream Deck, you probably have some buttons that launch apps. Using Bunch adds a ton of options beyond just launching a single app: you can have a button that toggles entire groups of apps, running commands and scripts, changing your wallpaper, hiding your Dock&hellip; you know, all the things Bunch can do. The core of the trick is Bunch&rsquo;s URL handler. You can use (or just if you don&rsquo;t want to be able to quit the Bunch). Just add your Bunch name to the end of the url, replacing any spaces with , and you have a URL with which you can toggle any Bunch. For example, to toggle my Marked Screencast Bunch, I would just use . I discovered after further exploration that the default \"Open Website\" action for the Stream Deck does in fact work with URL handlers, there&rsquo;s just a delay in it actually launching. But if you want to skip Keyboard Maestro, you can simply put into a System->Website button&rsquo;s URL. So the biggest hurdle is just making a button trigger a URL. The default web launch commands don&rsquo;t seem to do the trick with system url handlers. The best solution I&rsquo;ve found is to use Keyboard Maestro, and since I already owned it, I didn&rsquo;t look much further. I&rsquo;m certain there&rsquo;s an existing plugin for Stream Deck that would handle this directly, but I didn&rsquo;t find it yet. In Keyboard Maestro you&rsquo;ll set up a macro for each Bunch URL. The macro contains a single action: Open URL, with the URL and a target of \"Default Application.\" Assigning the macro to a key can be done in two ways. There&rsquo;s a default Keyboard Maestro plugin available from the \"More Actions\" menu in the Stream Deck configuration app. That plugin allows you to assign a custom USB Device Key to each button, which you can then apply to the trigger in Keyboard Maestro. Just set up the button, then go to Keyboard Maestro, add a USB Device Key trigger, and then click the button you created on the Stream Deck. The second way is actually nicer, in my opinion, but I discovered it after I&rsquo;d already set up all my buttons. There&rsquo;s a plugin available called KM Link which avoids the whole hotkey process entirely. Just grab the KM Link plugin from GitHub (click the \"Code\" button and download the zip) and install it by double clicking on the file. Then you can drag a KM Link action from the Custom section of the sidebar to a button, and in its configuration you&rsquo;ll get a list of all your Keyboard&hellip;",
		"keywords": ["button","elgato","macro","stream","actions","assigning","bunch","bunches","custom","default","device","github","keyboard","maestro","marked","screencast","stream","system","using","website","action","allows","apply","assign","available","avoids","beyond","biggest","button","buttons","called","certain","changing","click","clicking","commands","configuration","contains","create","created","custom","default","directly","discovered","double","download","entire","entirely","example","exploration","found","groups","handle","handler","handlers","hellip","hiding","hotkey","hurdle","icons","install","installed","launch","launching","little","macro","macros","making","nicer","options","outputs","owned","plugin","process","replacing","rsquo","running","script","scripts","second","section","sidebar","simply","since","single","solution","spaces","system","takes","target","toggle","toggles","trick","trigger","triggers","wallpaper","whole"]
	},{
		"title": "Podcasting with Bunch",
		"url": "/2020/09/15/podcasting-with-bunch/",
		"tags": ["automation","bunch","dropbox","nvultra","podcasting","productivity","scripting"],
		"date": "Sep 15<span>th</span>, 2020",
		"ts": "1600182000",
		"summary": "Continuing on with Shark Bunch Week&hellip; I&rsquo;ve been talking about Bunch again lately because I&rsquo;ve been setting up a new one for podcasting (which happened to lead to new features). It&rsquo;s been a while since I created a Bunch from scratch, and I thought I&rsquo;d document it for anyone curious about Bunch but intimidated by the syntax and/or number of options. Or just people looking for ideas for getting more out of it. I&rsquo;ve got the Podcast Bunch set up and working smashingly, so I&rsquo;ll share that here and detail some of the tricks. I know several people can use some of these tips verbatim &mdash; Bunch seems to be especially popular with podcasters. I&rsquo;ll break it down one section at a time, but you can see the whole thing in this gist. All of my Bunches start by triggering a specific project and task in Timing.app. I detailed this setup back in the post Bunch and Timing.app. I use the Automator method with a couple of variables I can easily copy/paste and modify in each Bunch. Next I turn on Do Not Disturb and set my audio settings as detailed in Bunch gets audio control. Note that since that post I&rsquo;ve added a command and the ability to specify or for all volume and mute commands. I also created a script called volumetoggle.rb that gets all of my input, output, and alert audio devices and volumes at the time it runs and saves them to a text file I can use to restore on quit. Next I need to quit or pause bandwidth-sucking apps, in my case Dropbox and Backblaze, both of which require some special handling and use shell script lines. As far as I&rsquo;ve been able to tell, Dropbox requires a brute force kill these days, which sucks and could probably cause data loss or at least sync errors, but I haven&rsquo;t run into that yet. Then I launch all of the apps I need. The hides all open windows before launching new apps. By the way, I use Bunch in \"Single Bunch Mode,\" so apps unique to other Bunches will automatically be quit when I switch to the Podcast Bunch. Note the use of in the line. By default Bunch will quit any apps it launched when the Bunch is toggled off. The tells Bunch to ignore the app when quitting, leaving it running if it already is. Since I have nvUltra running most (all) of the time, it&rsquo;s safe to assume that I&rsquo;ll want it to keep running after I&rsquo;m done podcasting. This can apply to any apps you need specifically for a context but don&rsquo;t want to close when you leave&hellip;",
		"keywords": ["applescript","backblaze","dropbox","macos","podcast","applescript","automator","backblaze","bunch","bunches","continuing","disturb","dropbox","firefox","lastly","markdown","podcast","shark","since","single","timing","ability","added","again","alert","anyone","apply","assume","audio","automatically","bandwidth","because","before","benefit","benefits","break","browser","brute","bunch","called","cause","close","command","commands","context","control","couple","created","curious","customize","default","detail","detailed","devices","digress","document","easily","episode","errors","especially","examples","except","extensively","features","folder","force","found","getting","handler","handling","hangs","happened","haven","hellip","hides","ideas","ignore","inelegant","input","intimidated","launch","launched","launching","leave","leaving","looking","mdash","mentioned","method","modify","needs","notebook","notes","nvultra","options","output","paste","pause","people","podcasters","podcasting","popular","positions","possible","primary","project","prone","provides","quitting","reads","requires","restart","restore","reversed","rsquo","running","saves","scratch","script","section","seems","session","setting","settings","setup","several","share","shebang","shell","since","smashingly","special","specific","specifically","specifies","specify","started","sucking","sucks","switch","syntax","talking","targets","tells","thought","title","toggled","trick","tricks","trigger","triggering","unique","using","variables","verbatim","volume","volumes","volumetoggle","where","while","whole","window","windows","working","workspace","yesterday"]
	},{
		"title": "Using Moom with Bunch for window management",
		"url": "/2020/09/14/using-moom-with-bunch-for-window-management/",
		"tags": ["bunch","productivity","scripting"],
		"date": "Sep 14<span>th</span>, 2020",
		"ts": "1600095600",
		"summary": "One of the feature requests I get now and then for Bunch is to allow it to arrange windows. Some other batch launchers have this feature, but they usually have a GUI, and making that kind of thing work with plain text files is an ugly proposition. There is a good option, though. Moom from Many Tricks is my window manager of choice. It does everything I need to do and does it elegantly. I know there are a few good options out there, but I&rsquo;ve loved Moom and stuck with it for almost a decade now. One feature that stands out is the ability to store entire workspaces and call them back up by name using AppleScript. Say you have a Bunch that launches multiple apps, and you find yourself spending time moving and resizing windows every time you load it. This is almost always true if you use multiple displays &mdash; most apps are bad at remembering their location, especially if the number of displays changes often. With Moom you can do all of your window arranging once, and then never again (until your preferences change). Once you have everything where you like it, open the Moom menu and choose Save Window Layout Snapshot…. This will open the Moom preferences with a new \"Arrange Windows\" entry. Give this a unique title. You&rsquo;ll probably want to turn off \"Ignore obstructed windows\" and click the Update Snapshot button. (By default only windows that are 100% visible have their position saved, but I usually have some windows overlapping.) Once you have the title set it&rsquo;s easy to trigger the layout with AppleScript. The command is: You can create a snapshot for each of your Bunches, add the script line, and then forget about organizing your windows. If you happen to know that this trick can be accomplished with other window managers, let me know and I&rsquo;ll add a note for others who might be interested",
		"keywords": ["macos","management","window","applescript","arrange","audio","banner","bunch","bunches","hijack","ignore","layout","podcasting","preferences","skype","snapshot","tricks","window","windows","ability","accomplished","again","allow","almost","applescript","arrange","arranging","batch","brettterpstra","bunch","bunchmoom","button","change","changes","choice","choose","class","click","comes","command","create","decade","default","displays","elegantly","entire","entry","especially","everything","example","feature","figcaption","figure","files","forget","happen","height","highlight","highlighter","https","image","interested","language","launched","launchers","launches","layout","ldquo","loading","location","loved","making","manager","managers","manytricks","mdash","media","moomprefs","moving","multiple","noscript","nvultra","obstructed","often","options","organizing","original","others","overlapping","pertinent","picture","plaintext","position","preferences","projects","proposition","rdquo","remembering","requests","resizing","rouge","rsquo","saved","savesnapshot","script","snapshot","source","spending","srcset","stands","store","strong","stuck","title","trick","trigger","unique","uploads","using","usually","visible","where","width","window","windows","workspaces"]
	},{
		"title": "The Podcasts: Week of September 7th",
		"url": "/2020/09/11/the-podcasts-week-of-september-7th/",
		"tags": ["overtired","podcast","systematic"],
		"date": "Sep 11<span>th</span>, 2020",
		"ts": "1599843600",
		"summary": "I caught up with Greg Pierce, developer of Drafts for iOS and Mac, on Systematic 237 this week. It didn&rsquo;t get as nerdy as you might expect from the combination of the two of us, but we covered all the fun stuff. I&rsquo;ve stopped doing my own Top 3 Picks every week, which has been helpful in preventing burnout, but it&rsquo;s still one of my favorite ways to get to know my guests. You can learn a lot about a person by looking at what they&rsquo;re excited about, and Greg had many media favorites to share. Then this thing happened on Overtired 204 where the conversation went from YouTube personalities to the Holocaust in zero seconds flat. It was my fault, I had recently learned about the sordid history behind Aspergers Syndrome. And then I had to find out that IBM was a mover and shaker in&hellip; Nazi Germany. I challenge you to pivot from that conversation into fun tech stuff, let alone segue smoothly to the sponsor break that came between. Deftly handled. Or daftly. It&rsquo;s really hard to tell with this podcast sometimes. Find all the episodes at systematicpod.com and overtiredpod.com, and be sure to subscribe! My ability to keep the shows going is dependent on my ability to secure advertisers, which is in turn dependent on subscriber numbers. Getting yourself counted in my download stats (and maybe checking out the sponsors now and then) is all you have to do to support either or both shows",
		"keywords": ["aspergers","drafts","holocaust","pierce","aspergers","deftly","drafts","germany","getting","holocaust","overtired","picks","pierce","syndrome","systematic","youtube","ability","advertisers","alone","behind","between","break","burnout","caught","challenge","checking","combination","conversation","counted","covered","daftly","dependent","developer","doing","download","either","episodes","excited","expect","fault","favorite","favorites","going","guests","handled","happened","hellip","helpful","history","learn","learned","looking","maybe","media","mover","nerdy","numbers","overtiredpod","person","personalities","pivot","podcast","preventing","recently","rsquo","seconds","secure","segue","shaker","share","shows","smoothly","sometimes","sordid","sponsor","sponsors","stats","stopped","stuff","subscribe","subscriber","support","systematicpod","where"]
	},{
		"title": "Bunch gets audio control",
		"url": "/2020/09/10/bunch-gets-audio-control/",
		"tags": ["bunch"],
		"date": "Sep 10<span>th</span>, 2020",
		"ts": "1599774540",
		"summary": "I haven&rsquo;t worked on Bunch for a while because it was just doing everything I needed from it. But you know how it goes when you can&rsquo;t sleep&hellip; It&rsquo;s been a while since I talked about it, so I&rsquo;ll just real quick remind you that it&rsquo;s an app that lets you use plain text files to launch batches of apps, and run Automator workflows, AppleScripts, and shell commands. Oh, and it can do things like toggle Do Not Disturb and Dark mode and change your desktop wallpaper. All sitting in your Dock or your menu bar and just a click away. Anyway, a couple of days ago I needed to automate switching audio inputs and outputs and I thought Bunch should probably be able to do that. Thus began my first exploration into CoreAudio and some of the intricacies of macOS audio. Obviously my needs were fairly rudimentary, but I did learn a lot in the process. The latest version now includes commands for switching audio inputs and outputs, and for setting volume. Bunch commands are surrounded by parenthesis, and are pretty flexible with spacing and such. All of the audio commands start with the word \"audio\". If you use the following in your Bunch file, it will set the volume to 50%: That on its own is pretty lame, because you could always just send an AppleScript one-liner to do the same thing. But here&rsquo;s where it&rsquo;s a bit handier: you can switch your system input and output devices using partial name matching. Just use and . I have a bunch of audio devices on my system. My Scarlett Solo, my Alesis iO Hub, my Komplete Audio 6, plus the built in speakers and some Loopback devices. With this new feature, I can have the system default change when launching or quitting a bunch. As I was just saying a second ago, you can use partial names when referring to your devices; any unique portion of the name will find the right device, and it&rsquo;s case insensitive. For example: That includes both \"start\" and \"stop\" commands; the \"!\" lines will only be run when quitting (or toggling off) a Bunch. So when I open this Bunch it sets my input to the Scarlett Solo and my output to the MacBook Pro Speakers, and then mutes the output. This is ideal for my podcasting setup, as my output from Skype is handled directly by the app and this prevents other audio (dings and whistles) from being heard. Then when I quit the Bunch, it toggles the volume back up to 80% and switches the output to my the iO Hub (which powers my studio monitors). One caveat&hellip;",
		"keywords": ["audio","automation","macos","alesis","anyway","applescript","applescripts","audio","automator","batch","bunch","bunches","changelog","coreaudio","disturb","donate","download","komplete","loopback","macbook","published","scarlett","skype","speakers","updated","allow","audio","automate","bases","batches","because","began","below","built","bunch","caveat","certain","change","click","command","commands","couple","covers","default","desktop","device","devices","dings","directly","document","doing","enough","everything","example","exploration","external","fairly","feature","features","files","first","flesh","flexible","generally","handier","handled","haven","heard","hellip","ideal","includes","input","inputs","insensitive","interfaces","internal","intricacies","issues","latest","launch","launcher","launching","learn","liner","listening","little","looking","macos","matching","mdash","monitors","music","mutes","names","needed","needs","operates","output","outputs","parenthesis","partial","podcasting","portion","powers","prevents","process","project","quick","quitting","reasonable","referring","remind","reminder","requests","right","rsquo","rudimentary","saying","screencasting","second","selected","serves","setting","setup","shell","since","sitting","sleep","source","spacing","speakers","studio","surrounded","switch","switches","switching","system","talked","think","thought","toggle","toggles","toggling","tools","unique","useful","using","version","video","volume","wallpaper","watching","where","while","whistles","worked","workflows"]
	},{
		"title": "PDFpen: powerful PDF editing for Mac, iPad, and iPhone [Sponsor]",
		"url": "/2020/09/10/pdfpen-powerful-pdf-editing-for-mac-ipad-and-iphone/",
		"tags": ["iphone","sponsor"],
		"date": "Sep 10<span>th</span>, 2020",
		"ts": "1599735600",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! If you want truly flexible and powerful PDF editing, PDFpen is really the only app you need. If you’re searching for a powerful PDF editing tool for your Mac, iPad, or iPhone, look no further than PDFpen. Whether you’re on the road or at your desk, need advanced editing features or just want to sign and email back a contract, PDFpen has you covered. All these features come standard with PDFpen. PDFpenPro takes it even further to allow you to add permissions, turn websites into PDFs, and even integrates with DocuSign to sign or send documents easily and securely. PDFpen, PDFpenPro, and PDFpen for iPad & iPhone, all work together for seamless editing across devices when used with Dropbox or iCloud",
		"keywords": ["docusign","dropbox","icloud","pdfpen","annotations","brettterpstra","docusign","document","dropbox","learn","pdfpen","pdfpenpro","password","redact","syncing","thanks","across","advanced","allow","allows","basics","brettterpstra","class","compression","contract","covered","devices","documents","easily","editing","email","features","flexible","forms","height","https","icloud","iphone","image","integrates","iphone","loading","media","nofollow","noscript","original","pdfpen","permissions","picture","podcast","powerful","protected","seamless","searching","securely","sensitive","smilesoftware","source","sponsoring","srcset","standard","takes","title","together","truly","typos","uploads","websites","width"]
	},{
		"title": "You might be bipolar if...",
		"url": "/2020/09/09/you-might-be-bi-polar-if-dot-dot-dot/",
		"tags": ["bipolar","deals","mentalhealth","personal","sleep"],
		"date": "Sep 9<span>th</span>, 2020",
		"ts": "1599679140",
		"summary": "I talk a lot about having ADHD. Between this blog, Twitter, my own podcasts, and many that I&rsquo;ve guested on, I find ADHD easy to talk about. And people are, for the most part, receptive to hearing about it. As a disorder, it&rsquo;s generally understood. It doesn&rsquo;t scare people. I have the displeasure of a dual diagnosis, though, and I don&rsquo;t talk about the other half of it very much. Bipolar disorder is a lot scarier to most people. Hell, it&rsquo;s scary to me sometimes. I was diagnosed with it in my 20s, long before I was ever diagnosed with ADHD. I&rsquo;ve been through many different medications, and on the whole I&rsquo;ve kept it pretty well in check since about the age of 23. But \"in check\" still has a lot of symptoms. Everything is relative. So I&rsquo;m going to talk about it. I&rsquo;m not here to solve anyone&rsquo;s problems, just maybe let some people know they&rsquo;re not alone. Forgive me, this is probably going to get long and then not resolve to the kind of emotional payoff you&rsquo;d probably hope for after however long this is going to be. Bear with me, I appreciate you hearing me and feeling whatever you need to feel about it. I&rsquo;m rapid-cycling, and my mania and depressions usually don&rsquo;t last more than 3-5 days. I&rsquo;m lucky to generally have my depressive downturns not last longer than the mania that kicked it off did, meaning I can spend a lot of my life as a \"stable\" (though not neurotypical, by any means) adult. I was spurred to write this after watching an episode of Modern Love on Amazon Prime Video. It was season 1 episode 3, \"Take Me as I Am, Whoever I Am,\" in which Anne Hathaway plays a person doing their damndest to hide her bipolar without medication and without ever admitting to anyone what was going on. She would meet people on the upswing, make plans with them, and then before the date rolled around would crash and be unable to follow through. It ruined her relationships, her job, and her self esteem. It was heartbreaking to watch, especially as someone who can relate personally. The happy ending came when she finally confided to a co-worker about what was going on, got some empathy and understanding, and then took it upon herself to relive that relief by calling up everyone she&rsquo;d ever hurt and explaining how her bipolar disorder was at the heart of so many misunderstandings. I highly recommend checking the episode out. In my world, mania doesn&rsquo;t look like crazy&hellip;",
		"keywords": ["depression","depressive","disorder","mania","manic","polar","amazon","anyway","applescript","because","between","bipolar","especially","everything","feeling","first","forgive","fortunately","github","hathaway","insomnia","labor","library","markdown","modern","nights","nobody","prime","readme","rubocop","switching","systematic","thanks","timing","twitter","video","vyvanse","whoever","working","abound","adjust","admitting","adult","adventure","affected","afraid","aftermath","almost","alone","alpha","anxiety","anyone","appreciate","asleep","attribute","aware","based","because","before","begin","behavior","benefit","between","bills","bipolar","built","calling","causing","certain","challenge","chasing","check","checking","classes","clearly","closest","combination","coming","command","commit","computer","confided","converting","coping","couple","crash","crazy","credits","cycles","cycling","damndest","dealing","debilitating","deciding","definitely","depressing","depression","depressions","depressive","deprivation","designed","destructive","details","develop","developed","diagnosed","diagnoses","diagnosis","different","directly","disorder","displeasure","doctor","documenting","doesn","doing","dopamine","downturns","elation","elevated","emotional","empathy","endangers","ended","ending","energy","engagements","engineering","enough","environment","episode","episodes","error","especially","esteem","evening","everyone","everything","excited","experience","explaining","extra","fairly","family","features","feeling","feverishly","figuring","files","filled","finally","finding","fixing","flaking","flexible","focus","follows","found","freelance","frequent","friends","generally","generator","getting","going","greatly","guested","hacking","handle","happens","happy","having","hearing","heart","heartbreaking","hellip","helps","herself","highly","history","holes","hours","however","hyper","ideal","independent","inducing","intense","interactions","interesting","irresponsible","judging","juggling","keeping","kicked","lacking","latest","license","linked","listening","little","longer","looking","loved","loves","lucky"]
	},{
		"title": "The Podcasts: Week of Aug. 31",
		"url": "/2020/09/08/the-podcasts-week-of-aug-31/",
		"tags": ["blogging","overtired","podcast","podcasting","systematic","writing"],
		"date": "Sep 8<span>th</span>, 2020",
		"ts": "1599597720",
		"summary": "Now that I&rsquo;m once again spending a significant amount of time creating and editing podcasts, it&rsquo;s leaving less time for consistent blogging. So, to bridge the divide a bit, I&rsquo;m going to get back into blogging about the podcasts. Look for weekly (as I&rsquo;m able) recaps of both Systematic and Overtired under one heading: \"The Podcasts.\" This by no means means I&rsquo;m giving up on blogging all of my crazy experiments and Web Excursions and all the other stuff I do here, but I generally blog about whatever I&rsquo;m spending time on, and for the moment, that&rsquo;s podcasts. I foresee getting back into the regular swing of blogging in the near future. So, for this &mdash; the inaugural podcast post of season 2 &mdash; I&rsquo;ll start by mentioning last week&rsquo;s episodes (even though new ones are scheduled to come out starting tomorrow&hellip; I&rsquo;ll be posting again soon). On Systematic, I was joined by Sarah Johnson, the mental health director at the YMCA in La Crosse, Wisconsin, for episode 236. She&rsquo;s an old friend of mine, and someone with whom I always find conversation fascinating. She somehow combines a \"whimsical\" perspective on life with concrete analysis and a deep understanding of people and their emotions. She&rsquo;s been a guest in the past, and I figured right now &mdash; in the middle of a pandemic that has many of us secluded from our usual tethers to reality &mdash; would be an ideal time to hear what a mental health professional had to offer. The audio didn&rsquo;t come out as great as I would have liked, but the conversation did not disappoint. On Overtired Christina and I had some fun discussing one YouTuber&rsquo;s vision of a Taylor Swift theme park. His concept is crazy and detailed, and it took some mental gymnastics on my part, but I came around to appreciating the creativity and passion behind it. In the process, I became painfully aware of how much my Gen-X childhood affected my ability to, well, like anything. Once we got past the (bizarrely frequent) Taylor Swift portion of the show, it was on to discussing some classic movies. But I&rsquo;ll admit, this episode had a lot of Taylor. For better or worse, and whether I like it or not, Overtired will probably always be billed as the only tech podcast that&rsquo;s actually about Taylor Swift. Find all the episodes at systematicpod.com and overtiredpod.com, and be sure to subscribe! My ability to keep the shows going is dependent on my&hellip;",
		"keywords": ["apple","health","mental","podcasting","spotify","swift","taylor","christina","crosse","excursions","getting","johnson","overtired","podcasts","sarah","swift","systematic","taylor","wisconsin","youtuber","ability","admit","advertisers","affected","again","amount","appreciating","audio","aware","became","behind","billed","bizarrely","blogging","bridge","checking","childhood","classic","combines","concept","concrete","consistent","conversation","counted","crazy","creating","creativity","dependent","detailed","director","disappoint","discussing","divide","download","editing","either","emotions","episode","episodes","experiments","fascinating","figured","foresee","frequent","friend","generally","getting","giving","going","great","guest","gymnastics","heading","health","hellip","ideal","inaugural","joined","leaving","liked","maybe","mdash","mental","mentioning","middle","movies","numbers","offer","overtiredpod","painfully","pandemic","passion","people","perspective","podcast","podcasts","portion","posting","process","professional","reality","recaps","regular","right","rsquo","scheduled","season","secluded","secure","shows","significant","somehow","spending","sponsors","starting","stats","stuff","subscribe","subscriber","support","swing","systematicpod","tethers","theme","tomorrow","under","understanding","vision","weekly","whatever","whimsical","worse"]
	},{
		"title": "The Podcasts are Back!",
		"url": "/2020/08/24/the-podcasts-are-back/",
		"tags": ["health","interview","overtired","podcast","podcasting","systematic"],
		"date": "Aug 24<span>th</span>, 2020",
		"ts": "1598287020",
		"summary": "As I&rsquo;ve mentioned a few places lately, I&rsquo;ve been working on getting both of my podcasts, Systematic and Overtired, back up and running after a long hiatus. I&rsquo;m excited to announce that both are now going full steam. ESN was great as a host, but the onus for sponsorship had fallen on me, and I just don&rsquo;t have the stamina to produce and edit two podcasts and deal with sales. I&rsquo;m excited to be working with BackBeat Media now. They&rsquo;re handling sales, and I get to just focus on making great podcasts. As part of the move, both podcasts have new homes on their own independent sites. Find Systematic at systematicpod.com and Overtired at overtiredpod.com. Both sites are running on WordPress using the Blubrry PowerPress plugin. And (I know I&rsquo;ve mentioned this before), in the process of building the sites I was able to restore the first 120-some episodes of Systematic that were lost in the move from 5by5. There were some great guests in there, and I&rsquo;m excited to have those episodes back in the archives. I decided to call this season 2 of both podcasts. Since the episode numbering for Systematic was already in the 200s, I&rsquo;m not following any prescribed numbering format there. The first episode of \"season 2\" is #234 with guest Merlin Mann (whom you may recall from such movies as \"everywhere on the internet\", but most recently podcasts including Roderick on the Line and Due By Friday). As a side note, every podcast is listed on the website with a tag based on the guest&rsquo;s name, so you can easily navigate to all episodes from a particular guest. Merlin holds the record for most return appearances, and you can find all nine of them at systematicpod.com/tag/merlin-mann. I have the first five Systematic interviews in the can already, so I can take my time with finding new guests and doing more quality interviews. The first couple months of Systematic are going to be spent catching up with more of the guests that I&rsquo;ve really enjoyed from season 1, some of whom I haven&rsquo;t chatted with for over 7 years. It&rsquo;s been great, and I have a renewed energy for keeping it going. Systematic does tend to get pretty topical, and I have a couple of interviews coming up that I&rsquo;m really excited about. These include Sarah Johnson, a mental health professional with the YMCA, talking about mental health and the pandemic. That one will be up in a couple of weeks, hopefully not too late for everyone who&hellip;",
		"keywords": ["audio","digital","merlin","podcast","syndication","amazon","apple","backbeat","blubrry","christina","corner","deezer","friday","google","health","jared","johnson","klinker","media","mental","merlin","movies","music","overtired","pandora","podcast","podcasts","powerpress","roderick","rodriguez","sarah","since","speaking","spotify","swift","systematic","taylor","thursday","watch","wednesday","wordpress","album","among","announce","anyone","appearances","apropos","archives","based","became","before","books","branded","building","catching","chatted","coming","couple","decided","doing","easily","energy","enjoy","enjoyed","enough","episode","episodes","equality","essentially","events","everyone","everywhere","excited","fallen","falling","familiar","finding","first","focus","format","frequent","getting","going","great","guest","guests","handling","haven","health","hiatus","holds","homes","hopefully","iheartradio","impact","including","independent","internet","interviews","irregularly","justice","keeping","links","listed","listen","looking","making","mdash","mental","mentioned","merlin","movies","navigate","needs","numbering","overtiredpod","pages","pandemic","particular","places","plugin","podcast","podcasts","prescribed","process","produce","professional","quality","quarantine","ready","recall","recently","record","renewed","restore","return","rsquo","running","sales","schedule","scheduled","season","seasons","segments","sites","spent","sponsorship","stamina","steam","subscribe","systematicpod","talking","topic","topical","topics","touch","using","website","weekly","weeks","working","years"]
	},{
		"title": "Brett's 2020 Podcasting Setup",
		"url": "/2020/08/17/bretts-2020-podcasting-setup/",
		"tags": ["hardware","keyboard","microphone","podcasting","recording","systematic"],
		"date": "Aug 17<span>th</span>, 2020",
		"ts": "1597669200",
		"summary": "I&rsquo;ve been recording new episodes of Systematic and Overtired over the last couple of weeks (more on that soon). As part of the \"reboot,\" I&rsquo;ve been refining my podcasting setup a bit. After some experimentation, I thought I&rsquo;d share what hardware and software I&rsquo;ve landed on (for now). I always hesitate to write posts like this because I&rsquo;m not the guy who thoroughly tests every option and can offer you a Wirecutter-style review and a top pick for your dollar. I&rsquo;m no Marco Arment when it comes to mics and gear. Or lightbulbs. But I can tell you what&rsquo;s working for me. I also don&rsquo;t have the budget to try out everything in the field, so a lot of my choices come from the best of what I have on hand. Ok, enough with the prologue. Let&rsquo;s do this. Obviously, this all starts with the microphone. At the time I last recorded Systematic, I&rsquo;d been using a Samson C01UPRO for years. It&rsquo;s not that I hadn&rsquo;t tried others — I had a dozen microphones of varying levels of expense around, both from years of recording music and a few attempts at better podcasting mics. The C01UPRO offered good audio quality without the tradeoffs that I found in other USB mics. It&rsquo;s not the best, but it&rsquo;s perfectly good option for the price. I had a bunch of options I&rsquo;d already paid for, though, so I wanted to make sure I was using the best of what I had available. If I had $400+ to drop on a new mic, I&rsquo;m sure I could do even better, but I think I found a great option. With my array of mics at hand, I sat down and did test recordings to compare a Blue Yeti Pro, Rode Podcaster, Audio Technica ATR2500-USB, and the Samson C01UPRO, as well as several XLR mics &mdash; I had some condensors and a few CAD and Peavey supercardiod mics around, some dating all the way back to the band I had in high school. The warmest sounds all came from large diaphragm condensors, and the one with the lowest ambient noise was the Sterling Audio ST51, an XLR mic I&rsquo;ve had for years and never used much. It was a close tie with a Peavey handheld, but it was just a little warmer and it looked cooler, so that&rsquo;s what I&rsquo;m using for now. It was a surprising-but-not-shocking to me that almost all of the XLR mics sounded better than the USB mics &mdash; I&rsquo;d heard people say it many times, but had never done the comparison myself. Turns out that the common wisdom isn&rsquo;t wrong. The ST51 doesn&rsquo;t&hellip;",
		"keywords": ["headphones","microphone","podcast","setup","skype","aaron","alesis","anker","apart","apple","arment","arteck","audio","audiobox","blubrry","bluetooth","button","cbpjlfw","compact","condenser","consider","cough","descript","diaphragm","eekbz","ecamm","editing","focusrite","gmxfw","hacking","hardware","having","headphones","hijack","hopefully","interface","keyboard","logic","logitech","marco","markdown","merlin","micswitch","microphone","miscellaneous","mixing","nectar","overtired","peavey","podtagger","podcaster","powerpress","processing","publishing","recorder","recording","rokit","rolls","samson","scarlett","season","sennheiser","shush","skype","software","soundsource","sterling","systematic","tagging","technica","thank","turns","ultimate","ultra","using","while","wirecutter","wordpress","adding","admittedly","allows","almost","amazing","amazon","ambient","another","anymore","anywhere","apple","array","articles","attempts","audible","audio","audiohijack","automated","available","avoid","awesome","based","because","benefit","benefits","bleed","blubrry","brettterpstra","budget","built","bunch","button","callrecorder","choices","class","clean","click","clicks","close","closed","coffee","combination","comes","comfortable","common","compare","compared","comparing","comparison","condensors","conducting","constantly","control","cooler","cough","coughs","couple","create","curiosity","custom","cutoff","dating","decade","decide","decided","descript","desktop","destructively","diaphragm","digital","direct","doesn","doing","dollar","dozen","drink","earbuds","easily","ecamm","edited","editing","edits","enough","episode","episodes","error","essing","everything","expense","experimentation","export","feeds","field","filter","finalize","finalizing","first","folded","found","function","general","generally","generated","generating","generic","getting","ghosting","going","great","guests","guitarcenter","handheld","handle","hands","handy","happens","hardware","hassle","headphones","heard","height","hesitate","holding","hooked","hours","https","iphone"]
	},{
		"title": "TextExpander removes the repetition",
		"url": "/2020/08/13/textexpander-removes-the-repetition/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Aug 13<span>th</span>, 2020",
		"ts": "1597323600",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week. Whether I&rsquo;m coding, blogging, creating show notes, writing documentation, or just sending emails, I use TextExpander constantly, saving me time in every app. Do yourself a favor and check it out! When you use TextExpander, you can say the right thing in just a few keystrokes. Say goodbye to repetitive text entry, spelling and message errors, and trying to remember the right thing to say at the right time. Using prepared snippets means you get it right every time, and in a fraction of the time it would normally take to say. Thanks to fill-ins and tools that take your snippets to the next level, TextExpander offers truly dynamic text shortcuts. Better than copy and paste, and better than scripts and templates, TextExpander snippets allow you to maximize your time by getting rid of the repetitive things you type while still customizing and personalizing your messages. With support for Mac, iOS, Windows, and more, TextExpander can be used on any platform, in any app, everywhere you type. Take your time back and increase your productivity. Visit TextExpander.com to learn more (and save 20% on your first year)",
		"keywords": ["expansion","smile","snippets","brettterpstra","textexpander","thanks","using","visit","windows","again","allow","blogging","check","coding","constantly","creating","customizing","dynamic","emails","entry","errors","everywhere","favor","first","focus","fraction","getting","goodbye","increase","keystrokes","learn","level","matters","maximize","message","messages","normally","notes","offers","paste","personalizing","platform","prepared","productivity","remember","removes","repetition","repetitive","right","rsquo","saving","scripts","sending","shortcuts","snippets","spelling","sponsoring","support","templates","tools","truly","trying","while","writing"]
	},{
		"title": "Web Excursions for August 10, 2020 - CLI edition",
		"url": "/2020/08/10/web-excursions-for-august-10-2020-cli-edition/",
		"tags": ["bookmarks","prompt","shell"],
		"date": "Aug 10<span>th</span>, 2020",
		"ts": "1597064400",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. chmln/sd Searcn and Displace, a truly great alternative to using sed for string manipulation in the shell. Search and replace with standard regex and in-place modification of files, using a simpler, more intuitive syntax. Starship: Cross-Shell Prompt A minimal, fast, and customizable prompt for any shell (including Fish). You can even incorporate individual modules from it (e.g. git status, ruby/python version, etc.) into your existing prompt. r-darwish/topgrade Update all the things from your command line. From brew packages to App Store apps, all with one command. Broot A tree-oriented file manager with multiple panes, file management tools, and built in preview. Snazzy and superfast. sinker/tacofancy: community-driven taco repo. stars stars stars. A community-driven, object-oriented taco recipe repo. Via Jeff Severns Guntzel",
		"keywords": ["command","friendly","interactive","interface","languages","scripting","shell","shells","techniques","broot","check","cross","displace","guntzel","prompt","search","searcn","setapp","severns","shell","snazzy","starship","store","access","brought","built","chmln","command","community","customizable","darwish","driven","edition","excursions","files","great","hundreds","including","incorporate","individual","intuitive","management","manager","manipulation","minimal","modules","monthly","multiple","nerds","object","oriented","packages","panes","partnership","preview","prompt","python","recipe","regex","replace","shell","simpler","sinker","special","standard","stars","status","string","subscription","superfast","syntax","tacofancy","terminal","today","tools","topgrade","truly","using","version"]
	},{
		"title": "Get instant code examples with LaunchBar",
		"url": "/2020/08/07/howdoi-for-launchbar/",
		"tags": ["launchbar","terminal"],
		"date": "Aug 7<span>th</span>, 2020",
		"ts": "1596805200",
		"summary": "A long while back I linked a CLI called . It&rsquo;s an excellent little tool that searches StackOverflow for code examples for any given query. It recently updated, so I thought I&rsquo;d try my hand at a LaunchBar action for it. There&rsquo;s already an Alfred workflow, if you&rsquo;re looking for that. This action requires two things: the CLI, and from the pygments package. Both of these can be installed with Homebrew: Once those are installed, just download and double-click the action below to install it. When you run it, it will ask for your query. Assuming it finds a result, it will offer you the option of viewing a syntax-highlighted version of it, copying the raw code to the clipboard, opening the source URL, or saving the query to the cache. I&rsquo;m not sure about the utility of the latter option, and setting up the cache requires manually creating a directory. But I figured I&rsquo;d cover the bases. Technical details: To do the preview I had it write the code out to a temp file, run on it with to guess the lexer and to output HTML, then write out a style and the formatted code to another temp file. That temporary HTML file is passed back to LaunchBar with an item action to open QuickLook on it. HowDoI for LaunchBar v1.0.0 Download HowDoI for LaunchBar v1.0.0 LaunchBar interface for the howdoi CLI Published 08/06/20. Updated 08/06/20. Changelog Donate &bull; More info&hellip",
		"keywords": ["homebrew","howdoi","manager","package","quick","stackoverflow","alfred","assuming","changelog","donate","download","homebrew","howdoi","launchbar","published","quicklook","stackoverflow","technical","updated","action","another","bases","below","cache","called","click","clipboard","copying","cover","creating","details","directory","double","download","enjoy","examples","excellent","figured","finds","formatted","guess","hellip","highlighted","howdoi","install","installed","interface","latter","lexer","linked","little","looking","manually","offer","opening","output","package","passed","preview","pygments","query","recently","requires","rsquo","saving","searches","setting","source","style","syntax","temporary","thought","updated","utility","version","viewing","while","workflow","write"]
	},{
		"title": "Solving RVM and OpenSSL issues with Homebrew",
		"url": "/2020/08/06/solving-rvm-and-openssl-issues-with-homebrew/",
		"tags": [],
		"date": "Aug 6<span>th</span>, 2020",
		"ts": "1596698520",
		"summary": "Recently I ran into issues trying to install new rubies with RVM. All of my errors centered around , and they took me a fair amount of time to resolve. So I&rsquo;m putting this up mostly as notes to myself and hopefully to help anyone else who runs into this. Homebrew (fairly) recently updated the formula to 1.1. RVM (and some random daemons on my machine) require 1.0 to compile/install older rubies. In fact, I was running into issues even trying to install Ruby 2.6.5. Manually trying to install 1.0 didn&rsquo;t work for me, nor did a dozen other solutions I tried. Here&rsquo;s the magic formula that worked: This creates a \"tap\" for the older version of OpenSSL so you can install it with Homebrew. Once this is all working, you can actually install v1.0 next to it and with the right path settings, use them both as needed. The secret to getting RVM to use the right version is . By setting the path to the 1.0 version of this in the environment variable, you can get rvm to install using the older libraries. Here&rsquo;s the incantation (using Bash): Like I said, once this is working you can just to get an up-to-date version installed, leaving the 1.0 version in place. When you need to use it, you can just apply the paths needed and everything else will continue using 1.1+",
		"keywords": ["homebrew","manager","openssl","version","credit","homebrew","jakob","manually","openssl","recently","skjerning","amount","anyone","apply","centered","continue","creates","daemons","dozen","environment","errors","everything","fairly","formula","getting","helps","hopefully","incantation","install","installed","issues","leaving","libraries","machine","magic","mostly","myself","needed","notes","older","paths","putting","random","recently","resolve","right","rsquo","rubies","running","secret","setting","settings","solutions","tried","trying","updated","using","variable","version","worked","working"]
	},{
		"title": "Pleexy - take control of your tasks wherever they're from [Sponsor]",
		"url": "/2020/07/23/pleexy-take-control-of-your-tasks-wherever-theyre-from/",
		"tags": ["source","sponsor","tools"],
		"date": "Jul 23<span>rd</span>, 2020",
		"ts": "1595505600",
		"summary": "Thanks to Pleexy for sponsoring BrettTerpstra.com this week! If you need to connect tasks from disparate sources to Todoist or Microsoft To Do, it&rsquo;s a solid tool at a great price (free for up to two connections). Tasks can come from anywhere: emails, notes, project management apps, and collaboration tools. Instead of getting real work done, you end up losing track of deadlines and wasting time switching back and forth between the tools you use. Enter Pleexy . Pleexy is the simplest way to manage all your tasks in one place. It brings all your tasks from Trello, Evernote, Outlook, JIRA, Asana, and other widely used productivity apps into your preferred task manager: Todoist or Microsoft To Do. Then it automatically keeps your tasks synchronized between both sides of each integration. We handle the busywork for you so you can start and end each day with a single overview of your projects across work and life. the most out of it by channeling all your tasks into it. Here&rsquo;s the best part. Pleexy is an integration tool built exclusively to automate the task management experience. This means you don&rsquo;t have to manually design workflows using multiple if-then scenarios in order to sync your data between apps. You can set up a connection between your task manager and your source application in less than five minutes. Pleexy allows very flexible configuration on how you want to sync your tasks: Specify which tasks you want to sync. You can filter tasks by teams, projects, notebooks, assignees, and other parameters depending on your source application. Define where tasks will be created. Specify which projects your tasks will fall under in your task manager. Customize your sync rules. You can control how Pleexy creates, names, and synchronizes your tasks and task attributes like due dates, labels, and priority levels. Save time managing your tasks. Choose what happens when you change, delete, or complete tasks on either side of the integration. Any changes made on one side will be instantly synced on the other. With a single destination for all your tasks, it&rsquo;s easier to identify your priorities across projects and focus on doing real, meaningful work. Start taking better control of your tasks wherever they&rsquo;re from — with Pleexy. Sign up for Pleexy today &mdash; it&rsquo;s entirely free for up to two connections. For unlimited connections, you can always upgrade to a Premium plan for just $4 a month (or $40 a year&hellip;",
		"keywords": ["management","project","software","trello","asana","brettt","brettterpstra","choose","customize","dtkje","define","euyttttttbdw","enter","evernote","ghottttttgireozatttttt","haxuprd","ifprd","jghrsu","libyilkmbfvrdh","mbcbusdkhnutyzqkrudbyilkmbfvk","mnibase","microsoft","norzlk","outlook","pleexy","premium","qyfcrdlk","rufcssl","specify","tasks","thanks","todoist","trello","uccss","xttttttdrd","zrnnp","across","allows","annual","anywhere","assignees","attributes","automate","automatically","banner","between","brettterpstra","brings","built","busywork","buysellads","change","changes","channeling","class","collaboration","configuration","connect","connections","control","created","creates","dates","deadlines","depending","design","destination","disparate","doesn","doing","easier","either","emails","entirely","experience","filter","flexible","focus","forth","getting","great","handle","happens","height","helps","https","identify","image","instantly","integration","keeps","labels","levels","loading","losing","management","manager","managing","manually","mdash","meaningful","media","minutes","multiple","names","nofollow","noscript","notebooks","notes","original","overview","parameters","picture","pleexy","pleexyheader","preferred","price","priorities","priority","productivity","project","projects","promote","readers","replace","rsquo","rules","scenarios","sides","simplest","single","solid","source","sources","sponsoring","srcset","strong","switching","synced","synchronized","synchronizes","taking","tasks","teams","title","today","tools","track","under","unlimited","upgrade","uploads","using","wasting","where","wherever","widely","width","workflows"]
	},{
		"title": "Web Excursions for July 15, 2020",
		"url": "/2020/07/15/web-excursions-for-july-15-2020/",
		"tags": ["bookmarks","typography"],
		"date": "Jul 15<span>th</span>, 2020",
		"ts": "1594840320",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Clicker for Prime Video I&rsquo;ve mentioned these \"Clicker\" apps as DBK Labs has been releasing them. They just put out this one for Amazon Prime, and I like it. It adds Picture-in-Picture, Touch Bar control, Quick Resume, disable auto-play trailers, skip pre-roll ads and intros, and a few other features&hellip; If you use Prime Video, this is useful enough to easily justify the $8 price tag. Lora fonts — serif family for text Lora is a well-balanced contemporary serif with roots in calligraphy. It is a text typeface with moderate contrast well suited for body text. (Open Source!) The details of UI typography - WWDC 2020 Speaking of typography, from Apple&rsquo;s WWDC Videos: Learn how to achieve exceptional typography in your app&rsquo;s user interface that enhances legibility, accessibility, and consistency&hellip; Andrew Canion - Replicating Hey.com Features in Regular Email Systems This is very, very close to the system I&rsquo;ve been using for a couple years with Sanebox, MailMate (on Mac) and Spark (on iOS). So close that now I don&rsquo;t feel the need to get around to writing mine up any further&hellip; 😉1 Welcome to AltStore A cool idea for sideloading iOS apps without a jailbreak or enterprise certificates. Still wrestling to get it working, but my desire to run the newly-available Clip (iOS clipboard manager) makes me willing to continue trying. I&rsquo;ve always made a point never to use emoticons or emoji in my writing here, preferring to express emotion through language. But I&rsquo;m making exceptions from here on out for Web Excursions.&nbsp;↩",
		"keywords": ["typeface","altstore","amazon","andrew","apple","brett","canion","cleanmymac","clicker","cyrillic","email","excursions","features","learn","mailmate","picture","prime","quick","regular","replicating","resume","sanebox","source","spark","speaking","systems","touch","video","videos","welcome","absolute","accessibility","achieve","altstore","andrewcanion","apple","available","backlink","balanced","blockquote","border","brettterpstra","brought","calligraphy","certificates","class","clicker","clipboard","close","consistency","contemporary","continue","contrast","control","couple","cyrealtype","dbklabs","details","developer","disable","display","easily","emoji","emoticons","emotion","endnotes","enhances","enough","enterprise","exceptional","exceptions","excursions","express","family","features","fnref","fonts","footnote","footnotes","github","height","hellip","heycom","hidden","holding","https","image","impactradius","interface","intros","jailbreak","justify","language","ldquo","legibility","loading","macpaw","makes","making","manager","media","mentioned","moderate","newly","noscript","noteref","original","partnership","picture","point","position","preferring","price","prime","rdquo","releasing","replicating","reversefootnote","roots","rsquo","serif","sideloading","source","speed","srcset","style","suited","system","through","title","tools","trailers","trying","typeface","typography","uploads","useful","using","video","videos","visibility","width","willing","working","wrestling","writing","years"]
	},{
		"title": "A CLI for Hook.app",
		"url": "/2020/07/10/a-cli-for-hook-dot-app/",
		"tags": ["hookcli","hookmark","terminal"],
		"date": "Jul 10<span>th</span>, 2020",
		"ts": "1594386000",
		"summary": "I&rsquo;ve been meaning to create a command line utility for Hook.app for a while now. I&rsquo;ve mentioned Hook before, but if you haven&rsquo;t heard of it, it&rsquo;s a powerful Mac productivity tool which creates and navigates links between documents, urls, and even things like OmniFocus tasks. I wanted to have some of its power in my terminal. I created the command to scratch this itch. It&rsquo;s currently experimental, but I&rsquo;d love it if any Hook users who happen to be command line lovers wanted to take it for a spin and let me know how it goes. You can find basic documentation and installation instructions on the project page. (Spoiler, it&rsquo;s a Ruby gem you can install with ). It has a project page now, but if you&rsquo;ll listen, I&rsquo;ll tell you a little bit about it here&hellip; This tool uses Hook&rsquo;s AppleScript library to do its work. The library is still being developed and undergoing changes, so some features of the CLI are currently \"aspirational.\" As the library evolves, some of the less-useful commands it has may become the most useful. As a result, the CLI currently works great with files and paths, but not so great with urls or urls from apps like MailMate, Bear, or Nvultra.1 There are subcommands for copying links to files, pasting them onto other files, cloning links between files, bidirectionally linking multiple files at once, removing hooks, and even selecting from available hooks on a file and opening them in their default application. And, of course, you can easily send a file to the Hook GUI. All of these are detailed by just running . You&rsquo;ll note the delightful use of familiar system commands as aliases, e.g. is also , is also , etc. It was built this way because Brett thought it was clever and for no other reason. If you give it a shot, feel free to leave feedback on either the Hook forum or in the Issues section of the repo. It&rsquo;s actually just one missing detail (failure to store a title when copying a hook) that&rsquo;s slowing it down there, and I&rsquo;m told a fix is coming.&nbsp;↩",
		"keywords": ["command","interface","rubygems","applescript","banner","brett","issues","mailmate","nvultra","omnifocus","spoiler","aliases","aspirational","available","backlink","basic","because","before","between","bidirectionally","brettterpstra","built","changes","class","clever","cloning","coming","command","commands","copying","create","created","creates","default","delightful","detail","detailed","developed","discourse","documents","easily","either","endnotes","evolves","experimental","familiar","features","feedback","files","fnref","footnote","footnotes","forum","github","goodness","great","happen","haven","heard","height","hellip","highlighter","hookapp","hookcliheader","hookproductivity","hooks","https","image","install","installation","instructions","issues","language","ldquo","leave","library","linking","links","listen","little","loading","lovers","meaning","media","mentioned","missing","multiple","navigates","noscript","noteref","opening","original","pasting","paths","picture","plaintext","powerful","productivity","project","projects","rdquo","removing","reversefootnote","rouge","rsquo","running","scratch","section","selecting","slowing","source","srcset","store","subcommands","system","tasks","terminal","thought","title","topics","ttscoff","undergoing","uploads","useful","users","utility","wanted","while","width","works"]
	},{
		"title": "The next big thing for Marked 2",
		"url": "/2020/07/09/the-next-big-thing-for-marked-2/",
		"tags": ["developer","markdown","marked","nvalt","reading","support","webdesign"],
		"date": "Jul 9<span>th</span>, 2020",
		"ts": "1594323360",
		"summary": "I know you need an nvUltra update, so I&rsquo;ll attempt that in less than 50 words: 99% finished, beta testing going well, couple bugs left, need to finalize our pricing model. Our personal lives are dictating release timing, and it may be out another month or so. I promise a more thoughtful update soon. I have a new update for Marked 2 almost ready for release. It incorporates a change to its very core, though, that there&rsquo;s a nontrivial chance I&rsquo;ve broken some part(s) of its extensive feature set and haven&rsquo;t noticed yet. That&rsquo;s why I&rsquo;m asking anyone who uses Marked to download the beta below and give it a whirl. You can always switch back to the stable release, and I promise it won&rsquo;t destroy any data or harm your machine (not liable, of course, standard disclaimer). It would just be very helpful to have people use it the way they always do and see if anything in their routine no longer works as expected. If you&rsquo;re into testing and don&rsquo;t want to read all the stuff I&rsquo;m about to say, and it might be a lot, just download the beta build below and get going. The beta is free to use and time-limited. You can run it alongside your current version. If you use the MAS or Setapp versions, your current preferences won&rsquo;t show up in the beta, but it will work all the same. Please use the Beta Testing category of the Marked support site for feedback and bug reports. (Note: please start a new conversation for every report, Tender is not great for multi-user, multi-threaded conversations.) Download the beta here. Ok, antsy pants, just take it and go. Did you stick around to learn more? Thanks! The suspense was killing me. Release notes really have a way of compressing a hundred hours of work into a one-line summary, you know? Load preview contents via JavaScript DOM replacement instead of full refresh for smoother updates Allow base URL to be sent with streaming preview to enable relative paths Cleaned up Syntax Style and MathJax popup menus. Weeded out less common options, removed extensions from the display, and alphabetized New layout for Help->Custom Processor Log, shows both preprocessor and processor, with STDIN and STDOUT side by side Reduce download size by cleaning out some frameworks and moving Help assets to load remotely Heavy-duty JavaScript refactoring Smooth out section-collapsing animation Not even one of my longer changelog entries. It&rsquo;s just that first&hellip;",
		"keywords": ["javascript","markdown","mathjax","again","allow","archive","before","cleaned","custom","depending","download","drafts","fixed","generic","heavy","improved","indistinct","javascript","katex","kinda","laboratory","markdown","marked","mathjax","modest","notes","preview","processor","release","replace","stdin","stdout","scathed","scene","setapp","smart","smooth","sparkle","stage","story","streaming","style","sucked","support","syntax","tender","testing","thanks","tweeting","ulysses","weeded","acceptably","across","added","adding","advantage","again","allow","almost","alongside","alphabetized","animation","another","antsy","anyone","asking","assets","automatic","backwards","barely","beard","because","before","beginning","below","bookmarks","breaks","bring","broke","broken","build","builds","built","called","category","center","chance","change","changed","changelog","changes","channel","character","cleaning","clever","clipboard","collapsing","common","compatible","compressing","content","contents","conversation","conversations","copied","count","couple","creation","creeps","curious","darnit","database","delight","destroy","developer","developers","dictating","difficult","directly","disclaimer","display","document","doing","download","downright","earlier","emailing","emerges","enough","ensue","entries","everyone","expected","experimentally","extensions","extensive","extra","fancy","feature","features","feedback","files","filled","finalize","finally","finished","first","fixed","flickering","frameworks","gaining","going","great","ground","grows","grumbling","handles","haven","hellip","helpful","highlighting","highlights","himself","holds","horizontal","hours","hundred","image","images","implementation","implemented","implements","improvement","inconvenient","incorporate","incorporates","inject","injection","injects","jerking","keyword","killing","languished","largely","layout","learn","liable","light","lights","limited","lives","local","longer","macos","machine","making","mdash","meaningless","meant","mentioned","menus","metadata","missing"]
	},{
		"title": "PDFpen 12.1 with page label support [Sponsor]",
		"url": "/2020/07/09/pdfpen-12-dot-1-with-page-label-support-sponsor/",
		"tags": ["sponsor"],
		"date": "Jul 9<span>th</span>, 2020",
		"ts": "1594299600",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! PDFpen and PDFpenPro 12.1 have arrived! This latest version of the ultimate tool for editing PDFs on the Mac now includes even more powerful features including: PDFpen 12 works with PDFpen for iPad & iPhone, allowing seamless editing across devices when used with Dropbox or iCloud. PDFpen and PDFpenPro are your ultimate PDF viewing and editing apps for the Mac. You can add headers, footers, and watermarks to your documents. It also includes a precision edit tool, and you can OCR documents and edit content in table cells. Learn more about PDFpen and PDFpenPro at smilesoftware.com",
		"keywords": ["pdfpen","smile","software","brettterpstra","customizable","dropbox","learn","magnifier","pdfpen","pdfpenpro","stationary","thanks","window","ability","across","allowing","arrived","available","cells","colors","compression","content","custom","designs","devices","document","documents","editing","farther","features","footers","formats","great","headers","icloud","iphone","includes","including","label","labels","latest","multiple","paper","powerful","precision","seamless","settings","smilesoftware","sponsoring","support","table","ultimate","users","version","viewing","watermarks","works"]
	},{
		"title": "A quick SearchLink update",
		"url": "/2020/07/08/a-quick-searchlink-update/",
		"tags": ["searchlink"],
		"date": "Jul 8<span>th</span>, 2020",
		"ts": "1594198140",
		"summary": "If you&rsquo;ve noticed SearchLink suddenly started returning raw DuckDuckGo links, you&rsquo;re not alone. I&rsquo;m not sure exactly what changed, but I had to make some changes in the processing of the results to get it back on track. There&rsquo;s a new version (2.2.15) available for download, below or on the project page. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["markdown","search","tools","writing","changelog","donate","download","duckduckgo","markdown","published","searchlink","updated","alone","available","below","changed","changes","download","editor","hellip","leaving","links","noticed","processing","project","results","returning","rsquo","searches","started","suddenly","track","version"]
	},{
		"title": "Get some great deals on software",
		"url": "/2020/06/22/get-some-great-deals-on-software/",
		"tags": ["deals","macos"],
		"date": "Jun 22<span>nd</span>, 2020",
		"ts": "1592846580",
		"summary": "It&rsquo;s time again for the SummerFest Artisinal Software sale. Featuring 13 first-in-class Mac apps including Tinderbox, DEVONthink, and TextExpander, every app defines their own discount and is purchased separately. No bundles full of software you don&rsquo;t need, and developers get to keep their profits instead of losing them to organizers. I highly recommend checking it out and seeing if there&rsquo;s any software you need on the docket. There&rsquo;s also the Back on Track sale being run by the Unclutter developers. A good selection of Mac apps including Capto and Unclutter, most at 50% off. Purchase individually, or the whole bundle for $72 (value $344)",
		"keywords": ["bundle","software","summerfest","tinderbox","artisinal","capto","devonthink","featuring","software","summerfest","textexpander","tinderbox","track","unclutter","again","bundle","bundles","checking","class","couple","defines","developers","discount","docket","first","hellip","highly","including","individually","losing","organizers","pointers","profits","purchased","recommend","rsquo","sales","seeing","selection","separately","software","value","whole"]
	},{
		"title": "Web Excursions for June 19, 2020",
		"url": "/2020/06/19/web-excursions-for-june-19-2020/",
		"tags": ["bookmarks","shortcuts"],
		"date": "Jun 19<span>th</span>, 2020",
		"ts": "1592581860",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. extrawurst/gitui I am, as you may know, a huge fan of Tower for my Git GUI needs on my Mac, but there are times you have to stick with your terminal (e.g. over SSH). If you&rsquo;d still like some GUI ease for staging and commits on the command line, this little tool is pretty slick. CustomShortcuts — Customize menu keyboard shortcuts An excellent utility from the maker of HoudahSpot. Seriously, it&rsquo;s really good. It makes the process of assigning custom shortcuts to macOS application menu items a cinch, with autocompletion to help navigate menu hierarchies and get menu titles exactly right. It will even check for overlaps with ambiguous menu titles, and allow you to copy/paste shortcuts between applications, all things that System Preferences won&rsquo;t do for you. It&rsquo;s free, get it. Airshare A sweet little CLI for local network file and text transfers. Kind of like Airdrop for the command line. It even has the ability to send files based on lists you copied from Finder to the clipboard, and the ability to send and receive text directly from and to the clipboards on the sending and receiving machines. jakedeichert/mask: 🎭 A CLI task runner defined by a simple markdown file This is a different take on what I did with my howzit project. I really like the approach, basically making Markdown-formatted Makefiles. The unofficial WWDC app for macOS If you&rsquo;re not loving Apple&rsquo;s official Developer (Catalyst) app on your Mac, here&rsquo;s a good alternative. The download link is broken as of this writing, but you can get the latest release on GitHub",
		"keywords": ["airdrop","apple","clipboard","conference","developers","keyboard","macos","paste","shortcut","worldwide","airdrop","airshare","apple","brett","catalyst","cleanmymac","customshortcuts","customize","developer","finder","github","houdahspot","makefiles","markdown","preferences","seriously","system","tower","ability","absolute","airshare","allow","ambiguous","applications","approach","assigning","autocompletion","based","between","border","brettterpstra","broken","brought","check","cinch","class","clipboard","clipboards","command","commits","copied","custom","customshortcuts","defined","different","directly","display","download","excellent","excursions","extrawurst","files","formatted","github","gitui","height","hidden","hierarchies","holding","houdah","houdahspot","howzit","https","image","impactradius","insidegui","items","jakedeichert","keyboard","latest","lists","little","loading","local","loving","macos","machines","macpaw","maker","makes","making","markdown","media","navigate","needs","network","noscript","official","original","overlaps","partnership","paste","picture","position","process","project","projects","readthedocs","receive","receiving","release","releases","right","rsquo","runner","sending","shortcuts","simple","slick","source","speed","srcset","staging","stick","style","terminal","times","title","titles","tools","tower","transfers","unofficial","uploads","utility","visibility","width","writing"]
	},{
		"title": "Markdown Service Tools v3.0",
		"url": "/2020/06/15/markdown-service-tools-v3-dot-0/",
		"tags": ["browser","editor","markdown","markdownservices","multimarkdown","service","support","tools","webdesign","writing"],
		"date": "Jun 15<span>th</span>, 2020",
		"ts": "1592231400",
		"summary": "It&rsquo;s been a few years since I made any significant updates to the Markdown Service Tools, so I guess it&rsquo;s time. I&rsquo;m releasing version 3.0.0 today with a refresh of many of the existing Services, as well as some brand new ones. If you&rsquo;re unfamiliar, Markdown Service Tools is a collection of macOS Services (a.k.a. Quick Actions) designed to make writing Markdown easier, no matter what application you&rsquo;re working in. By assigning keyboard shortcuts to your favorites, it&rsquo;s possible to turn any editor into a Markdown editor. I&rsquo;ll say off the bat here that we&rsquo;re going through some serious pet medical issues in our home right now, thus extra expenses, so I&rsquo;d ask that if you use this project (or any of my projects), you pay what you can for them. Yeti and Lulu greatly appreciate your support, and thank you from me to everyone who has donated in the past or provides continuing support for my work. The fur kids appreciate you! Or me on GitHub! This whole refresh of the Services started because I&rsquo;ve recently switched to Firefox as my primary browser. The Tools include Services for getting a reference list of all tabs in Safari and Chrome, but Firefox is significantly more difficult as it lacks any kind of AppleScript support. So I spent almost two hours trying to hack around it and came out with a decent solution. The biggest issue is that it intermittently fails due to a bug in Catalina&rsquo;s security measures. If you want to try it out, be sure to see the notes on authorizing it. I also added \"Tabs\" services for Brave and Microsoft Chrome, so you can install the one(s) for your browsers of choice. I included a couple of Services that use Marky as well, now that I have that operating pretty well again. You can copy a link to your clipboard, then in a text field, right click and choose \"Clipboard URL to Markdown\" to grab the contents of the URL and convert it to Markdown in your editor or notes app. Previously, most of the Markdown conversion services used the old Perl version of MultiMarkdown. A lot has changed in MMD since those days, so it now uses the binary version (presumably v6), which has to be installed on your Mac. If a Service that requires it can&rsquo;t find it, it will let you know and link you to the download page for the most recent release. This change means that you can use any of the latest syntax in your Markdown and properly convert it to HTML or RTF as&hellip;",
		"keywords": ["chrome","firefox","google","languages","lightweight","markup","taking","actions","analytics","anyway","applescript","backticks","banner","block","brave","brett&#39;s","caojvkhpd","catalina","chrome","clean","clipboard","convert","fenced","finder","firefox","github","google","improved","indent","indentation","links","macbook","markdown","markdownifier","markdownify","marky","microsoft","multimarkdown","mutlimarkdown","numbered","pages","paypal","previously","punctuation","quick","safari","screenshot","service","services","smart","speaking","sponsor","support","system","textedit","tools","touch","updated","visit","accepts","action","actions","added","again","align","almost","appreciate","aside","assigning","authorizing","because","becomes","benefit","biggest","binary","blank","border","brand","brettterpstra","browser","browsers","button","center","certificate","change","changed","changes","choice","choose","class","clean","cleaning","click","clipboard","collection","contents","continuing","conversion","convert","converting","converts","couple","daringfireball","dashes","decent","defaults","designed","developer","dialog","difficult","digitally","donate","donated","donating","double","download","easier","editor","emphasis","everyone","expenses","extensions","extra","fails","favorites","field","firefoxtabs","fixed","fletcher","fletcherpenney","fonts","generating","getting","github","going","greatly","guess","guillemets","handles","height","hellip","hidden","hours","https","icons","iframe","image","included","incomplete","index","input","instagram","install","installed","instructions","intermittently","issues","keyboard","label","lacks","language","latest","ldquo","links","loading","macos","markdown","markdownrules","mdash","measures","media","medical","method","multimarkdown","ndash","needed","noscript","notes","numbered","numbering","operating","original","paypalbutton","paypalform","peace","picture","position","possible","presumably","primary","project","projects","properly","provides","pullquote","quotes","radius","rdquo","recent","recently","refresh","relative","release","releasing","requires","requiresmmd","right"]
	},{
		"title": "Marked 2 as an even better teleprompter",
		"url": "/2020/06/13/marked-2-as-an-even-better-teleprompter/",
		"tags": ["markdown","marked"],
		"date": "Jun 13<span>th</span>, 2020",
		"ts": "1592085900",
		"summary": "When I posted about it, I honestly didn&rsquo;t think anyone other than myself would actually want to use Marked as a teleprompter, so I let a few quirks slide. Turns out a bunch of people were interested in the idea, so I spent a few hours revamping the autoscroll and adding a nifty visual countdown for the pause tags. It was a sprint that also included minor updates to howzit1 and mdless2, but a complete rewrite of the way Marked performs autoscroll was my primary focus in this orgy of code. As of this writing, the changes are live for Paddle customers, and awaiting review for MAS and Setapp users. Marked&rsquo;s autoscroll feature (hit when previewing a document) is entirely JavaScript-based, so I&rsquo;ve been at the mercy of the older version of WebKit that Marked needs to use to offer its functionality. To fix the jitters, I shifted away from trying to get simple smooth scrolling to work with an interval or repeated timeout, focusing instead on using pure CSS transforms to get a truly smooth scroll. Now it performs transforms of any increment with one-second transitions, repeated on a one-second timeout for a seamless loop. It scrolls smoothly at any speed. The navigability of the document suffers a little when autoscroll is running because the actual document is now shifting outside the bounds of the window, but you can simply toggle autoscroll off (hit again) and the preview will seamlessly reposition so you can continue scrolling and navigating without a hitch. In my last post on this topic, I mentioned that I&rsquo;d added the ability to include pauses in autoscroll using HTML comments. I found this handy, but it could also be a bit hard to know exactly what was going on in practical use. So I added visual countdowns to it: when a pause tag hits the vertical middle of the screen (give or take a few pixels, depending on scroll speed), it pops up a horizontal progress bar that animates down to zero for the allotted number of seconds. It makes it very obvious what&rsquo;s happening when the scroll stops, and exactly how much time you have to breathe and prepare for the next section. I was proud enough of both the improved scrolling and the countdown bars to make a new video. If you&rsquo;re considering using Marked as a teleprompter, I think you&rsquo;ll dig the changes! Changed to allow interactive processes like vim from within @run directives.&nbsp;↩ Fixed an issue where a table would disappear from output if it were the&hellip;",
		"keywords": ["interface","scroll","scrolling","techniques","teleprompter","changed","fixed","javascript","marked","paddle","setapp","special","syntax","turns","video","webkit","youtube","ability","added","adding","again","allotted","allow","animates","anyone","autoscroll","awaiting","backlink","based","because","bottom","bounds","breathe","brettterpstra","bunch","changes","class","comments","considering","container","continue","countdown","countdowns","customers","depending","directives","disappear","document","endnotes","enough","entirely","feature","figure","fnref","focus","focusing","footnote","footnotes","found","functionality","going","handy","happening","height","highlighter","hitch","honestly","horizontal","hours","howzit","https","improved","included","increment","interactive","interested","interval","jitters","language","little","makes","marked","mdless","mentioned","mercy","middle","minor","myself","navigability","navigating","needs","nifty","noteref","obvious","offer","older","output","outside","padding","pause","pauses","people","performs","pixels","plaintext","posted","practical","prepare","preview","previewing","primary","processes","projects","proud","quirks","repeated","reposition","revamping","reversefootnote","revisited","rewrite","rouge","rsquo","running","screen","scroll","scrollby","scrolling","scrolls","seamless","seamlessly","second","seconds","section","shifted","shifting","simple","simply","slide","smooth","smoothly","speed","spent","sprint","stops","style","suffers","table","teleprompter","think","timeout","toggle","topic","transforms","transitions","translatey","truly","trying","updates","users","using","version","vertical","video","videoid","visual","watch","where","width","window","within","writing","youtube"]
	},{
		"title": "TextExpander for Mac, iOS, Chrome, and Windows [Sponsor]",
		"url": "/2020/06/11/textexpander-for-mac-ios-chrome-and-windows-sponsor/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Jun 11<span>th</span>, 2020",
		"ts": "1591876800",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! As I&rsquo;m sure long-time readers know, I&rsquo;m a huge fan of TextExpander, and am always pleased to have them as a sponsor. TextExpander does what you&rsquo;d expect from its name: it expands text. You define text shortcuts that expand to prepared snippets when you type them. It&rsquo;s a huge timesaver, and prevents the tedious work of typing out things you often repeat. TextExpander syncs your snippets to all your devices (Mac, iOS, Chrome, and Windows) so you can use them wherever you work &mdash; in the office, at home, or on the go. You can make your snippets even more powerful with fill-ins, pop-ups, and more so your messages are customized instead of just boilerplate text. TextExpander is available for companies, too. Manage and share snippets across your teams and departments. TextExpander hosts interesting webinars every month. Sign up for our TextExpander beginner, advanced, and teams webinars to learn more about boosting your productivity. You can find all of our webinars at textexpander.com/webinar",
		"keywords": ["macos","smile","snippets","textexpander","windows","brettterpstra","chrome","learn","textexpander","thanks","windows","across","advanced","available","beginner","boilerplate","boosting","companies","customized","define","departments","devices","expand","expands","expect","first","hosts","interesting","learn","mdash","messages","office","often","pleased","powerful","prepared","prevents","productivity","readers","repeat","rsquo","share","shortcuts","snippets","sponsor","sponsoring","syncs","teams","tedious","textexpander","timesaver","typing","webinar","webinars","wherever"]
	},{
		"title": "Following the protests on social media",
		"url": "/2020/06/10/following-the-protests-on-social-media/",
		"tags": ["protest","support","twitter"],
		"date": "Jun 10<span>th</span>, 2020",
		"ts": "1591793820",
		"summary": "I&rsquo;m not going to talk much about me and my beliefs here. Suffice to say I&rsquo;ve been a supporter of prison and police abolition since my 20s and I&rsquo;m excited to have these concepts showing up in the mainstream. Or at least the left side of the mainstream. I live well outside of any metro area these days, so my support of the protesters is mostly through donations and doing my best to amplify voices who are an active part of bringing about long-overdue change. To that end, I wanted to share a few social media accounts I&rsquo;ve found helpful in following the Black Lives Matter protests, in-person and unvarnished by media. Mostly photographers, a few activists, and by no means a comprehensive list &mdash; but a good start for a first-person view. Unicorn Riot Commercial-free, viewer supported, independent media & live video streams. &mdash; Minneapolis Follow on Instagram, Facebook, Twitter Rachel Cargle Curious Soul. Writer. Lecturer. Public Academic. New Yorker. &mdash; NYC Follow on Instagram, Twitter Also follow The Great Unlearn on Instagram Dee Dwyer Visual Voice for the People, Photographer &mdash; D.C. Follow on Instagram Tony Mobley Documenting the Culture, exposure is 🔑 Contributor to @everydayblackamerica &mdash; D.C. Follow on Instagram Michael Noble Jr. Harlem based photojournalist &mdash; NYC Follow on Instagram Demetrius Freeman Photojournalist, Visual Storyteller, NYT contributor &mdash; NYC Follow on Instagram, Medium, Twitter, Facebook Devin Allen Photographer &mdash; Baltimore Follow on Instagram Chris Facey Documentary, Street and Lifestyle Photographer. &mdash; NYC Follow on Instagram Charlene Carruthers Author: Unapologetic: A Black, Queer and Feminist Mandate for Radical Movements. Follow on Instagram Patrisse Cullors-Brignac Artist. Organizer. Freedom Fighter. Co-Author of New York Times Bestseller ‘When They Call You a Terrorist.’ Follow on Twitter, Instagram This is a very short list. If you have some to add, please share in the comments or via Twitter (replies linking this post will be included below automatically)",
		"keywords": ["abolition","blacklivesmatter","police","prison","protests","academic","allen","artist","author","baltimore","banner","bestseller","black","brignac","cargle","carruthers","charlene","chris","commercial","contributor","cullors","culture","curious","demetrius","devin","documentary","documenting","dwyer","facebook","facey","feminist","fighter","freedom","freeman","great","harlem","instagram","lecturer","lifestyle","lives","mandate","medium","michael","minneapolis","mobley","mostly","movements","noble","organizer","osopepatrisse","osopepatrisse","patrisse","people","photographer","photojournalist","public","queer","rachel","rachelcargle","radical","storyteller","street","suffice","terrorist","times","twitter","unapologetic","unicorn","unlearn","visual","voice","writer","yorker","abolition","accounts","active","activists","amplify","automatically","based","beliefs","below","blacklivesmatter","brettterpstra","bringing","butter","bydvnlln","cargle","change","charlenecarruthers","class","comments","comprehensive","concepts","contributor","deedwyerjonts","demetrius","demetriusfreem","demetriusfreeman","doing","donations","everydayblackamerica","excited","exposure","facebook","first","found","freeman","going","height","helpful","https","image","included","independent","instagram","linking","linktr","loading","mainstream","mdash","media","medium","metro","michaelnoblejr","mostly","ninja","noscript","original","outside","overdue","patrissecullors","person","photodemetriusfreeman","photographers","photojournalist","picture","police","prison","protest","protesters","protests","rachel","replies","rsquo","share","short","showing","shutter","since","social","source","srcset","streams","support","supported","supporter","thatgotawayy","thegreatunlearn","themarshallproject","through","title","tonemobley","tonymobley","twitter","unicornriot","unvarnished","uploads","video","viewer","voices","wanted","width"]
	},{
		"title": "Marked 2 as teleprompter, revisited",
		"url": "/2020/06/08/marked-2-as-teleprompter-revisited/",
		"tags": ["markdown","marked"],
		"date": "Jun 8<span>th</span>, 2020",
		"ts": "1591641420",
		"summary": "I first started using Marked as a teleprompter for screencasting back in 2013. With the right style and the built-in autoscroll feature, it makes a serviceable replacement for some of the (often spendy) teleprompter apps out there. The first step is to get the Teleprompter theme from the style gallery. Just visit the page on your Mac and hit \"Install\" to add it directly to Marked. Once you have the theme, you can start prompting just by hitting the &lsquo;s&rsquo; key in a Marked preview. That will start autoscroll at the slowest speed. Use left and right arrows to speed up/slow down the scroll speed. (You can also click and drag on the meter that appears in the lower left of the screen.) That&rsquo;s all there is to it. Well, one more thing. As of version 2.5.41 (out for Paddle and Setapp customers, awaiting MAS review), you can add pauses to your script. If autoscroll is an unknown feature that few people will use, then this is a truly obscure one that will probably only be just for me. But if you write your scripts in Markdown (or just plain text) and would like the autoscroll to pause at certain points, you can just add (where 15 is any number of seconds) in the document. When that line scrolls to the center of the window, it will pause for the specified number of seconds before continuing autoscroll. Even if this feature rarely gets used, it will never get in anyone&rsquo;s way, plus it was fun to code. I stand by this addition to Marked&rsquo;s feature set",
		"keywords": ["macos","preview","screencast","script","teleprompter","install","markdown","marked","paddle","setapp","teleprompter","anyone","appears","arrows","autoscroll","awaiting","before","built","center","certain","click","continuing","customers","directly","document","feature","first","gallery","hitting","lower","lsquo","makes","meter","obscure","often","pause","pauses","people","points","preview","prompting","rarely","replacement","right","rsquo","screen","screencasting","script","scripts","scroll","scrolls","seconds","serviceable","slowest","speed","spendy","stand","started","style","teleprompter","theme","truly","unknown","using","version","visit","where","window","write"]
	},{
		"title": "The MacSparky Photos Field Guide (+Giveaway)",
		"url": "/2020/05/27/the-macsparky-photos-field-guide-plus-giveaway/",
		"tags": ["giveaway","photography","video"],
		"date": "May 27<span>th</span>, 2020",
		"ts": "1590591900",
		"summary": "David Sparks is back with another installment in his Field Guides collection, this time a second edition of his Photos Field Guide. The Field Guide includes almost six hours of video training on Photos.app, covering topics from library management, organizing, and sharing to taking better pictures and tips for editing/retouching them. The Field Guide comprises 123 videos in total. The price for the course is $29, but it&rsquo;s discounted for launch to $24. David has also graciously supplied a few codes for BrettTerpstra.com readers. Sign up below for your chance to win one of three (3) free copies of the Photos Field Guide Second Edition (value $29/ea). Winners will be drawn at random on Friday, May 29th, at 12pm Central Time. Email required to enter, used only for notifying winners (it will be deleted from my server after the drawing and never shared with anyone). Sorry, this giveaway has ended",
		"keywords": ["macos","photos","brettterpstra","central","david","edition","email","field","friday","guide","guides","photos","second","sorry","sparks","winners","almost","another","anyone","below","chance","check","codes","collection","comprises","copies","covering","deleted","discounted","drawing","editing","edition","ended","enter","giveaway","graciously","hours","includes","installment","launch","library","management","notifying","organizing","pictures","price","random","readers","required","retouching","rsquo","second","selection","server","shared","sharing","supplied","taking","topics","training","value","video","videos","winners"]
	},{
		"title": "Web Excursions for May 21, 2020",
		"url": "/2020/05/21/web-excursions-for-may-21-2020/",
		"tags": ["bookmarks"],
		"date": "May 21<span>st</span>, 2020",
		"ts": "1590079740",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. 10% Off The Lab merch Use code for 10% off anything in The Lab shop (all my t-shirts, mugs, and stickers), today only (21 May 2020). Scroll An elegant version of a micropayment version of the web, with a decent spread of publishers already on board. No extension necessary, your login cookie automatically causes sites to hide ads and disable trackers. Free trial, affordable subscription. I love the idea of directly supporting publishers&mdash;who continue to own their content&mdash;so they can skip the ads and trackers. Scroll isn&rsquo;t the first attempt at this, but it has more potential for wide adoption than some others I&rsquo;ve looked at. Here&rsquo;s how Scroll works. aaronjanse/3mux A terminal multiplexer (inspired by i3) with out-of-the-box support for search, mouse-controlled scrollback, and i3-like keybindings. I love but I can live without the scrollback/copy rigamarole it entails. GoldenChaos-BTT: The complete Touch Bar UI replacement If you haven&rsquo;t already customized your Touch Bar extensively, this is an amazing BetterTouchTool preset group that adds a ton of configurable functionality. Via @Cliophate InterwebAlchemy/scrape-rss-bot This is a great idea: a Slack bot that converts links shared in your channels to an RSS feed you can peruse at your convenience, using whatever tools you prefer for RSS reading",
		"keywords": ["multiplexers","terminal","bettertouchtool","cleanmymac","cliophate","goldenchaos","interwebalchemy","scroll","slack","touch","aaronjanse","adoption","affordable","amazing","automatically","board","brought","causes","channels","configurable","content","continue","controlled","convenience","converts","cookie","customized","decent","directly","disable","elegant","entails","excursions","extension","extensively","first","functionality","great","group","haven","inspired","keybindings","links","login","looked","mdash","merch","micropayment","mouse","multiplexer","necessary","others","partnership","potential","prefer","preset","publishers","reading","replacement","rigamarole","rsquo","scrape","scrollback","search","shared","shirts","sites","speed","spread","stickers","subscription","support","supporting","terminal","today","tools","trackers","trial","using","version","whatever","works"]
	},{
		"title": "Automating NiftyMenu",
		"url": "/2020/05/18/automating-niftymenu/",
		"tags": ["automation","automator","macos","niftymenu","scripting","terminal","tools","webdesign"],
		"date": "May 18<span>th</span>, 2020",
		"ts": "1589806800",
		"summary": "So I needed to update my menu screenshots for the nvUltra documentation, which meant revisiting my NiftyMenu setup. In case you haven&rsquo;t been raptly following the progress on that little side project, it&rsquo;s a little tool that replicates any macOS app&rsquo;s menus in HTML and allows for more flexible and consistent screenshot creation. For a while it&rsquo;s been 90% of the way to being a perfect tool for updating my documentation&rsquo;s screenshots. It can easily set the background image, lock a menu item in place, add callouts, and even automatically shoot the screenshot, all repeatable via JavaScript. I&rsquo;ve let go of the idea of ever having it so automated that I can include it as part of a build script, but I do have it to a point where it&rsquo;s pretty close. I added two new features to get me there: the screenshot () command now allows you to specify a filename, and there&rsquo;s a Nifty \"terminal.\" The former means I can script menu screenshots and save them with filenames that match (and therefore update) existing screenshots in my documentation. The latter simply avoids the step of opening the Web Inspector, which is more a novelty than a requirement. I will reiterate at this point that the screenshot capability of this tool only works in Chrome. But it works so well in Chrome that it&rsquo;s worth running Chrome for it even if it&rsquo;s not your primary browser. The Terminal is opened by hitting while viewing a NiftyMenu HTML page. Paste JavaScript into it and hit Run. The pasted text will be split at semicolons and trimmed, run one \"command\" at a time. Because the NiftyAPI is all about chaining, you can write the entire script as one \"command.\" Here&rsquo;s one that updates three nvUltra screenshots: I just keep that snippet in a text file in the same folder as my Markdown documentation, updating it as I add new screenshots. Whenever I paste it into the Nifty Terminal and run it, it instantly saves the updated screenshots to Downloads (occasionally shooting so quickly that I have to tell Chrome to \"allow multiple downloads\"). The weird suffixes on the specified filenames trigger a Hazel rule that then creates 1x and 2x versions, optimized and ready to move to my documentation folder. Because the command is fuzzy (it will find the closest menu item title match, even if the letters are non-contiguous), it&rsquo;s resistant to changes to the menu ordering and wording. This means that as new menu items are added and I&hellip;",
		"keywords": ["chrome","google","javascript","screenshot","because","chrome","downloads","github","hazel","inspector","javascript","markdown","nifty","niftyapi","niftymenu","paste","terminal","whenever","added","allow","allows","anyone","automated","automatically","automating","avoids","background","browser","build","callouts","capability","chaining","change","changes","close","closest","command","consistent","contiguous","creates","creation","different","downloads","easily","editing","entire","features","filename","filenames","flexible","folder","former","fuzzy","haven","having","hitting","image","instantly","items","latest","latter","letters","little","macos","match","meant","menus","multiple","mundane","needed","novelty","nvultra","occasionally","opened","opening","optimized","ordering","paste","pasted","point","primary","project","quickly","raptly","rarely","ready","regenerate","repeatable","replicates","requirement","resistant","revisiting","rsquo","running","saves","screenshot","screenshots","script","semicolons","setup","shoot","shooting","simply","siren","snippet","specify","split","suffixes","switch","tempted","terminal","themselves","therefore","title","trigger","trimmed","updated","updates","updating","version","versions","viewing","wallpaper","weird","where","while","wording","works","worth","write"]
	},{
		"title": "BrettTerpstra.com t-shirts",
		"url": "/2020/05/16/brettterpstra-dot-com-t-shirts/",
		"tags": ["personal","shirts","support"],
		"date": "May 16<span>th</span>, 2020",
		"ts": "1589660580",
		"summary": "As part of a larger roundup this last week, Michael Raphael was kind enough to remind people on Twitter that I do, as a matter of fact, have T-shirts for sale. I figured I&rsquo;d remind folks here, too. Updated, with apology: Not having anything in my own culture or heritage that I consider off limits for a joke, I&rsquo;m not always sensitive to the culture and heritage of others. I realize, though (a bit late, obviously), that the Spirit Animal t-shirt was likely offensive to some, and I&rsquo;d rather not perpetuate that. I&rsquo;m pulling that one from sale, to be replaced with something unoffensive when I come up with a way to humorously express the same sentiment in a more culturally sensitive way. I apologize to anyone I offended. The ones that have sold thus far are officially \"limited edition,\" but if you want a replacement, just let me know. I&rsquo;ll eat the cost and get you something else if needed. I don&rsquo;t make a huge profit margin on the shirts and other accessories, but this is one way I can ask for support and provide something tangible in return. Donations to my \"coffee fund\", of course, have a higher profit margin for me. As a consequence of being self-employed, I don&rsquo;t make anything on all of my dev time until a product (cough nvUltra) ships, so your support of my non-commercial pursuits and all of the stuff I share for free helps me get through. While I work on a new design, there&rsquo;s the Lab 2.0 logo t-shirt, now available in a premium tri-blend, or perhaps the coffee mug, as an ode to my love of Markdown. See all the available styles at The Lab storefront. And don&rsquo;t forget about the Rock Scissors collection, including new material options for (my favorite t-shirt I&rsquo;ve ever made) the I Wanna Be shirt",
		"keywords": ["clothing","fashion","shirt","animal","donations","markdown","michael","raphael","scissors","spirit","thank","twitter","updated","wanna","while","accessories","anyone","apologize","apology","available","blend","coffee","collection","commercial","consider","cough","culturally","culture","design","edition","employed","enough","express","favorite","figured","folks","forget","having","helps","heritage","higher","humorously","including","larger","likely","limited","limits","margin","needed","nvultra","offended","offensive","officially","options","others","people","perhaps","perpetuate","premium","product","profit","pulling","pursuits","rather","realize","remind","replaced","replacement","return","roundup","rsquo","sensitive","sentiment","share","ships","shirt","shirts","storefront","stuff","styles","support","tangible","through","unoffensive"]
	},{
		"title": "PDFpen 12 adds even more features [Sponsor]",
		"url": "/2020/05/14/pdfpen-12-adds-even-more-features/",
		"tags": ["sponsor","support"],
		"date": "May 14<span>th</span>, 2020",
		"ts": "1589454000",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! PDFpen and PDFpenPro is your ultimate PDF viewing and editing app for the Mac. You can add headers and footers, along with watermarks to your documents. It also includes a precision edit tool, plus you can OCR documents and edit content in table cells. Optimize your PDFs for smaller file sizes with customizable image compression settings. Built-in DocuSign support for digitally signing PDFs. Magnifier Window: Magnify any part of a document independently of the document&rsquo;s Zoom level. PDFpen for Mac supports macOS Catalina, and PDFpen for iPad & iPhone supports iOS 13 and Apple Pencil. Learn more about PDFpen and PDFpenPro at smilesoftware.com",
		"keywords": ["pdfpen","smile","software","apple","brettterpstra","built","catalina","docusign","learn","magnifier","magnify","optimize","pdfpen","pdfpenpro","pencil","thanks","window","cells","compression","content","customizable","digitally","document","documents","editing","features","footers","headers","iphone","image","includes","independently","level","macos","precision","rsquo","settings","several","signing","sizes","smaller","smilesoftware","sponsoring","support","supports","table","ultimate","useful","viewing","watermarks"]
	},{
		"title": "Brace expansion and sequences in Fish",
		"url": "/2020/05/08/brace-expansion-and-sequences-in-fish/",
		"tags": ["scripting","terminal"],
		"date": "May 8<span>th</span>, 2020",
		"ts": "1588960800",
		"summary": "Brace expansions are a shell syntax that lets you perform operations on a series of arguments with variable components without having to type each one out in full. Bash can do a lot with this that Fish can&rsquo;t, so it&rsquo;s taken a little work to replicate some common commands in Fish. But not much. If a pair of braces (curly brackets, or ) contains a comma-separated list, the argument is repeated with the brace replaced with each item in the list. For example, in both Bash and Fish you can use a single argument to create multiple directories: Another handy use of this syntax comes up when copying or moving a file with a new extension. Again, this syntax works in both Bash and Fish: That will expand to , renaming the file to . In Bash you also get sequences, meaning you can run and get . Fish doesn&rsquo;t have range interpretation in its brace expansion, though. To do this in Fish, you need to use command substitution, in most cases using the command. The command has options for formatting and changing the increment as well (see ). If you put an integer between the start and end arguments, it will increment by that amount. To create only even numbered directories you would use: Fish does have solid index range expansion, which makes it easy to output a specific range, multiple ranges, reverse ranges, etc., but this still has to be used with command substitution and can&rsquo;t be used directly in a command the way brace expansion can. This creates files like and for every day. Of course, the problem is that this assumes 30 days in every month, a problem you can only work around with a more complex solution&hellip; Here&rsquo;s a Fish script for creating a text file for every day of every month for a given set of years. This uses nested loops for the known variables (3 years, 12 months each). Then it uses a little and hack to get the number of days for the current year/month combination in the loop. This allows us to run a command within the month loop, expanding to the correct number of days. One thing neither Fish nor can do (that I know of) is alphabetic sequences. In Bash, brace expansion understands and will fill in the letters between. In order to accomplish this in Fish, you&rsquo;ll need to execute something in the middle using Ruby, Perl, etc. For example, the following will do the same thing as would in Bash: The ruby command uses a range operator, output as an array and then combined with a comma. The output of this&hellip;",
		"keywords": ["command","friendly","interactive","languages","mkdir","scripting","shell","substitution","again","alpha","another","argument","brace","brief","diversion","hopefully","numeric","resources","sequences","above","allows","alphabetic","alphanumeric","amount","argument","arguments","array","assumes","between","brace","braces","brackets","changing","choice","combination","comes","comma","command","commands","common","complex","components","containing","contains","copying","create","created","creates","creating","curly","directly","directories","directory","doesn","engine","eventually","example","execute","expand","expanding","expansion","expansions","extension","files","formatting","function","handy","happen","having","hellip","increment","incremented","index","information","integer","intermediate","interpretation","interpreted","letters","lists","little","longer","looking","loops","makes","meaning","middle","moving","multiple","needed","neither","nested","notes","numbered","numbers","operations","operator","options","output","outputs","padding","passed","problem","produces","project","range","ranges","renaming","repeated","replaced","replicate","reverse","rsquo","script","scripting","search","separated","sequences","series","shell","shows","similar","single","solid","solution","specific","strings","subdirectories","substitution","switch","syntax","taken","through","understands","useful","users","using","variable","variables","within","works","years"]
	},{
		"title": "A Fine Start - a minimal new tab page [Sponsor]",
		"url": "/2020/05/07/a-fine-start-a-minimal-new-tab-page-sponsor/",
		"tags": ["browser","minimalism","sponsor"],
		"date": "May 7<span>th</span>, 2020",
		"ts": "1588856400",
		"summary": "Thanks to A Fine Start for sponsoring BrettTerpstra.com this week! A Fine Start is a new tab page for your web browser. It lets you create a clean and minimal list of links that you can group and sort however you like. A Fine Start gives you just the right amount of functionality — without cluttering your new tabs with unnecessary screenshots and other space-hogging user interface elements. It&rsquo;s just hypertext, so it loads quickly and gets you where you want to go, fast. With its clean and chill aesthetic and support for light and dark mode, A Fine Start is a joy to use for anyone who appreciates minimalism in design. You can use A Fine Start for free. There&rsquo;s an extension available for Chrome and Firefox, and a web version available for other browsers. Your bookmarks are saved directly in your browser, and you can import/export them at any time. If you would like automatic syncing between browsers and devices, you can get a Premium subscription for just $5 a month, no password required. Get A Fine Start, the new tab page you will actually use",
		"keywords": ["bookmark","chrome","extensions","firefox","google","brettterpstra","chrome","firefox","premium","thanks","addon","addons","aesthetic","afinestart","amount","anyone","appreciates","automatic","available","between","bookmarks","brett","brettterpstra","browser","browsers","chill","chrome","class","clean","cluttering","content","create","design","detail","devices","directly","elements","export","extension","firefox","functionality","gives","google","group","height","hogging","however","https","hypertext","image","import","interface","kcgjmjiklcchbhljelchjdpoooccmhcn","light","links","loading","loads","media","minimal","minimalism","mozilla","nofollow","noscript","original","password","picture","quickly","required","right","rsquo","saved","screenshot","screenshots","source","space","sponsoring","srcset","subscription","support","syncing","title","unnecessary","uploads","version","webstore","where","width"]
	},{
		"title": "Web Excursions for May 6, 2020",
		"url": "/2020/05/06/web-excursions-for-may-06-2020/",
		"tags": ["bookmarks"],
		"date": "May 6<span>th</span>, 2020",
		"ts": "1588770000",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Watchsmith In case you missed the flurry of posts about this recently, it&rsquo;s an iOS app for Apple Watch that gives you detailed control over a watch face and a bunch of new complications. Speed up your Mac via hidden prefs While none of these changes will make a slow Mac feel like a brand-new machine, they can help the actual and apparent speed of your interaction with the OS&hellip; Tumult Whisk I personally need tools that can handle CSS pre-processors and do fine with grunt and livereload, but this is another slick looking option for an all-in-one editor and live preview. Aerial Brings Apple TV Screen Savers to the Mac Get all of the aerial screensavers on your Mac, with a ton of options and settings. Doropomo We believe that we should be truly relaxed before working. The main idea is to have a longer break period than work periods. So we \"inverted\" the Pomodoro timer and called it Doropomo&hellip; Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["apple","macos","aerial","apple","brings","check","doropomo","mindmeister","pomodoro","savers","screen","speed","tumult","watch","watchsmith","while","whisk","aerial","another","before","believe","boosting","brainstorming","brand","break","brought","bunch","called","changes","collaborating","collaborative","complications","control","detailed","editor","excursions","flurry","gives","grunt","handle","hellip","hidden","interaction","inverted","livereload","longer","looking","machine","mapping","missed","options","partnership","periods","personally","posts","prefs","preview","processors","productivity","recently","relaxed","rsquo","screensavers","settings","slick","software","speed","timer","tools","truly","watch","working"]
	},{
		"title": "SoundSource is Mac sound control so good, it ought to be built-in [Sponsor]",
		"url": "/2020/04/30/soundsource-is-mac-sound-control-so-good-it-ought-to-be-built-in-sponsor/",
		"tags": ["macos","sponsor"],
		"date": "Apr 30<span>th</span>, 2020",
		"ts": "1588248000",
		"summary": "A big thanks to SoundSource from Rogue Amoeba for sponsoring BrettTerpstra.com this week. I&rsquo;ve used almost every app Rogue Amoeba has made, but SoundSource has become an especially indispensable tool on my Mac. And they&rsquo;re offering BrettTerpstra.com readers 20% off! (I wrote a bit about SoundSource back in February, when I mentioned it was my top pick for audio control on my Mac.) SoundSource gives you powerful control over all the audio on your Mac, right from your menu bar, with: Per-Application Volume Control Change the volume of any app relative to others, and play individual apps to different audio devices. Mute your browser, or send music to one set of speakers and everything else to another. Improved Sound Quality Use Magic Boost and Volume Overdrive to hear your audio even in loud environments. The built-in equalizer can sweeten the sound, and more advanced users will love the ability to apply Audio Units to any audio. Fast Device Access All the settings your Mac’s audio devices are just a click away. Adjust input and output levels, tweak the balance, and even switch sample rates, right from your menu bar. One More Thing&hellip; If you have a DisplayPort or HDMI device that fails to offer volume adjustment, SoundSource can help there too. It gives those devices a proper volume slider, and the Super Volume Keys feature makes your keyboard volume controls work as well. Neat! Check out SoundSource today, with a free trial! Through May 15th, BrettTerpstra.com readers can save 20% with coupon code ",
		"keywords": ["amoeba","audio","rogue","soundsource","access","adjust","amoeba","audio","brett","boost","brettterpstra","change","check","control","device","displayport","improved","magic","overdrive","quality","rogue","sound","soundsource","super","through","units","volume","ability","action","advanced","almost","another","apply","audio","balance","brettterpstra","browser","built","class","click","control","controls","coupon","device","devices","different","enhanced","environments","equalizer","especially","everything","fails","feature","gives","height","hellip","highlighter","https","image","indispensable","individual","input","keyboard","language","levels","listening","loading","macos","makes","media","mentioned","music","nofollow","noscript","offer","offering","original","others","output","picture","plaintext","powerful","proper","rates","readers","relative","right","rogueamoeba","rouge","rsquo","sample","screenshot","sentby","settings","slider","sound","soundsource","source","speakers","sponsoring","srcset","sweeten","switch","thanks","title","today","trial","tweak","uploads","users","volume","width","wrote"]
	},{
		"title": "Markdown and code snippet management",
		"url": "/2020/04/29/markdown-and-code-snippet-management/",
		"tags": ["extension","markdown","nvalt","nvultra","scripting","search","snippet","tagging","writing"],
		"date": "Apr 29<span>th</span>, 2020",
		"ts": "1588183500",
		"summary": "I&rsquo;ve been trying out and letting go of code snippet managers since the early days of Code Collector Pro. I think I&rsquo;ve tried just about every solution out there (I think Quiver and SnippetsLab are excellent applications), but I always come back to keeping all of my snippets in a folder of Markdown files. Portability, Portability, Portability Code is always plain text, why would I want to put it into a database format to work with it? Here&rsquo;s the thing: this folder full of Markdown files has been ported to every snippet manager I&rsquo;ve tried, either by direct import or via a script I create to read them in and write them to the snippet app&rsquo;s format. As plain text, they&rsquo;re portable and highly flexible. Storing everything in Markdown has never bitten me. Storing everything in a snippet app&rsquo;s database format has bitten me almost every time. Rarely do snippet apps offer the ability to import from other snippet managers, and even when their storage format is simple JSON or XML, it still takes some scripting to get field names and formatting switched over. It&rsquo;s easier to have a simple format like Markdown that I can just write out to the new format when needed. Granted, most people won&rsquo;t switch apps as often as I have, but the fact that it&rsquo;s a pain in the butt to do so illustrates the benefit of keeping everything in as close to a universal format as possible. Which, for me, is always plain text. By the way, if you ever need to convert a bunch of Markdown files to Quiver&rsquo;s JSON format, let me know, I have just the script for you. The whole point of nvALT (and nvUltra, if you&rsquo;re lucky enough to be in the beta) is that you have all of your notes stored as plain text, easily searched and edited. It&rsquo;s always been as fast or faster for me to search my snippets in nvALT than to go through whatever snippet app I&rsquo;m trying at any given time. With a little tagging and consistent naming conventions I never can&rsquo;t find the snippet I&rsquo;m looking for. And with Markdown formatting I can include all the notes I need to right in with the code. In nvALT I relied entirely on tags and filenames to separate by language and category, and nvALT&rsquo;s tag search is, well, not great. I also kept all of my snippets in the same folder as my other notes, distinguishing them with a tag. In nvUltra (which I promise even those not in the beta will see soon) I have a dedicated notebook&hellip;",
		"keywords": ["engineering","languages","markup","snippet","software","source","action","collector","files","granted","launch","launchbar","markdown","names","portability","quiver","rarely","snibbets","snippets","snippetslab","stackexchange","storing","ultra","ability","access","adore","again","allows","almost","applications","arguments","assign","automatically","backtick","benefit","bitten","blocks","boolean","breeze","bunch","called","category","clipboard","close","combination","combinations","consistent","contain","content","contents","context","conventions","convert","create","created","creating","database","dedicated","demonstrated","describe","descriptive","developed","direct","distinguishing","easier","easily","edited","either","enough","entirely","everything","example","excellent","extension","extensions","extract","faster","feature","fences","field","filename","filenames","files","filtering","flexibility","flexible","folder","format","formatting","github","great","group","headers","hellip","highly","illustrates","import","including","indentation","interested","itself","keeping","language","letting","little","looking","lucky","macos","manager","managers","metadata","multiple","names","naming","needed","notebook","notes","nvalt","nvultra","offer","often","outside","overly","parser","parsing","people","perfectly","point","portable","ported","possible","promise","quickly","redirect","relied","repository","right","rsquo","script","scriptability","scripting","scripts","search","searched","searching","separate","separated","serve","signify","simple","since","snippet","snippets","solution","specific","storage","stored","straight","subfolders","superior","surrounding","switch","switched","synced","system","tagging","takes","terminal","think","through","together","tools","tried","trying","ttscoff","universal","useful","using","usually","whatever","whole","working","write","written"]
	},{
		"title": "The Sanebox and Partners Remote Work Bundle",
		"url": "/2020/04/28/the-sanebox-and-partners-remote-work-bundle/",
		"tags": ["bundle","deals","service"],
		"date": "Apr 28<span>th</span>, 2020",
		"ts": "1588092060",
		"summary": "Sanebox is one of my favorite services, keeping my email manageable and providing a bunch of handy tools. As always, I recommend checking it out (and here&rsquo;s my affiliate link), but this post isn&rsquo;t about Sanebox. It&rsquo;s about the huge bundle of savings they&rsquo;ve put together for a lot of folk&rsquo;s new normal of working from home. With services ranging from actiTime to TextExpander, there&rsquo;s a bevy of coupons ranging from deep discounts to totally free services. Asana, ClickUp, CloudApp, Milanote, XMind, and more. Even FocusAtWill, a service I love for generating \"work soundtracks\", has 50% off all plans. And, of course, SaneBox is offering $25 towards any subscription. For the full list of offers, links, and coupons, check out the The Remote Work Bundle",
		"keywords": ["sanebox","textexpander","bundle","software","asana","bundle","clickup","cloudapp","focusatwill","milanote","remote","sanebox","sanebox","textexpander","xmind","actitime","affiliate","bunch","bundle","check","checking","coupons","discounts","email","favorite","generating","handy","keeping","links","manageable","normal","offering","offers","plans","providing","ranging","recommend","rsquo","savings","service","services","soundtracks","subscription","together","tools","totally","towards","working"]
	},{
		"title": "MeisterTask, the tool you need to be using when working from home [Sponsor]",
		"url": "/2020/04/23/meistertask-the-tool-you-need-to-be-using-when-working-from-home/",
		"tags": ["collaboration","email","sponsor","tools"],
		"date": "Apr 23<span>rd</span>, 2020",
		"ts": "1587643200",
		"summary": "A big thanks to MeisterTask for sponsoring this week&rsquo;s blog post! I&rsquo;ve been working from home and using MeisterTask for a while now, and given that most people are in a similar situation at the moment — this post is dedicated to highlighting how MeisterTask can help you and your team work remotely effectively! For those of you new to MeisterTask, here&rsquo;s a short introduction to help get you acquainted: MeisterTask is a cloud-based online task management tool which gives you an overview of all your to-dos (tasks) by visualizing them on slick Kanban-style project boards. The boards let you create customizable workflows so you can easily see your tasks through from creation to completion. The best part about MeisterTask is that it&rsquo;s simple and easy to use. You&mdash;and your colleagues&mdash;can be signed up and onboarded in a matter of minutes. And all you need to get up and running is an internet connection. Individuals can use MeisterTask to boost their own productivity and get organized. Teams can use MeisterTask to set up a virtual, fully-customizable workspace. That&rsquo;s not all, MeisterTask integrates with a lot of other tools used for work such as: G Suite, Slack, Google Calendar, Microsoft Teams, GitHub, Zapier, Confluence, Bitbucket and more Now, working from home may be old-hat for some, but judging by the news circulating at the moment, it&rsquo;s clear that there are a lot of people suddenly in uncharted territory&hellip; working from home for the first time. So how can MeisterTask help? It&rsquo;s software that can help you manage your email, communicate, and hold meetings. MeisterTask helps you manage your work. MeisterTask helps you manage your work remotely with its features built for online collaboration. Here&rsquo;s a brief breakdown and description of just some of those features: Projects are your MeisterTask workspaces. They can be set up according to department (e.g. marketing), area of expertise (e.g. design), sprints and of course projects (website redo). You can invite as many members as you like to make collaboration seamless. Sections act as your virtual workflow. An example of a simple workflow is: To Do > In Progress > Done. MeisterTask offers unlimited sections so your workflow can be as simple or as complicated as you like. Tasks are your to-dos. Tasks can be added to sections in projects, assigned to the person responsible, and team members contributing to the task can collaborate in&hellip;",
		"keywords": ["management","meisterlabs","meistertask","workflow","attachments","brett","banner","bitbucket","built","business","calendar","confluence","dashboard","desktop","github","google","individuals","kanban","meistertask","microsoft","projects","sections","slack","suite","tasks","teams","working","zapier","acquainted","added","address","annual","applications","assigned","based","boards","boost","breakdown","brettterpstra","brief","built","business","check","circulating","class","clear","cloud","collaborate","collaborated","collaboration","colleagues","comes","comments","complicated","content","context","contributing","create","creation","customizable","dates","deadlines","dedicated","department","description","design","documents","easily","effective","effectively","email","emails","ensures","ensuring","everyone","example","expertise","feature","features","files","finding","first","fully","gives","happy","height","hellip","helps","highlighter","highlighting","https","image","important","instant","integrates","interested","internet","introduction","invite","judging","language","ldquo","loading","looking","management","manager","marketing","mdash","media","medium","meetings","meistertask","members","mentions","mindmeister","minutes","missed","mobile","nofollow","noscript","notifications","offers","onboarded","online","organized","original","overview","packed","pages","people","person","picture","pictures","plaintext","pricing","productivity","project","projects","rdquo","remotely","responsible","right","rouge","rsquo","running","seamless","section","sections","short","signed","similar","simple","situation","slick","software","source","sponsoring","sprints","srcset","standard","style","suddenly","tasks","territory","thanks","through","title","tools","tracking","transformed","uncharted","unlimited","updated","upgrade","uploads","using","version","virtual","visualizing","watching","website","while","width","workflow","workflows","working","workspace","workspaces"]
	},{
		"title": "Web Excursions for April 20, 2020",
		"url": "/2020/04/20/web-excursions-for-april-20-2020/",
		"tags": ["bookmarks","drafts","marked"],
		"date": "Apr 20<span>th</span>, 2020",
		"ts": "1587387600",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. I hope you weren&rsquo;t expecting a weed-themed roundup. Affinity Publisher I&rsquo;m a fan of all of the Affinity apps, so when it came time to buckle down and do the layout for a children&rsquo;s book I&rsquo;m working on, I decided to give Publisher a real look. I haven&rsquo;t used InDesign for years, but Publisher mirrors a lot of the concepts and it all came back quickly. With master pages, text styles, text box shapes, preflight check, built-in photo editing tools, and more, it&rsquo;s a top quality publishing app for $25 (regularly $50, 50% off right now). DaVinci Resolve 16 It&rsquo;s insane that this app is free (paid upgrade available). A complete powerhouse of video editing with color correction tools, audio editor and mixer, and a ton of powerful features. H/T Alexander Gräfe Andrew Johnson - Free Meditations I discovered Andrew Johnson while I was testing the early sleep apps available on iOS. He does a great job with body scans and relaxation meditations, and I love his voice. Right now he has 8 free recordings available as mp3s or streamed via SoundCloud. PSA: Yes you can join a Zoom meeting in the browser Even if you choose to use an alternative to Zoom, you&rsquo;re probably still going to have to go to other people&rsquo;s Zoom meetings. So avoid some of the security issues by joining them from your browser without installing the application. Open Marked Streaming Preview - Drafts Action Directory In case you missed it, Drafts for Mac now supports Marked 2&rsquo;s Streaming Preview feature, allowing live preview as you write in Drafts. There are some things I&rsquo;d like to improve about the whole shebang on Marked&rsquo;s side, but Drafts nailed it",
		"keywords": ["software","action","affinity","alexander","andrew","brett","cleanmymac","davinci","directory","drafts","indesign","johnson","marked","meditations","preview","publisher","resolve","rickenharp","right","soundcloud","streaming","absolute","actions","affinity","allowing","andrewjohnson","audio","available","avoid","blackmagicdesign","border","brettterpstra","brought","browser","buckle","built","check","children","choose","class","color","concepts","correction","davinciresolve","decided","discovered","display","editing","editor","excursions","expecting","feature","features","freedownloads","getdrafts","going","great","haven","height","hidden","holding","https","image","impactradius","improve","insane","installing","issues","joining","layout","loading","macpaw","master","media","meditations","meeting","meetings","mirrors","missed","mixer","nailed","noscript","original","pages","partnership","people","photo","picture","position","powerful","powerhouse","preflight","preview","products","publisher","publishing","quality","quickly","recordings","regularly","relaxation","right","roundup","rsquo","scans","security","serif","shapes","shebang","sleep","source","speed","srcset","status","streamed","style","styles","supports","techcrunch","testing","themed","title","tools","twitter","upgrade","uploads","video","visibility","voice","weren","while","whole","width","working","write","years"]
	},{
		"title": "Get your favorite macOS text-to-speech voices back",
		"url": "/2020/04/17/get-your-favorite-macos-text-to-speech-voices-back/",
		"tags": ["macos","voiceover"],
		"date": "Apr 17<span>th</span>, 2020",
		"ts": "1587146340",
		"summary": "This is one of those things that is likely common knowledge, but I stumbled across it accidentally today while doing some studying on web accessibility. A couple OS releases ago the list of installed voices available to the command changed, and some of my favorites disappeared. I&rsquo;d always been partial to Zarvox for script notifications. And then Zarvox was suddenly gone, and I just assumed Apple had killed off the majority of the novelty voices. It turns out, however, that it&rsquo;s really easy to restore them (and some ostensibly more useful voices). First, Open VoiceOver Utility (in /System/Applications/Utilities). Select Speech in the left sidebar and choose the Voices tab. Next to any options listed there is a dropdown for selecting the voice used by Voice Over. At the bottom of that dropdown, select Customize&hellip;. Check the boxes for all the voices you want to add, and when you confirm it will download and install them. Actual Voice Over users definitely already know this, but as an aside I&rsquo;ll point out that you can correct pronunciation in this pane as well.1 A cheeky aside. Oh, you.&nbsp;↩",
		"keywords": ["language","software","voice","apple","applications","banner","bring","check","correcting","customize","first","speech","system","utilities","utility","voice","voiceover","voices","zarvox","accessibility","accidentally","across","aside","assumed","available","backlink","bottom","boxes","brettterpstra","changed","cheeky","choose","class","command","common","confirm","couple","customize","definitely","disappeared","doing","download","dropdown","endnotes","favorites","figcaption","figure","fnref","footnote","footnotes","gifjif","height","hellip","highlight","highlighter","however","https","image","install","installed","killed","knowledge","language","likely","listed","lives","loading","media","noscript","noteref","notifications","novelty","options","original","ostensibly","partial","pickle","picture","plaintext","point","pronunciation","releases","restore","reversefootnote","rouge","rsquo","script","selecting","selection","sidebar","source","srcset","studying","stumbled","suddenly","title","today","turns","uploads","useful","users","voice","voices","while","width","zarvoxheader"]
	},{
		"title": "Finally! MeisterTask's Gantt Chart---Timeline---has arrived [Sponsor]",
		"url": "/2020/04/16/finally-meistertasks-gantt-chart-timeline-has-arrived-sponsor/",
		"tags": ["productivity","sponsor"],
		"date": "Apr 16<span>th</span>, 2020",
		"ts": "1587038400",
		"summary": "A big thanks to MeisterTask for sponsoring BrettTerpstra.com this week! I recently posted about their latest feature Agenda &mdash; a.k.a. \"one board to rule them all.\" This week is focused on the launch of their most requested feature of all time: Timeline, MeisterTask&rsquo;s very own version of a Gantt chart. If you&rsquo;ve never heard of MeisterTask before, here&rsquo;s a short description: MeisterTask is a Kanban-based task and project management tool that allows you to work productively in an all digital space. It enables you to create customized workflows on sleek, beautiful-looking Kanban boards, which can be populated with all your work in the form of individual tasks. This helps teams and individuals looking to up their productivity follow work&rsquo;s progress visually from start to finish. Plus it&rsquo;s easy to use! One of MeisterTask&rsquo;s USPs are its features built to help teams collaborate online. Given the situation that most companies find themselves in at the moment &mdash; working remotely &mdash; they provide key infrastructure to facilitate this in the most effective way. Teams can use MeisterTask to set up projects and organize and manage their work in a customizable environment that perfectly adapts to their needs, and all they really need to get started is five minutes and an internet connection. MeisterTask also comes readily integrated with other great tools such as: Slack, Google Calendar, GitHub, Zapier, G Suite, Confluence, Bitbucket and more. One of the key features for project management aficionados is a Gantt chart. The ability to visualize a task&rsquo;s duration, from start to completion, on a calendar for easier coordination. This adds a completely new dimension to how you view your project&rsquo;s progress on the whole. MeisterTask has integrated these core functionalities into their latest feature &mdash; Timeline. A few benefits that Timeline offers, aside from a project overview, are that: It gives an overview of your team&rsquo;s workload (Who&rsquo;s got too much on their plate? Where does work need to be reallocated/reassigned?) It displays a tasks duration (How long will it take to complete a task? How long until one task is finished before the next one can begin?) It highlights dependencies (Know which tasks need to be completed before the next task can begin and conversely, know exactly which task is blocking the next phase in your project) It gives you the ability monitor deadlines (Know&hellip;",
		"keywords": ["board","chart","gantt","kanban","management","project","schedule","agenda","bitbucket","brettterpstra","business","calendar","check","confluence","gantt","github","google","kanban","meistertask","slack","suite","takes","tasks","teams","timeline","where","zapier","ability","accurately","adapts","adjusted","aficionados","agile","ahead","allows","annual","anticipated","aside","available","based","beautiful","before","begin","benefits","blocking","board","boards","built","calendar","changes","changing","chart","checking","circumstances","coded","collaborate","color","comes","communication","companies","completed","completely","conception","conversely","coordination","create","customizable","customized","deadlines","definitely","dependencies","description","digital","dimension","directly","displays","doesn","dragged","dropped","easier","effective","enables","environment","everyone","extend","facilitates","feature","features","finish","finished","first","focused","forethought","freedom","functionalities","gives","giving","great","guesswork","heard","helps","highlights","individual","individuals","information","infrastructure","integrated","interactive","internet","involves","latest","launch","longer","looking","management","manager","mdash","minutes","monitor","necessary","needs","offers","online","organize","overview","package","packed","perfectly","phase","planning","plate","populated","posted","pricing","productively","productivity","project","projects","readily","reallocated","reassigned","recently","remotely","rsquo","short","simple","situation","sleek","space","sponsoring","stakeholders","started","stays","taking","tasks","teams","thanks","themselves","timeframes","timeline","timings","tools","transparency","using","version","visible","visualize","visualizing","visually","while","whole","workflows","working","workload","worth"]
	},{
		"title": "All Fish, all day",
		"url": "/2020/04/15/all-fish-all-day/",
		"tags": ["scripting","shell","shortcuts","terminal"],
		"date": "Apr 15<span>th</span>, 2020",
		"ts": "1586961360",
		"summary": "Since I last wrote about Fish (the Friendly Interactive SHell), I&rsquo;ve become a full-on convert. I actually stumble a bit when I use Bash now, with so many nice Fish features ingrained in my muscle memory. Did you know that Fish records command history per-directory and offers the appropriate completion based on your current working directory? It&rsquo;s an amazingly productive feature. I&rsquo;ve updated the GitHub repo that holds all of my Fish configurations and functions. The ones worth sharing publicly, anyway. \"Worth sharing\" is subjective, your need will depend on how much better at Fish you are than me. If you&rsquo;re getting started with Fish, it might be a good place to see some of my own exploration and learning. Over the last few months I haven&rsquo;t had to do a lot of further tweaking, but I&rsquo;ve made some changes worth keeping the repo up to date with. I improved all of the completion functions that work with and various Mac applications. They were great if the file you wanted to open was in the current folder, but there was no ability to navigate to subfolders (and still have completion). My new solution isn&rsquo;t perfect, but it&rsquo;s much improved. Now if I use my Xcode shortcut in Marked&rsquo;s code directory, will show me completions starting with but also make all directories available to tab into. It still fails if you try to prefix an absolute path to the argument, but for the current directory and subdirectories, it works great. And that&rsquo;s 99% of how I use them, so problem solved for me. I added new bash ports and completions for some of my own utilities, including an improved tm tmux wrapper, better completion, and ports of (a doing shortcut) and my logr script. The latter works great as a shortcut for with simplified syntax, but the Fish version lacks the ability to echo verbosely to STDOUT, and is missing the Bash functionality where a \"debug\" level message was able to automatically determine the path to the calling function and include a pretty func in the log. But it serves its purpose well. That one&rsquo;s not a complex script, and I may get around to rewriting it in Fish and restoring the missing functionality. : New: encode a given svg file as base64 and output css background-image property to clipboard : New: Get a dad joke from icanhazdadjoke.com : New: Test if current directory is bookmarked (works with plugin) : Improved: Automatically add new and remove deleted files from the git&hellip;",
		"keywords": ["command","friendly","interactive","languages","scripting","shell","shells","automatically","friendly","github","improved","interactive","marked","shell","stdout","since","terminal","worth","xcode","ability","absolute","added","again","amazingly","anyway","applications","argument","automatic","automatically","available","background","based","beats","bookmarked","calling","changes","check","clipboard","command","completions","complex","configurations","convert","cycling","debug","deleted","depend","directories","directory","doing","easily","encode","exploration","exploring","fails","feature","features","files","folder","function","functionality","functions","fuzzy","getting","giving","great","haven","highlights","highly","history","holds","icanhazdadjoke","image","improved","including","index","ingrained","keeping","lacks","latter","learning","level","matching","memory","message","missing","muscle","navigate","needing","niceties","offers","output","plugin","ports","prefix","problem","productive","property","publicly","recommend","regularly","remove","restores","restoring","rewriting","right","rsquo","script","scripting","serves","sharing","shell","shortcut","simplified","solution","solved","started","starting","stumble","subdirectories","subfolders","subjective","suggestions","syntax","tweaking","updated","utilities","various","verbosely","version","wanted","where","working","works","worth","wrapper","wrote"]
	},{
		"title": "Sponsor: Boost your productivity with TextExpander",
		"url": "/2020/04/09/sponsor-boost-your-productivity-with-textexpander/",
		"tags": ["productivity","snippet","sponsor","textexpander"],
		"date": "Apr 9<span>th</span>, 2020",
		"ts": "1586430000",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! I&rsquo;m a long-time, die-hard user of TextExpander, and am always honored to have their support. Save time typing and boost your productivity with TextExpander. TextExpander turns long snippets of text (or even images) into short snippets that expand when you type. If you type something more than three times, make it a snippet and let TextExpander type it for you. Make snippets on one computer and use them on all of your devices so you&rsquo;re more productive everywhere you type. Smile (TextExpander&rsquo;s developer) hosts interesting webinars every month. Sign up for the TextExpander beginner, advanced, and teams webinars to learn more about boosting your productivity. You can find all of the webinars at textexpander.com/webinar. TextExpander is available for macOS, Windows, Chrome, iPhone and iPad. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["productivity","smile","software","textexpander","brettterpstra","chrome","smile","textexpander","thanks","visit","windows","advanced","available","beginner","boost","boosting","computer","developer","devices","everywhere","expand","first","honored","hosts","iphone","images","interesting","learn","macos","productive","productivity","readers","rsquo","short","snippet","snippets","sponsoring","support","teams","textexpander","times","turns","typing","webinar","webinars"]
	},{
		"title": "Web Excursions for April 08, 2020: Quarantine Issue #1",
		"url": "/2020/04/08/web-excursions-for-april-08-2020-quarantine-issue-number-2/",
		"tags": ["bookmarks"],
		"date": "Apr 8<span>th</span>, 2020",
		"ts": "1586351760",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. The Creativity of ADHD ADHD folks might have the creative edge on their peers. Via Frank Petrie. unmix Remove vocals, drums, bass and synth with state of the art AI. Built for DJing, music production and karaoke alike. I tested this on some punk rock tracks and it did an amazingly good job of splitting vocals out from accompaniment. I Miss the Office I don&rsquo;t miss the office myself, but this is a clever, web-based background noise generator for those who need the drone of offfice sounds to feel like they&rsquo;re working. I find it humorous and well-implemented, but you might actually find it useful. Jitsi Meet - Instant Free Videoconferencing A secure, open-source alternative to Zoom. Because there are so many things wrong with Zoom. We tested this with an interstate family call and it was smooth sailing for everyone. I believe it&rsquo;s a solid option. PlayingCards.io Virtual Tabletop Play tabletop games online with friends, including a Cards Against Humanity clone called Remote Insensitivity. Game night doesn&rsquo;t have to die with social distancing",
		"keywords": ["creativity","deficit","disorder","hyperactivity","jitsi","videotelephony","against","because","built","cards","check","creativity","djing","frank","humanity","insensitivity","instant","jitsi","office","petrie","playingcards","remote","remove","setapp","stuff","tabletop","videoconferencing","virtual","access","accompaniment","alike","amazingly","background","based","believe","brought","called","clever","clone","creative","distancing","doesn","drone","drums","everyone","excursions","family","folks","friends","games","generator","humorous","hundreds","implemented","including","interstate","karaoke","monthly","music","myself","night","noise","offfice","office","online","partnership","peers","production","rsquo","sailing","secure","shelter","smooth","social","solid","sounds","source","splitting","subscription","synth","tabletop","tested","today","tracks","unmix","useful","vocals","while","working","wrong"]
	},{
		"title": "[Sponsor] MeisterTask's one board to rule them all: Agenda",
		"url": "/2020/04/02/meistertasks-one-board-to-rule-them-all-agenda/",
		"tags": ["sponsor"],
		"date": "Apr 2<span>nd</span>, 2020",
		"ts": "1585828800",
		"summary": "Thanks to MeisterTask for sponsoring BrettTerpstra.com this week! I&rsquo;ve been using MeisterTask for team project management for quite a while now, and I&rsquo;m excited about the new Agenda feature! If you haven’t heard about or come across MeisterTask before, here’s a little intro: MeisterTask is a Kanban-based task manager that’s all about changing the way people work in the digital space. It enables you to turn all your todos into tasks and create customized workflows on sleek Kanban boards that you can use to visualize your work&rsquo;s progress from start to finish. It’s intuitive and easy to use (plus it looks really great!). One of MeisterTask’s core selling points is its features built to help teams collaborate online &mdash; a huge topic at the moment, with everyone scrambling for software to help them work remotely. Teams can use MeisterTask to set up projects and organize and manage their work in a customizable environment that perfectly adapts to their needs. All they really need to get started is an internet connection. MeisterTask is also integrated with other great tools including Slack, Google Calendar, GitHub, Zapier, G Suite, Confluence, Bitbucket and more. If you’ve worked with other task managers like Trello, Asana and Wrike before, then you’ll know that one of the biggest problems users face is maintaining an overview when working in multiple projects at the same time. It’s easy to drop the ball when you’re being pulled in a hundred different directions. That’s where Agenda comes in. Agenda gives you the power to create the overview you’ve been craving. Agenda is accessible right from the MeisterTask dashboard. It looks a lot like a Kanban board, with sections that you can order, rename, and customize as you wish. But here’s the best part — you can \"pin\" tasks from any project to any section in your Agenda. That means all your tasks can now be housed in one centralized place, just for you. You can organize your Agenda sections in a way that best suits your particular work-style, but here are a couple of ideas. Organize your sections by: Priority (Low, Medium, High) Day of the workweek (know which tasks you’re going to work that day) Due Date By category (the type of work that needs to be done, blog post, bug fix) By what still needs to be done The Agenda customization options are endless. This is the feature you never knew how much you wanted until you got it. It’s available on the MeisterTask Pro plan for $8.25&hellip;",
		"keywords": ["agile","board","development","kanban","management","project","software","trello","agenda","asana","brett","bitbucket","brettterpstra","calendar","check","confluence","fupgrade","github","google","kanban","mtdashboardagenda","medium","meistertask","organize","priority","slack","suite","teams","thanks","trello","wrike","zapier","accessible","across","adapts","agenda","annual","available","banner","based","basic","before","biggest","board","boards","brettterpstra","built","category","centralized","changing","checking","class","collaborate","comes","content","couple","craving","create","customizable","customization","customize","customized","dashboard","definitely","different","digital","directions","doesn","enables","endless","environment","everyone","excited","feature","features","finish","first","gives","going","great","haven","heard","height","highlighter","housed","https","hundred","ideas","image","including","information","integrated","internet","intro","intuitive","language","ldquo","little","loading","looking","looks","maintaining","management","manager","managers","mdash","media","medium","meistertask","mindmeister","multiple","needs","nofollow","noscript","offers","online","options","organize","original","overview","packed","pages","particular","people","perfectly","picture","plaintext","points","pricing","problems","project","projects","pulled","rdquo","remotely","rename","return","right","rouge","rsquo","scrambling","section","sections","selling","signup","simple","sleek","software","source","space","sponsoring","srcset","started","style","suits","tasks","teams","title","todos","tools","topic","uploads","users","using","visualize","wanted","where","while","width","worked","workflows","working","workweek","worth"]
	},{
		"title": "Your April nvUltra update",
		"url": "/2020/04/01/your-april-nvultra-update/",
		"tags": ["nvultra","search"],
		"date": "Apr 1<span>st</span>, 2020",
		"ts": "1585743600",
		"summary": "I had been doing a decent job of posting progress updates for nvUltra, but fell out of the habit for a bit there. So here&rsquo;s the latest news. The beta continues as we solve a few final bugs. Some of them are \"mysterious,\" as in we&rsquo;re unable to replicate what some testers are experiencing, so those might take a little longer to sort out and make the official rollout as smooth as possible. Our biggest concern is data loss, which is not a problem, but we still want to avoid as many issues as possible. We hit a feature-complete point in the development for 1.0. Then we added one new feature, saved searches, which I&rsquo;m really happy about. The implementation uses the dropdown from the magnifying glass in the search/create field, and you can save searches directly from there and edit/rename them in Preferences. They get assigned automatic shortcut keys, and you can sort the order of searches to change the order of keyboard assignments. It&rsquo;s working quite well. The beta is absolutely full at this point, but we&rsquo;re not far from release. Please continue to be patient, I promise it&rsquo;s coming! Addendum: For those who don&rsquo;t know, Fletcher is a doctor working at a hospital, so a lot of our schedule is subject to the current pandemic and the strain on health care professionals&rsquo; workloads. Best of health to everyone",
		"keywords": ["markdown","nvalt","addendum","fletcher","preferences","added","assigned","assignments","automatic","avoid","biggest","change","coming","concern","continue","continues","create","decent","development","directly","doctor","doing","dropdown","everyone","experiencing","feature","field","glass","habit","happy","health","hospital","implementation","issues","keyboard","latest","little","longer","magnifying","mysterious","nvultra","official","pandemic","patient","point","possible","posting","problem","professionals","promise","release","rename","replicate","rollout","rsquo","saved","schedule","search","searches","shortcut","smooth","solve","strain","testers","unable","updates","working","workloads"]
	},{
		"title": "Six New Marked 2 Custom Styles",
		"url": "/2020/03/30/six-new-marked-2-custom-styles/",
		"tags": ["design","marked","typography"],
		"date": "Mar 30<span>th</span>, 2020",
		"ts": "1585580400",
		"summary": "Since posting about the new Marked Custom Style Gallery, I&rsquo;ve added six new preview styles for Marked 2 that I consider worth a mention: Emma, Mouse, Hardstock, Monophile, Symphonic, and FadingFast. Click any of those links to preview the styles live in your browser. These are developed with thoughtful font pairings and careful typographic rhythms1. They all include regular and inverted (high contrast) variations. Generated using the cool typography.js.&nbsp;↩",
		"keywords": ["custom","rhythm","style","vertical","click","custom","fadingfast","gallery","generated","hardstock","marked","monophile","mouse","since","style","symphonic","visit","added","backlink","banner","brettterpstra","browser","button","careful","class","consider","contrast","custom","developed","endnotes","fnref","footnote","footnotes","gallery","github","height","https","image","instantly","inverted","kyleamathews","ldquo","links","loading","marked","markedcustomstyles","media","mention","newstyles","noscript","noteref","original","pairings","picture","posting","preview","rdquo","regular","reversefootnote","rhythms","rsquo","source","srcset","style","styles","thoughtful","title","typographic","typography","uploads","using","variations","width","worth"]
	},{
		"title": "Undo anything with Git and Tower",
		"url": "/2020/03/26/undo-anything-with-git-and-tower/",
		"tags": ["sponsor"],
		"date": "Mar 26<span>th</span>, 2020",
		"ts": "1585220400",
		"summary": "Thanks to Tower for sponsoring BrettTerpstra.com again this week! As I&rsquo;ve said before, I&rsquo;m a huge fan of Tower for managing my git repositories and workflows, and the latest features are welcome indeed! Even the best developers make mistakes. And if you are using Git, you know that undoing mistakes often requires a series of complex commands on the command line. With the release of Tower 4, the popular Git client takes away this complexity by allowing you to use the well-known keyboard shortcut \"CMD+Z\" in almost any situation. Deleting branches and files, staging changes, rebasing and merging branches, publishing a branch on a remote &mdash; all these scenarios can now be undone with a single shortcut. This will not only speed up your workflow, it will give you peace of mind. Mistakes happen. Now they can be fixed just as quickly. Undo is just one of the many awesome new features that the Tower team has shipped since version 3 came out. From Dark Mode to GPG support, Image Diffing, and User Profiles, Tower is becoming more powerful with each new release. And if you are a student or teacher, you even get Tower Pro for free",
		"keywords": ["rebasing","workflow","brettterpstra","deleting","diffing","image","learn","mistakes","profiles","thanks","tower","again","allowing","almost","awesome","becoming","before","branch","branches","changes","client","command","commands","complex","complexity","developers","features","files","first","fixed","happen","indeed","keyboard","latest","managing","mdash","merging","mistakes","often","peace","popular","powerful","publishing","quickly","rebasing","release","remote","repositories","requires","rsquo","scenarios","series","shipped","shortcut","since","single","situation","speed","sponsoring","staging","student","support","takes","teacher","undoing","undone","using","version","welcome","workflow","workflows"]
	},{
		"title": "Working from home can be magical",
		"url": "/2020/03/25/working-from-home-can-be-magical/",
		"tags": ["mentalhealth","office","personal","productivity","tricks","video"],
		"date": "Mar 25<span>th</span>, 2020",
		"ts": "1585132680",
		"summary": "We here at BrettTerpstra.com take COVID-19 very seriously. We&rsquo;ve all transitioned to working from home and maintaining social distance, and to providing you with all of our reading materials online for your protection. So, business as usual. Seriously, though, how are you holding up? This Coronavirus thing is a big change, huh? Not so much for me, but I feel for all of the people who are newly working from home. It can be quite a transition. There have been endless articles on how to work from home. And so many of them are wrong in one way or another, yet each proclaims itself to be true for you and your productivity. The fact is that working from home means a lot of different things, and every individual has to find their own rhythm. And for some of us, it&rsquo;s downright magical compared to working in an office. Working from home means more freedom. For a lot of us it means a more flexible schedule, which comes with a lack of structure that can throw a lot of people off. I&rsquo;ve been doing it for well over a decade now, but I would never claim to have a system figured out that would work for anyone else. But I&rsquo;ll share some general points that might help, especially if you, like me, fall outside of the neurotypical spectrum. Depending on your available space, it&rsquo;s not always easy to do, but for me, having an office makes a big difference in my ability to recognize \"work time\" and keep it separate from \"home time.\" For me this is a separate room, but it could be anywhere you can set up a desk or some equivalent. A work space. I use a MacBook Pro as my primary machine, and in my office there&rsquo;s a dock that hooks it into an external display and my Ultimate Hacking Keyboard. That&rsquo;s my work setup. However, it&rsquo;s also my play setup. It&rsquo;s where I write music, it&rsquo;s where I work on side projects, it&rsquo;s where I get away from the rest of the house when I just want to listen to tunes and surf the internet. I&rsquo;m not good at only working in my office. And to be honest, that&rsquo;s always worked out for me. Given no externally-imposed structure, I can work on what makes sense at any given time. If my brain would rather play guitar than work on a freelance project, I can let it. For a while, anyway. If I&rsquo;m truly avoiding something, and the pressure of a deadline isn&rsquo;t getting me to focus, then it often takes other tricks to get there. One of those tricks is \"transitioning.\" With my&hellip;",
		"keywords": ["working","again","anyone","brettterpstra","covid","coronavirus","deadline","depending","enough","hacking","however","keyboard","macbook","maybe","often","patreon","seriously","twitter","ultimate","working","ability","admittedly","advice","agrees","allow","another","answer","anyone","anyway","anywhere","arbitrary","articles","aside","available","avoid","avoiding","bearing","because","benefit","block","blocks","borderline","bounce","brain","brainstorming","break","building","business","catch","chance","change","check","checking","chronological","claim","classes","clears","coffee","comes","comments","compared","compassion","compendium","concept","constantly","contact","couple","create","deadline","dealing","decade","decide","difference","different","dinner","display","distance","distractions","doing","downright","endless","energetic","enhancer","enjoy","especially","evening","everyone","examining","exercise","external","externally","extroverts","favor","favorite","feeling","figured","finished","fires","flexible","focus","focused","folks","found","freedom","freelance","friend","geared","general","generally","getting","gives","goals","going","great","groove","group","guaranteed","guilt","guilty","guitar","happens","happy","haven","having","helps","holding","honest","hooks","hours","house","hyperfocused","imagine","important","imposed","individual","interest","internet","interviews","introvert","isolation","itself","learned","leave","likely","limit","listen","little","loved","machine","magical","maintaining","makes","marination","materials","mentally","mentioning","missing","mostly","music","myself","needs","neurotypical","newly","obsessive","offer","office","often","online","opposite","others","outside","partner","people","person","pertains","planned","planning","points","position","possible","preparing","pressure","primary","problem","proclaims","procrastination","productive","productivity","project","projects","protection","provides","providing","putting","questions","rarely","rather","reading","ready","recognize","recreate"]
	},{
		"title": "Web Excursions for March 24, 2020",
		"url": "/2020/03/24/web-excursions-for-march-24-2020/",
		"tags": ["bookmarks","mentalhealth"],
		"date": "Mar 24<span>th</span>, 2020",
		"ts": "1585060980",
		"summary": "Some things to play with when you&rsquo;re not working (from home). Web excursions brought to you in partnership with Backblaze. Back up everything. Slideas Markdown Presentation Editor for Mac Some serious competition for Deckset here. A Markdown-based slide deck generator and presenter with support for a wide array of layouts, media types, and even full chart/mind map syntax. The built-in editor offers syntax highlighting and autocompletion. I wish some of the styles had better spacing, but you can also customize your own themes with CSS, which I might take a crack at. DOTKey on the App Store DOTKey is an exciting new way to type. Unlike traditional keyboards with their \"one size fits&hellip; nobody\" approach, DOTKey offers a user-friendly experience that adjusts to your hand instead of forcing you to adjust to it. With DOTKey you can type quickly and accurately&ndash;even with one hand&ndash;without needing to look at the keyboard as you type. Mailbrew - Beautiful Automated Newsletters A handy service to create automated newsletters with content from your favorite sites, including YouTube, Reddit, Twitter, Google News, and more. ShortcutDetective Irradiated Software makes a bunch of great tools, including Cinch, Tuck, and SizeUp for macOS window sizing and control, but I&rsquo;m linking this page specifically for the free tool \"ShortcutDetective,\" which listens for globally-assigned shortcuts and tells you what app is intercepting it. Good for debugging those shortcut assignments. The ADHD Essentials Podcast with Brendan Mahan, M.Ed., M.S. If you&rsquo;re on the lookout for ADHD resources, the ADHD Essentials podcast is definitely worth a listen. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["deficit","disorder","hyperactivity","keyboard","learning","shortcut","automated","backblaze","beautiful","brendan","check","cinch","dotkey","deckset","editor","essentials","google","irradiated","mahan","mailbrew","markdown","newsletters","podcast","presentation","reddit","shortcutdetective","sizeup","slideas","software","store","twitter","unlike","youtube","accurately","adjust","adjusts","affordably","approach","array","assigned","assignments","autocompletion","automated","backs","based","brought","built","bunch","chart","cloud","competition","computer","content","control","crack","create","customize","debugging","definitely","editor","entire","everything","exciting","excursions","experience","favorite","forcing","friendly","generator","globally","great","handy","hellip","highlighting","including","intercepting","keyboard","keyboards","layouts","linking","listen","listens","lookout","macos","makes","media","ndash","needing","newsletters","nobody","offers","partnership","podcast","presenter","quickly","reliably","resources","rsquo","securely","serious","service","shortcut","shortcuts","sites","sizing","slide","spacing","specifically","styles","support","syntax","tells","themes","today","tools","traditional","types","window","working","worth"]
	},{
		"title": "Sponsor: Productivity explosion with The Archive",
		"url": "/2020/03/19/sponsor-productivity-explosion-with-the-archive/",
		"tags": ["sponsor","support","tools"],
		"date": "Mar 19<span>th</span>, 2020",
		"ts": "1584615600",
		"summary": "Thanks to The Archive for sponsoring BrettTerpstra.com this week! I know that&mdash;with the impending release of nvUltra&mdash;it seems like touting the competition, but The Archive is a great app and their support of BrettTerpstra.com means a lot to me. Thank you! The Archive&rsquo;s slick and fast interface makes rapid note-taking a breeze, and its native support for Markdown will show your thoughts in colorful plain text glory. You are always in charge: with our Software Agnostic Design philosophy, we make sure that the app is about your content, and you can do with it whatever you want, whenever you want. We value your freedom very much ❤️. Use other apps if you like, sync via the cloud, or utilize some of Brett&rsquo;s scripts to manipulate the files. No boxing-in, no proprietary features. Use plain text to store notes, because it&rsquo;s the one format with the longest lifetime, ever. Any other choice would compromise your notes. The Archive will keep you prepared for an uncertain future. The tool is not important, your ideas are. By design, The Archive does not box you in, ever. It&rsquo;s your content, your insights, your ideas. You shall be the true owner of your notes at any time. You are the owner. For us, the importance of your ideas also means you should own the tool. That&rsquo;s why we sell lifetime access to a long-time supported app, not subscriptions. Allow any workflow. Do what you want. You can customize your workflows with your own scripts any time, or just stick to the core for totally unopinionated note-taking. Search, write, collect, create insights. The Archive is there to aid you with that. Facilitate knowledge networks. With the flexibility and power of plain text workflows at its core, The Archive enables you to create between notes and organize knowledge using : plain text conventions that are well-supported by a lot of tools, including Marked 2! So there&rsquo;s no forcing you into any file naming schemes, no directory management shenanigans, no proprietary file formats, no forced cloud synchronization, no locked-away database, no subscription pricing &ndash; The Archive will accompany you and your insights in a beautiful writing environment. By the way, The Archive works extremely well as a tool to implement the Zettelkasten Method: a method to facilitate creating more and more insights through smart note-taking. It&rsquo;s backed by a community of genuinely helpful and interesting folks where we help&hellip;",
		"keywords": ["markdown","taking","agnostic","allow","archive","brett","brettterpstra","check","design","direct","links","markdown","marked","method","search","software","thank","thanks","zettelkasten","access","accompany","alfred","anniversary","archive","backed","beautiful","because","between","boxing","breeze","brettterpstra","built","celebrate","charge","choice","class","cloud","collect","colorful","community","competition","compromise","content","conventions","create","creating","creative","customize","database","design","directory","discussion","enables","environment","features","files","flexibility","focused","folks","forced","forcing","format","formats","forum","freedom","genuinely","glory","great","hashtags","height","helpful","highlighter","https","ideas","image","impending","importance","important","including","insights","interesting","interface","keyboard","knowledge","language","lifetime","loading","locked","longest","macros","maestro","makes","management","manipulate","mdash","media","method","modern","naming","native","ndash","networks","nofollow","noscript","notes","nvultra","obscure","organize","original","owner","philosophy","picture","plaintext","prepared","pricing","principles","proprietary","rapid","release","roadmap","rouge","rsquo","schemes","scripts","seems","shall","shenanigans","simple","slick","smart","source","sponsoring","srcset","stick","store","strong","struggle","subscription","subscriptions","support","supported","synchronization","taking","tells","thoughts","through","title","today","tools","totally","touting","transparency","uncertain","unopinionated","uploads","using","utilize","value","whatever","whenever","where","width","workers","workflow","workflows","works","write","writing","zettelkasten"]
	},{
		"title": "Judging the value of automation",
		"url": "/2020/03/16/judging-the-value-of-automation/",
		"tags": ["automation","automator"],
		"date": "Mar 16<span>th</span>, 2020",
		"ts": "1584377460",
		"summary": "I automate everything I can. I enjoy the process of building automations in myriad contexts, using myriad tools. And I frequently have to assess whether I&rsquo;ve spent more time automating something than I&rsquo;m actually going to save using the automation. I often think about the benefits of automation in the context of time savings. It makes things more efficient, removes drudgery. But I&rsquo;ve realized over time that the real benefit of automation is avoiding mistakes. When I automate something (anything), I&rsquo;m defining the steps that need to be included to complete the task. I&rsquo;m no longer relying on my memory to ensure that every step is complete or the specific ways in which a step should be completed. This is especially useful if it&rsquo;s something I don&rsquo;t do very often, which means that my normal calculation for \"was it worth automating\" is actually moot: if it helps me do the exact same thing one time a year later, that&rsquo;s often worth as much as any amount of total time saved in my life. My automation tools run the gamut, from snippets in TextExpander that make sure I&rsquo;ve conveyed all of the right information to an email recipient, to build scripts I developed for a coding project, to bedtime home automation sequences I built using Homekit. All of these prevent missed steps and undesired results. So from now on, instead of saying \"this automation saves me one minute every time I do this four-minute task,\" I&rsquo;m going to try to additionally look at it from the perspective of how much pain it saved me had the task been done incorrectly, and how much time I would have had to spend re-learning a process after it wasn&rsquo;t fresh in memory anymore. Those aspects add value to any automation and shouldn&rsquo;t be discounted. And it will help me sleep better at night, knowing I don&rsquo;t waste as much time as I think I do",
		"keywords": ["automation","textexpander","homekit","textexpander","additionally","amount","anymore","aspects","assess","automate","automating","automation","automations","avoiding","bedtime","benefit","benefits","build","building","built","calculation","coding","completed","context","contexts","conveyed","defining","developed","discounted","drudgery","efficient","email","enjoy","especially","everything","exact","fresh","gamut","going","helps","included","incorrectly","information","knowing","later","learning","longer","makes","memory","minute","missed","mistakes","myriad","night","normal","often","perspective","prevent","process","project","realized","recipient","relying","removes","results","right","rsquo","saved","saves","savings","saying","scripts","sequences","shouldn","sleep","snippets","specific","spend","spent","steps","think","tools","undesired","useful","using","value","waste","worth"]
	},{
		"title": "Sponsor: PDFpen for Mac, iPad, and iPhone",
		"url": "/2020/03/12/sponsor-pdfpen-for-mac-ipad-and-iphone/",
		"tags": ["macos","sponsor"],
		"date": "Mar 12<span>th</span>, 2020",
		"ts": "1584014400",
		"summary": "Thanks to PDFpen for supporting BrettTerpstra.com again this week! PDFpen and PDFpenPro are your ultimate PDF viewing and editing apps for the Mac. You can add headers, footers. You can add watermarks. You can even OCR documents. With PDFpen, you can edit and search text in documents you scan. Combine multiple documents into a single PDF, or split a PDF into multiple documents. Save elements you commonly use, like graphics or your signature, in PDFpen&rsquo;s library. It also includes a precision edit tool, and version 11.2 is available now with table cell content editing. PDFpen for Mac supports macOS Catalina, and PDFpen for iPad & iPhone is iOS 13-ready",
		"keywords": ["pdfpen","smile","software","brettterpstra","catalina","learn","pdfpen","pdfpenpro","thanks","again","available","commonly","content","documents","editing","elements","footers","graphics","headers","iphone","includes","library","macos","multiple","pdfpen","precision","ready","rsquo","search","signature","single","smilesoftware","split","supporting","supports","table","ultimate","version","viewing","watermarks"]
	},{
		"title": "NiftyMenu 1.0",
		"url": "/2020/03/11/niftymenu-1-dot-0/",
		"tags": ["keyboard","macos","niftymenu","shortcuts","webdesign"],
		"date": "Mar 11<span>th</span>, 2020",
		"ts": "1583945580",
		"summary": "As part of my Marked 2 documentation update over the weekend, I ended up putting some more time into my (admittedly insane) NiftyMenu project. This project made me look crazy when I first posted it last year. This update is not going to help. I will have to shoot over 180 screenshots before I break even on time invested&hellip; but it&rsquo;s really fun to play with. If you missed it, NiftyMenu is a tool that perfectly recreates any Mac application&rsquo;s menu bar as an HTML playground, perfect for taking screenshots. It allows you to lock a menu selection in position and add callouts, ready for perfect screenshots. If right now you&rsquo;re thinking \"that kinda makes sense, but a brief screencast sure would help, and probably not make you look any more insane,\" you&rsquo;re in luck&hellip; The first big change &mdash; and the impetus for this update &mdash; is that keyboard shortcuts are now shown in the menu items. This was bugging me as it was the one piece that kept the menus from being nearly perfect replications. Now they&rsquo;re included, and if you option-click directly on a keyboard shortcut in a menu item, a special callout is added, highlighting the shortcut. The keyboard shortcuts mean that the script takes significantly longer to run, as it goes back through after the fact and queries each menu item for its shortcut attributes. This is quite a hack1, but it works. It&rsquo;s only an extra 60 seconds or so, and you can switch over to Tweetbot while it runs. The second big deal is that screenshot capability is now built in. With the caveat that this only works in Chrome, you can now select the target menu item, add any desired callouts, then just hit \"Shift-S\" to capture a screenshot. The screenshot will automatically crop around the selected menu item and any open submenus. If it looks good, click the save button and it&rsquo;s instantly saved to Downloads, automatically named for the menu path it contains. I also revamped the JavaScript API. I refactored all of the JS as ES6 modules and made the public API chainable, so you can run something like: That will set up appearance options, then find the first instance of a \"save\" menu that has a parent item of \"file\" (i.e. File->Save), select it and add an arrow, and take a screenshot. I want this to lead to full automation of menu screenshots, but I keep running into issues. Namely, the new built-in screenshot capability only functions properly in Chrome, but&hellip;",
		"keywords": ["applescript","interface","keyboard","screenshot","shortcut","software","techniques","&#39;circle&#39;","&#39;file","&#39;https","anyway","applescript","chrome","downloads","events","javascript","keyboard","marked","namely","niftyapi","niftymenu","screenshots","shift","shortcuts","system","tweetbot","video","youtube","added","admittedly","advantage","allows","appearance","arrow","arrowstyle","attributes","automatically","automation","backlink","before","bgimage","bottom","break","brettterpstra","brief","bugging","built","button","callout","callouts","capabilities","capability","capture","caveat","chainable","change","check","class","click","colors","config","container","contains","crazy","darkmode","desired","directly","ended","endnotes","extra","figure","figuring","first","fnref","footnote","footnotes","frustrating","functions","github","going","height","hellip","highlight","highlighter","highlighting","hours","https","image","impetus","included","insane","instance","instantly","invested","issues","items","jsapi","keyboard","kinda","language","ldquo","leave","loading","longer","looks","mmrke","madness","makes","manually","mdash","media","menus","missed","modules","named","nearly","niftyapi","niftymenu","niftymenuheader","noscript","noteref","options","original","padding","parent","parsed","perfectly","picture","piece","plaintext","playground","point","position","posted","project","properly","public","putting","queries","rdquo","ready","reasons","recreates","refactored","replications","requiring","revamped","reversefootnote","right","rouge","rsquo","running","save&#39;","saved","screencast","screenshot","screenshots","script","second","seconds","selected","selection","sense","sequences","shoot","shortcut","shortcuts","shown","significantly","source","special","spent","srcset","style","submenus","sundry","switch","takes","taking","target","thinking","through","title","trick","trouble","ttscoff","uploads","using","various","version","video","videoid","wallpaper","wasting","watch","weekend","while","width","works","write","writing","youtube"]
	},{
		"title": "New Marked video: Finding the Answers",
		"url": "/2020/03/10/new-marked-video-finding-the-answers/",
		"tags": ["markdown","marked","video"],
		"date": "Mar 10<span>th</span>, 2020",
		"ts": "1583868060",
		"summary": "I spent some time this weekend updating the Marked 2 documentation. In addition to the content editing, I also ended up reworking some of the tools I use to build the documentation, ranging from automated screenshots to the help builder system that turns a folder full of Markdown files into the Marked 2 documentation. As a result of the help update and several fixes, there&rsquo;s a new release out on all channels right now. I also parlayed my own satisfaction with the documentation project into a new tutorial video. I could make videos about every feature (and hopefully eventually I&rsquo;ll cover most of them), but if I were going to show users one thing, it would be a tour of the documentation and the ability to find all the answers it contains. So that&rsquo;s the next video: I&rsquo;ll keep making more as I have time, but it will be time to start doing marketing for nvUltra soon",
		"keywords": ["computing","custom","gallery","markdown","marked","style","ability","answers","automated","build","builder","channels","contains","content","cover","doing","editing","ended","eventually","feature","files","fixes","folder","going","hopefully","making","marketing","mentioned","nvultra","parlayed","project","quick","ranging","release","reworking","right","rsquo","satisfaction","screenshots","several","spent","system","tools","turns","tutorial","updating","users","video","videos","weekend"]
	},{
		"title": "Sponsor: A Fine Start, a new tab page you'll actually use",
		"url": "/2020/03/05/sponsor-a-fine-start-a-new-tab-page-youll-actually-use/",
		"tags": ["browser","sponsor"],
		"date": "Mar 5<span>th</span>, 2020",
		"ts": "1583409600",
		"summary": "Thanks to A Fine Start for sponsoring BrettTerpstra.com this week! A Fine Start is a browser extension that replaces your new tab page with a minimal list of links that you can group and sort however you like. Get one-click access to your most visited websites and apps every time you open a new tab. If you have ever thought of a blank new tab as a resting place away from the chaos of the web, then you will love A Fine Start’s minimal and chill aesthetic. A Fine Start saves your links directly in your browser. You can export/import them into A Fine Start on other browsers and devices. And all of that functionality is free forever. If you want the convenience of automatic syncing between different browsers and devices, you can get a Premium account for just $5 a month, no password required. As a disabled developer who relies heavily on a mouse, I originally created A Fine Start for myself—to provide quick access to common sites. Over the years I have found others love it just as much I do. I think you will, too. Get it for Chrome and Firefox, or use the web version in your favorite browser",
		"keywords": ["chrome","firefox","google","portable","software","brettterpstra","chrome","firefox","premium","thanks","access","account","aesthetic","afinestart","automatic","between","blank","brett","brettterpstra","browser","browsers","chaos","chill","class","click","common","content","convenience","created","developer","devices","different","directly","disabled","export","extension","favorite","forever","found","functionality","group","heavily","height","however","https","image","import","links","loading","media","minimal","mouse","myself","nofollow","noscript","original","originally","others","password","picture","quick","relies","replaces","required","resting","saves","screenshot","sites","source","sponsoring","srcset","syncing","think","thought","title","uploads","version","visited","websites","width","years"]
	},{
		"title": "The new Marked Custom Style Gallery",
		"url": "/2020/02/26/the-new-marked-custom-style-gallery/",
		"tags": ["design","gallery","marked","scripting","themes"],
		"date": "Feb 26<span>th</span>, 2020",
		"ts": "1582725600",
		"summary": "I got stressed out on Monday night and couldn&rsquo;t sleep. Anxiety&rsquo;s a real gut punch. But I turned it into work on something I&rsquo;ve been meaning to get to for a long time: I present the Marked 2 Custom Style Gallery (2.0, really, but the first actual finished product). All of the available styles are in the GitHub repo. But GitHub repos aren&rsquo;t sexy, and it&rsquo;s been a poor experience for typical users. The gallery provides a grid view of thumbnails with links to a full theme browser (which I&rsquo;d built previously). If you&rsquo;re browsing on your Mac, each thumbnail also has a link to install the style instantly in Marked on the same machine. I updated some of the styles, adding missing fonts and including dark mode where it was missing. The collection is about 50% comprised of themes I didn&rsquo;t author, so I didn&rsquo;t take too many liberties. I converted several of them to Sass and set up the repo with a base Compass setup. Feel free to clone the whole repo and create your style using those tools. Marked can update styling every time a CSS file changes, so you can use tools like and not have to worry about LiveReload or the like. In the hopes of expanding the collection, I also created an uploader for people to submit styles for review and inclusion in the gallery. No more having to create a GitHub account to share your custom style with the world. If you&rsquo;ve created a style for yourself, your blog, or your PDF needs, please share it with the rest of us! For anyone interested in the dirt, here&rsquo;s what I did. The gallery still runs on the GitHub repo. I commit new styles there, and if I want to include a style in the gallery, it just needs a 640x480 PNG thumbnail in a directory with the same name as the style. A script globs all files in the base folder, checks for matching images, then generates the preview gallery and the theme browser. It&rsquo;s a static setup and requires some manual interaction, but I was going to be curating this anyway. I made a Retrobatch droplet that lets me sloppily take a screenshot of the theme and scales it to the right width, then crops it to the right aspect ratio (and optimizes it). Takes about a minute to create a new thumbnail from scratch. In addition to base filenames, the generator script parses the metadata block at the top of Marked Custom Styles, which includes the title, author, and description. Those values are used to generate the static page, but are also&hellip;",
		"keywords": ["github","javascript","jquery","programming","anxiety","click","compass","custom","details","gallery","github","handler","install","javascript","livereload","marked","markedcustomstyles","monday","nifty","retrobatch","style","styles","takes","writing","access","account","added","adding","addstyle","allows","animate","anyone","anyway","aspect","author","automatically","available","background","backlink","based","begin","block","brettterpstra","browser","browsing","built","button","buttons","called","calls","cancel","changes","checks","class","cleaned","click","clone","collection","commit","compass","comprised","containing","converted","couldn","create","created","creation","crops","curating","custom","description","details","directory","droplet","encoded","encodes","endnotes","expanding","experience","extra","feature","figuring","filename","filenames","files","finished","first","flyingmeat","fnref","folder","fonts","footnote","footnotes","functions","gallery","galleryscreenshot","generates","generator","github","globs","going","halfway","handler","having","height","hellip","highlighter","hopes","https","image","images","includes","including","inclusion","install","instantly","interaction","interested","jquery","language","layout","ldquo","liberties","links","loading","machine","manual","marked","markedcustomstyles","matching","maybe","meaning","media","messy","metadata","method","minute","missing","mostly","needs","night","normalize","noscript","noteref","object","optimizes","original","parameters","parses","passed","passes","passing","payload","people","picture","plaintext","preferences","preview","previews","previously","product","property","provides","punch","quick","ratio","rdquo","reads","repos","requires","responsive","retrobatch","reversefootnote","right","rouge","round","rsquo","saved","scale","scales","scratch","screenshot","script","server","setup","several","share","simply","sleep","sloppily","source","spinner","srcset","static","stressed","string","style","styles","styleshare","styling","support","theme","themes","through"]
	},{
		"title": "Web Excursions for February 24, 2020",
		"url": "/2020/02/24/web-excursions-for-february-24-2020/",
		"tags": ["bookmarks"],
		"date": "Feb 24<span>th</span>, 2020",
		"ts": "1582547880",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Arrow key clusters througout history I loudly complained about Apple&rsquo;s switch to full-height left/right arrow keys, but it&rsquo;s good to remember that there have been way worse ideas&hellip; SongShift I linked Playlistor last time, and Petr Ruzicka mentioned that there&rsquo;s an iOS app for converting Spotify and Apple Music playlists. It&rsquo;s free, but after testing I gladly paid the $5 to upgrade to Pro and hook in extra services and batch conversions. It works perfectly. It&rsquo;s Official: Open-Plan Offices Are Now the Dumbest Management Fad of All Time I don&rsquo;t think anyone who&rsquo;s had to work in an open office is going to be surprised by the evidence here. roma-glushko/tango at producthunt A CLI to pull a certain amount of analytics info directly from your website&rsquo;s access logs. How to ADHD This is my new favorite ADHD resource. It&rsquo;s a YouTube channel with videos ranging from ADHD in work and relationships to explanations about things like \"why can I focus on video games.\" Delightful to watch, and always informative. I joined the Patreon and look forward to more. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["apple","deficit","disorder","educational","hyperactivity","music","psychology","apple","arrow","backblaze","check","delightful","dumbest","management","music","offices","official","patreon","playlistor","ruzicka","songshift","spotify","youtube","access","affordably","amount","analytics","anyone","arrow","backs","batch","brought","certain","channel","cloud","clusters","complained","computer","conversions","converting","directly","entire","everything","evidence","excursions","explanations","extra","favorite","focus","games","gladly","glushko","going","height","hellip","history","ideas","informative","joined","linked","loudly","mentioned","office","partnership","perfectly","playlists","producthunt","ranging","relationships","reliably","remember","resource","right","rsquo","securely","services","surprised","switch","tango","testing","think","througout","today","upgrade","video","videos","watch","website","works","worse"]
	},{
		"title": "Enhanced music listening on macOS",
		"url": "/2020/02/18/enhanced-music-listening-on-macos/",
		"tags": ["appreview","desktop","icons","keyboard","macos","music","scripting","shortcuts","tools","twitter"],
		"date": "Feb 18<span>th</span>, 2020",
		"ts": "1582034400",
		"summary": "I was a big fan of the Simplify music controller for Mac (and its companion iOS app). Since it died I&rsquo;ve gotten along without it, but I definitely miss my Sideshow jacket I&rsquo;d built for it. So I&rsquo;ve been on a quest to find new tools to enhance my music listening on macOS. There are two areas of control I&rsquo;m looking for: audio controls, including EQ and per-app audio settings, and improved music playback control, including Last.fm support for Apple Music (and not just to improve my Soundtrack page). Last.fm integration and scrobbling1 (Spotify scrobbles on its own, but Music doesn&rsquo;t) Works with both Music and Spotify Desktop artwork/info display Menu bar track/artist display System-wide keyboard shortcuts So here&rsquo;s what I&rsquo;ve found. Before I get to playback controllers, I want to talk about volume control and EQ. There are two good options here: Boom 3D and SoundSource. Boom has some excellent features for hi-fi audio and audiophile tools. It&rsquo;s $20 to purchase, and also available from Setapp. If you&rsquo;re a Setapp subscriber it&rsquo;s an easy choice. If you have the disposable income to buy outright, it&rsquo;s a little tougher choice. Read on&hellip; Boom gives you 3D Surround Sound on any audio channel, improving the sound of everything from laptop speakers and headphones to high quality speaker setups. Boom offers per-app volume control and boost settings. The effects are fairly intelligent, boosting loudness and improving EQ without causing distortion. Usually. I&rsquo;ve run into some inconsistency, but overall it&rsquo;s good. Boom also has its own audio player, and has an iOS companion that allows music control on your Mac from your iPhone. While Boom offers great tools for audio quality, I&rsquo;ve found SoundSource to be a more ideal tool, and less intrusive to my system overall. SoundSource is Rogue Amoeba&rsquo;s utility for absolute control over Mac audio. It sits in your menubar and gives you per-app control over output device, volume, and even EQ and Audio Unit effects. I use Bartender to hide the default volume icon and just use SoundSource instead. I find the layout of SoundSource superior to Boom. They focused less on making it beautiful and more on condensing a lot of controls into a small space while keeping them useable. You can apply all of the various controls (EQ, volume, effects) to the system-wide settings, but I love being able to have separate&hellip;",
		"keywords": ["apple","control","music","neptunes","soundsource","spotify","volume","artist","ablfn","additionally","amoeba","apple","approach","artist","audio","bartender","because","before","boost","control","controllers","desktop","expos","facebook","geektool","homebrew","louder","lyrics","magic","music","neptunes","ozone","picks","rogue","rokit","scarlett","scrobbling","setapp","sideshow","simplify","since","sound","soundsource","soundtrack","spotify","store","super","surround","system","title","tunesart","twitter","usually","volume","while","works","above","absolute","access","affects","again","album","albums","allows","another","anyway","apply","approach","areas","arguments","artist","artists","artwork","assignable","assume","audio","audiophile","authorize","available","backlink","beautiful","because","boost","boosting","boosts","bottom","brettterpstra","build","built","calls","capabilities","causing","channel","cheap","check","choice","choices","class","click","coding","command","comments","companion","compatibility","complaints","condensing","configurable","connected","control","controller","controllers","controlling","controls","couldn","covering","covers","creative","curious","dealbreaker","default","definitely","design","desired","desktop","determining","device","devices","different","display","disposable","distortion","doesn","double","drinking","drunk","easier","effects","either","endnotes","enhance","enhanced","enhancedmusicmacheader","entirely","error","everything","excellent","excited","extra","failed","fairly","feature","features","fiddling","flexible","floating","fnref","focused","followers","footnote","footnotes","found","fuller","geektool","generally","github","gives","glance","globaldelight","going","gotten","great","greyed","habits","haven","headphones","height","hellip","hidden","homebrew","hotkey","https","iphone","itunes","izotope","ideal","image","implemented","improve","improved","improving","including","income","inconsistency","integration","intelligent","intrusive","invaluable","items","izotope","jacket","jackets","jibapps","keeping","keyboard","laptop","launch","layout"]
	},{
		"title": "Scatterbrained: Revisiting the \"doing\" CLI",
		"url": "/2020/02/14/scatterbrained-revisiting-the-doing-cli/",
		"tags": ["automator","autotag","design","doing","editor","geektool","launchbar","logging","marked","productivity","scripting","search","tagging","taskpaper","terminal","tools","typography","writing"],
		"date": "Feb 14<span>th</span>, 2020",
		"ts": "1581688800",
		"summary": "Back in 2011 I started tracking the minutiae of my work days using VoodooPad. It was partly for record keeping, but mostly to be able to walk away from my computer and still be able to remember what I was doing when I got back. I can be very, very scatterbrained. After VoodooPad, I had a system going using QuickQuestion and nvALT. Then it was Day One. By 2014 I&rsquo;d come up with a solution in the form of a command line utility called . The journey was well documented up to that point in a series called, appropriately enough, \"Scatterbrained.\" I haven&rsquo;t written much about since then, but I continue to use it daily. It&rsquo;s come a long way. It not only creates rich logs of my time at my computer, it also handles time tracking and reporting and integrates with my system via LaunchBar, various automations, and GeekTool. You know how can be really useful after a long night of hacking, or a few days of being away?1 This is that, but for everything else, and it&rsquo;s brimming with handy features. Given I&rsquo;ve been working on this as needed for 5 years now, it hasn&rsquo;t felt like a descent into madness as much as a gentle slide into areas of questionable judgment. I find it a very useful tool, though, as long as I don&rsquo;t think too much about how much time I&rsquo;ve put into it. After publishing a few new versions over the last couple of months, I thought it might be time to remind potential users (people who read this blog and enjoy my brand of madness) that it exists. This is going to be a longish post where I get to talk giddily about all the cool stuff this little tool can do. If you&rsquo;re already sold &mdash; or at least enough to skip the spiel &mdash; and want to skip right to the documentation and the latest version, just head straight to the project page. Before we go much further, I should make something clear. is primarily designed for use from the command line in your terminal of choice. It&rsquo;s by a nerd, for nerds. I have, however, integrated it with LaunchBar and other systems over the years. It&rsquo;s flexible. The LaunchBar action is included below, if you&rsquo;re interested. The basic idea of is to provide a way to keep track of the little things I work on over the course of a day, both as a reminder after I leave and forget what I was working on, and as a way to track my productivity. It does this using a terminal command with an intuitive syntax. The command updates a simple TaskPaper-formatted&hellip;",
		"keywords": ["command","journaling","tracking","action","adding","alfred","allows","among","archive","automatic","automating","autotagging","basics","before","brett","brett&#39;s","commands","commands","configuration","desktop","display","doing","enter","finish","first","global","geektool","github","handy","ideas","javascript","language","later","launchbar","marked","natural","nonetheless","options","output","paypal","projects","quickquestion","react","reiki","remember","reporting","rubygems","running","section","stderr","stdout","synopsis","scatterbrained","search","searchlink","section","seeing","shows","similar","sometimes","special","specify","sponsor","starting","support","tagname","tagging","taskpaper","thinking","timing","totals","tracking","using","version","voodoopad","working","above","accept","accepts","accomplished","across","action","actions","activity","added","adding","adjust","again","alias","aliased","aliases","align","allocated","allow","allows","almost","anywhere","appears","appended","applied","approaches","appropriately","archive","archiving","areas","argument","arguments","arise","aside","aspects","attributed","automate","automated","automatic","automatically","automating","automations","autotagging","available","aware","babies","backlink","based","basic","basics","batch","beauty","because","before","below","bersicht","between","block","boldblack","boldcyan","boolean","border","boring","brainstorm","brand","brettterpstra","brimming","browser","built","button","buying","called","cancelled","cascading","causes","center","change","characters","check","choice","choose","chronologically","circumstances","class","clear","closest","coding","coffee","color","colors","combinations","comes","command","commands","commit","commits","completed","completing","computer","concept","config","configuration","consistently","consists","containing","contains","context","contexts","continue","converted","count","couple","cover","create","created","creates","custom","customization","customize","daily","default","define","defined","depending","depends","descent","design","designed"]
	},{
		"title": "PDFpen, now with table cell content editing",
		"url": "/2020/02/13/pdfpen-now-with-table-cell-content-editing/",
		"tags": ["sponsor"],
		"date": "Feb 13<span>th</span>, 2020",
		"ts": "1581595200",
		"summary": "Thanks again to PDFpen for sponsoring BrettTerpstra.com this week! PDFpen 11 is the ultimate tool for editing PDFs on the Mac, iPhone, and iPad. Using PDFpen, you can do all of the PDF editing tasks you&rsquo;d expect, plus you can add headers, footers and watermarks to your documents, edit graphics with the Precision Edit tool, store commonly used graphics in the Library, and scan and OCR documents so you can go paperless. And now you can easily edit the content in table cells, too. With PDFpenPro you can do even more: batch OCR documents, convert websites into PDFs, create fillable PDF forms, create and edit Table of Contents, and export your PDFs to Microsoft Word and Excel. PDFpen for Mac supports macOS Catalina, and PDFpen for iPad & iPhone is iOS 13-ready. Learn more about PDFpen and PDFpenPro at smilesoftware.com",
		"keywords": ["editing","pdfpen","smile","brettterpstra","catalina","contents","excel","learn","library","microsoft","pdfpen","pdfpenpro","precision","table","thanks","using","again","batch","cells","commonly","content","convert","create","documents","easily","editing","expect","export","fillable","footers","forms","graphics","headers","iphone","macos","paperless","ready","rsquo","smilesoftware","sponsoring","store","supports","table","tasks","ultimate","watermarks","websites"]
	},{
		"title": "Web Excursions for February 12, 2020",
		"url": "/2020/02/12/web-excursions-for-february-12-2020/",
		"tags": ["bookmarks","music"],
		"date": "Feb 12<span>th</span>, 2020",
		"ts": "1581516000",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Diagrams: Diagram Editor for Mac An elegant diagram editor for macOS. I wish I could recall the name of the one I used to use quite happily, but it&rsquo;s eluding me now. At $20, Diagrams a stripped-down, streamlined version of tools like OmniGraffle, but it looks to be a complete solution for all kinds of diagramming. ripgrep A command line search tool that \"combines the usability of The Silver Searcher &hellip; with the raw performance of GNU grep.\" I can attest to the usability being on par with and , and while I haven&rsquo;t run any actual benchmarks myself, it does seem to live up to its stated goals. Yoganotch Personal Yoga Assistant I mentioned Zenia recently, a camera-based AI yoga instructor. This one looks to offer the same kind of guidance, but using wearable sensors instead of relying on the camera, which I have to assume would offer more reliable feedback. I haven&rsquo;t tried this yet, given I live with a yoga teacher and the investment seems extravagant, but I&rsquo;m infinitely curious. As always. Symphonia A free iOS app that turns your voice into MIDI notes. That part of it is solid and worth the download on its own if you&rsquo;re looking to turn musical ideas into actual notes on the page. The multi-track feature isn&rsquo;t as polished or useful, but the quantize, key magnet, and auto-chord features work well. Playlistor - Apple Music <-> Spotify playlists Convert Spotify playlists to Apple Music and vice versa. I&rsquo;ve been looking for a solid way to do this for a while and this seems to be working perfectly",
		"keywords": ["apple","macos","music","spotify","apple","assistant","check","convert","diagram","diagrams","editor","music","omnigraffle","personal","playlistor","searcher","setapp","silver","spotify","symphonia","yoganotch","zenia","access","assume","attest","based","benchmarks","brought","camera","chord","combines","command","curious","diagram","diagramming","download","editor","elegant","eluding","excursions","extravagant","feature","features","feedback","goals","guidance","happily","haven","hellip","hundreds","ideas","infinitely","instructor","investment","kinds","looking","looks","macos","magnet","mentioned","monthly","multi","musical","myself","notes","offer","partnership","perfectly","performance","playlists","polished","quantize","recall","recently","reliable","relying","ripgrep","rsquo","search","seems","sensors","solid","solution","stated","streamlined","stripped","subscription","teacher","today","tools","track","tried","turns","usability","useful","using","versa","version","voice","wearable","while","working","worth"]
	},{
		"title": "Launching the iOS Simulator without Xcode",
		"url": "/2020/02/11/launching-the-ios-simulator-without-xcode/",
		"tags": ["developer","launchbar","macos"],
		"date": "Feb 11<span>th</span>, 2020",
		"ts": "1581432120",
		"summary": "Correction: This post originally stated that Spotlight was also unable to index Simulator. It was quickly pointed out to me on Twitter that this is incorrect and Spotlight is indeed able to find the Simulator, so this only applies to people who prefer to launch from LaunchBar or similar. This is a quick tip for developers, or anyone who uses the iOS Simulator on macOS. It&rsquo;s fairly obvious, but I hadn&rsquo;t thought of it until yesterday. I don&rsquo;t do much iOS development, but I do use the iOS Simulator for testing web applications. (Which, by the way, is slow and not ideal, but it&rsquo;s the only way I&rsquo;ve found to catch certain quirks specific to Safari on iOS.) Launching the Simulator, though, always requires opening Xcode and going to Developer Tools. Because the Simulator.app is embedded within the Xcode app bundle, apps like LaunchBar won&rsquo;t find it to index it. LaunchBar, which is my launcher of choice, also ignores aliases, so dragging Simulator.app out to /Applications as an alias also doesn&rsquo;t help. I came up with the idea to use Automator and was going to write about it, but a quick DuckDuckGo search led me to Swiss Mac Users&rsquo;s site where he had already detailed and explained the process. It&rsquo;s super simple, but I recommend building the app yourself rather than downloading because there&rsquo;s a rigamarole to get around an unsigned app that takes just as long as the single-action Automator workflow takes. Now I can launch the iOS Simulator using LaunchBar and I&rsquo;m 5% happier than I was before",
		"keywords": ["duckduckgo","launchbar","macos","workflow","xcode","applications","automator","because","correction","developer","duckduckgo","launchbar","launching","safari","simulator","spotlight","swiss","tools","twitter","users","xcode","action","alias","aliases","anyone","applications","applies","because","before","building","bundle","catch","certain","choice","detailed","developers","development","doesn","downloading","dragging","embedded","explained","fairly","found","going","happier","ideal","ignores","incorrect","indeed","index","launch","launcher","macos","obvious","opening","originally","people","pointed","prefer","process","quick","quickly","quirks","rather","recommend","requires","rigamarole","rsquo","search","similar","simple","single","specific","stated","super","takes","testing","thought","unable","unsigned","using","where","within","workflow","write","yesterday"]
	},{
		"title": "Fantastical 3",
		"url": "/2020/02/06/fantastical-3/",
		"tags": ["appreview","macos","productivity","support","weather"],
		"date": "Feb 6<span>th</span>, 2020",
		"ts": "1581011280",
		"summary": "In case you missed the big launch, there&rsquo;s a new version of my favorite calendar app for Mac and iOS, Fantastical. Fantastical, which is almost 10 years old now, is a gem of a calendar app with fast natural language event parsing, an infinitely handy menu bar view on the Mac, and full support across all Apple devices (and the iPhone app is just as excellent as the Mac version, and the iPad version is awesome). Version 3 adds myriad new features and is an exciting leap forward for this handy app. You&rsquo;ll find a lot of press out there that covers the major points quite well, so I won&rsquo;t regurgitate the entire press release. I do want to start by applauding the approach Flexibits has taken to switching to a subscription model. While subscriptions aren&rsquo;t generally a popular choice among users, they&rsquo;ve done literally everything you could ask a company to do: All features from version 2 that you had unlocked are unlocked for free in version 3 There&rsquo;s a free subscription level that allows you to keep using it without the new features The subscription enables server-side integrations that justify ongoing payment The pricing is reasonable with a significant discount for yearly payment Technical support and bug fixes on the previous version (v2) will continue even though it&rsquo;s no longer a vendor product Personally, I&rsquo;m happy to support the continued development of one of my crucial productivity apps, and I can&rsquo;t find any fault with Flexibits on this one &mdash; they&rsquo;ve covered all the bases. Mac users will be automatically upgraded to version 3. iPad users will need to download a new app, which will automatically detect a previous install of Fantastical 2 for iPad and unlock the features they&rsquo;ve already paid for. So how about those new features? Start with an updated design that extends through all of the various views, from full screen macOS to menu bar entry to iOS versions. It includes a Today Widget, Action & Share extensions, and Handoff support between the Mac, iPhone, and iPad versions. But beyond design, here are the updates I find most useful&hellip; Meeting scheduling. You can suggest multiple meeting times when you add an invitee to an event. An invitation is sent with the options you provide, the recipient clicks on one to confirm, and the event is automatically scheduled in your calendar. It&rsquo;s like Calend.ly for one-off appointments and it will save you a ton of&hellip;",
		"keywords": ["applications","calendar","calendaring","cloud","google","icloud","smartphones","software","accuweather","action","apple","assuming","billed","calend","calendars","check","custom","david","fantastical","field","flexibits","focused","google","guide","handoff","improved","interesting","location","meeting","michael","minutecast","natural","personally","premium","reminders","settings","share","simmons","sparks","tasks","technical","templates","today","todoist","travel","version","watch","weather","while","widget","youtube","ability","above","across","adding","allows","almost","among","annually","apart","applauding","appointments","approach","arrive","autocomplete","automatically","available","avoid","awesome","based","bases","between","beyond","bunch","calendar","calendars","check","choice","clicks","company","competition","confirm","continue","continued","covered","covers","create","crucial","dated","demoed","design","detect","development","device","devices","discount","download","emails","enables","entire","entry","events","everyone","everything","excellent","exciting","extends","extensions","fault","favorite","feature","features","fixes","flawless","forecast","forth","generally","geofences","going","great","handy","happy","headed","hellip","hoped","hoping","icloud","iphone","improvements","includes","including","infinitely","install","integrates","integrations","interest","invitation","invitee","invitees","items","justify","language","latest","launch","leave","level","limited","literally","location","locations","longer","macos","mainstay","major","makes","mdash","meeting","mention","mentioned","missed","model","multiple","myriad","natural","notifications","offers","ongoing","options","parsing","payment","phases","phrases","piqued","platforms","points","popular","press","pricing","product","productivity","promo","quickly","ranging","ready","reasonable","recipient","regurgitate","release","released","remind","reminder","repeating","rsquo","scheduled","scheduling","screen","second","selection","sentence","server","shows","significant","spiffy","sporting","starting","string","subscription","subscriptions"]
	},{
		"title": "Web Excursions for January 24, 2020",
		"url": "/2020/01/24/web-excursions-for-january-24-2020/",
		"tags": ["bookmarks"],
		"date": "Jan 24<span>th</span>, 2020",
		"ts": "1579874400",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. JetBrains Mono: A free and open source typeface for developers I think this is my new IDE font. Building a Spotify player for my Mac SE/30 I stand in awe of this build. Special sunglasses, license-plate dresses: How to be anonymous in the age of surveillance Reading about Cleariew AI will make you want a pair of sunglasses that obscures your face from surveillance cameras&hellip; Leonard Cohen - The Story of Thanks for the Dance A mini-doc detailing the story behind Leonard Cohen&rsquo;s posthumous record, Thanks for the Dance. The contrast of loss and creation made for a melancholy record. I love it. I Invented the World Wide Web. Here&rsquo;s How We Can Fix It. The Contract for the Web is a global plan of action created over the past year by activists, academics, companies, governments and citizens from across the world to make sure our online world is safe, empowering and genuinely for everyone. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["cohen","crime","leonard","national","prevention","privacy","security","spotify","sunglasses","surveillance","video","backblaze","building","check","cleariew","cohen","contract","dance","invented","jetbrains","leonard","reading","special","spotify","story","thanks","world","academics","across","action","activists","affordably","anonymous","backs","behind","brought","build","cameras","citizens","cloud","companies","computer","contrast","created","creation","detailing","developers","dresses","empowering","entire","everyone","everything","excursions","genuinely","global","governments","hellip","license","melancholy","obscures","online","partnership","plate","player","posthumous","record","reliably","rsquo","securely","source","stand","story","sunglasses","surveillance","think","today","typeface","world"]
	},{
		"title": "Sponsor: VirtualHostX Pro - One Mac. Many Websites.",
		"url": "/2020/01/23/sponsor-virtualhostx-pro-one-mac-many-websites/",
		"tags": ["developer","macos","sponsor"],
		"date": "Jan 23<span>rd</span>, 2020",
		"ts": "1579780800",
		"summary": "Thanks to VirtualHostX Pro for sponsoring BrettTerpstra.com this week! I&rsquo;ve been using VirtualHostX for what must be a decade now, and this latest version has some downright amazing capabilities for any web developer. Since 2007, VirtualHostX has helped over 50,000 web developers and designers build and test their websites locally on macOS. Rather than making changes to your live website or spinning up a separate development server in the cloud, VHX lets you create as many websites as you want on your Mac. You can even install WordPress in less than 30 seconds. VirtualHostX comes with batteries included - that means the latest versions of PHP and MySQL are automatically ready for you to use. And VHX scales from web designers who just want a point-and-click way to setup a new website to hardcore web developers who love to customize and tweak every available setting. And because your VirtualHostX settings are self-contained using a real Ubuntu Linux virtual machine under the hood, you can be sure that Apple&rsquo;s latest macOS software updates won&rsquo;t break your websites. But the best part about VirtualHostX? It&rsquo;s me, Tyler. I&rsquo;ve been running my one-person Mac software company for twelve years, and I take great pride in offering amazing customer service. If you need help getting started or ever run into any bugs or have a random question, I&rsquo;m in your corner, happy to help, and reply lightning-fast. Just call, text, or email me and I&rsquo;ll be happy to talk your ear off about why VHX is the best and easiest way to develop websites on macOS",
		"keywords": ["apache","design","development","linux","virtual","virtualhostx","apple","brettterpstra","linux","mysql","rather","since","thanks","tyler","ubuntu","virtualhostx","wordpress","amazing","automatically","available","batteries","because","break","build","capabilities","changes","check","click","cloud","comes","company","contained","corner","create","customer","customize","decade","designers","develop","developer","developers","development","downright","easiest","email","getting","great","happy","hardcore","helped","included","install","latest","lightning","local","locally","macos","machine","making","offering","person","point","pride","random","ready","reply","rsquo","running","scales","seconds","separate","server","service","setting","settings","setup","software","spinning","sponsoring","started","today","tweak","twelve","under","updates","using","version","versions","virtual","website","websites","years"]
	},{
		"title": "Soundtrack - experiments with Spotify, Apple Music, and Last.fm",
		"url": "/2020/01/21/soundtrack-experiments-with-spotify-apple-music-and-last-dot-fm/",
		"tags": ["desktop","developer","experiments","itunes","mobile","music","scripting","search","soundtrack","source","tools"],
		"date": "Jan 21<span>st</span>, 2020",
		"ts": "1579624800",
		"summary": "I made a thing I want to show you. It will provide neither of us with any particular value, but it was a fun little labor of love and I&rsquo;d hate for you to never see it. Under my \"other stuff\" heading, there used to be a \"Last.fm Experiments\" page. It had broken over the years, and a few weeks back I thought I&rsquo;d go see if I could fix it up, which &mdash; over the course of the following weeks &mdash; resulted in a new Soundtrack page with a fair amount of fancy. As an aside, music has always been important to me. The thing is, I used to have my identity overly wrapped up in the music I listened to. Going through my records was supposed to tell you a lot about me; what I cared about, the depth of my emotions, how goddamn cool I was. That&rsquo;s faded away with age, thankfully, and now I can just enjoy music and not really worry about how a particular track \"reflects\" on me. Anyway, I mention this because this is not a situation where there&rsquo;s any expectation on you to have any interest in or particular reaction to my musical tastes. I&rsquo;m also not going to curate the output of these scripts. I listen to some potentially embarrassing stuff. I&rsquo;m cool with it. Ultimately, I just had some data and some tools and I wanted to make something fun. Side note: That said, as I mention in the descriptions further in, Apple Music occasionally returns results for Nickelback during completely unrelated searches. I haven&rsquo;t filed a radar on this yet, but I would like to state definitively that under no circumstances are any appearances of Nickelback based on correct listening data. It turned out that most of the problems with the previous \"experiments\" were on Last.fm&rsquo;s side. Their API is showing its age. Since I see no indication that Last.fm is going to continue work on their API, I decided to explore other options. After looking around a bit, I feel confident saying that, of the various streaming services, Spotify offers the best tools for developers. The Spotify API is robust, and there are tools and libraries available for most major programming languages. For the purposes of putting together a page to showcase my favorite music, it was overall the easiest to work with. That&rsquo;s great for me as a happy Spotify user. But I also subscribe to Apple Music. Why I still do that and which I would choose if I had to cut one is another post (but Spotify would win). So I spent time looking into Apple&rsquo;s&hellip;",
		"keywords": ["apple","lastfm","music","spotify","anyway","apple","artist","artists","biographies","clicking","developer","experiments","faved","frankensteinian","fresh","genres","going","handlebars","hovering","listen","loved","music","musickit","nickelback","plays","previews","recent","search","since","soundtrack","spotify","tracks","under","above","account","action","aesthetic","album","albums","allows","amount","animations","another","anyone","anyway","appearances","appears","applying","artist","artists","artwork","aside","associated","attribute","audio","authentication","available","based","basic","basics","because","benefit","between","brief","broken","browser","bucketload","build","button","cared","cheerfulness","choose","chronological","circumstances","click","clicking","codes","collate","combination","combinations","comes","coming","completely","computer","confident","content","continue","cooler","counts","couple","courtesy","cover","credentials","curate","curious","danceability","decided","definitively","depth","descriptions","design","desktop","details","determined","developer","developers","different","digging","directly","discographies","display","displayed","displaying","doesn","easiest","embarrassing","embed","embedded","emotions","ended","energy","enjoy","enough","entire","evolve","example","exception","expectation","expectations","experiments","explore","extensive","extra","faded","fallback","fancy","favorite","field","filed","finds","focus","front","fully","gamifying","generated","genre","genres","getting","goddamn","going","great","happy","haven","heading","hellip","history","horizontal","hover","iphone","itunes","identity","image","important","indication","indicator","interactions","interest","interested","interesting","keeping","labor","languages","level","libraries","library","linked","links","listen","listened","listening","listing","little","local","logged","looking","looks","magic","major","makes","making","mdash","mention","mentioned","metadata","meter","mobile","modified","mostly","music","musical","narrow","needed","neither","nifty"]
	},{
		"title": "Sponsor: Timing — Automatic Time Tracking for Mac",
		"url": "/2020/01/16/sponsor-timing-automatic-time-tracking-for-mac/",
		"tags": ["sponsor"],
		"date": "Jan 16<span>th</span>, 2020",
		"ts": "1579176000",
		"summary": "Thanks to Timing for sponsoring BrettTerpstra.com this week! I have Timing running all day, every day, and am always honored to have their support on the blog. Time is your most precious resource. You need to know how you are spending it. But time tracking sucks. Big Time. (Pun intended.) It automatically tracks which apps, documents and websites you use — without any starting and stopping of timers. See how you spend your time, eliminate distracting activities, and improve your client billing. It&rsquo;s like Screen Time on steroids. Timing also offers a web app to access your time entries from anywhere. If you are on the go and need to track time spent on a meeting (for example), you can track it right from your iPhone! In addition, the Timing team offers a set of Siri shortcuts to start and stop timers as quickly as possible. Not convinced yet? Read what Brett himself has to say about Timing. (Spoiler alert: He likes it, and it helps him be more productive.) Or, just download the free 14-day trial today and get 10% off for the first year",
		"keywords": ["macos","timing","tracking","&#39;nofollow&#39;","brett","brett","brettterpstra","screen","spoiler","thanks","timing","access","activities","alert","anywhere","automate","automatically","billing","brett","brettterpstra","campaign","class","client","convinced","distracting","documents","doing","download","eliminate","entries","example","first","fixes","focus","helps","highlight","highlighter","himself","honored","https","iphone","improve","intended","iphone","language","likes","loading","macstories","makes","media","medium","meeting","nofollow","noscript","offers","original","picture","plaintext","possible","precious","productive","quickly","resource","reviews","right","rouge","rsquo","running","shortcuts","source","spend","spending","spent","sponsoring","sponsorship","srcset","starting","steroids","stopping","strong","sucks","support","timers","timing","timingapp","title","today","track","tracking","tracks","trial","uploads","usage","websites","width","worrying"]
	},{
		"title": "Bunch 1.2.2",
		"url": "/2020/01/14/bunch-1-dot-2-2/",
		"tags": ["bunch"],
		"date": "Jan 14<span>th</span>, 2020",
		"ts": "1579027920",
		"summary": "Wow, compared to the barrage of updates in the last half of last year, it&rsquo;s been a while since the last Bunch release. For those who missed it, Bunch is my text-file-based batch application launcher, replete with handy features for setting up \"contexts\" in your digital workspace. This update focuses on Bunch&rsquo;s features for sending key commands. For a couple of versions now, Bunch has been able to send key combinations and type strings in target applications. While the current key combo syntax works great for modifer+letter combinations, it was pointed out on Twitter that it was unable to handle combinations containing system keys like arrows, delete, caps lock, or anything that needed more than one letter to describe it. This has been fixed in multiple ways: You can just use a key name in the normal shortcut format, e.g. would press Command-Up Arrow You can combine them with modifer names (spelled out) using hyphens, e.g. (a full list of recognized key names is available in the docs) You can use unicode symbols for arrows, e.g. (or ). As mentioned in the Tweet that triggered this update, this makes it easier to use Bunch with something like Moom, allowing you to extend your Bunches with window management capabilities. I also (finally) noticed that the escape keys you can use when sending strings to be typed included a conflict where tried to be both Enter and Down Arrow, leading to an identity crisis of sorts. The escape codes have been updated such that is up and is down (and is Enter/newline as it should be). I also added for delete, and / for home/end. Lastly, I was using the typing feature to trigger TextExpander snippets and noticed that when I tried to use snippets that required whitespace to trigger them, it was failing. I cleverly had Bunch stripping whitespace from the beginning and end of the string, so any whitespace that was specified got lost. That&rsquo;s fixed now, and Bunch will trust that you meant to include any and all spaces you send it. Just in case, I also added an escape for to force a spacebar press if needed. Grab the latest update from within Bunch using Bunch->Check for Updates. Or, if you&rsquo;re not already using it, download it from the Bunch project page and give it a shot",
		"keywords": ["keyboard","shortcuts","arrow","bunch","bunches","check","command","enter","lastly","textexpander","twitter","updates","while","added","allowing","applications","arrows","available","barrage","based","batch","beginning","capabilities","cleverly","codes","combinations","combo","commands","compared","conflict","containing","contexts","couple","crisis","describe","digital","download","easier","escape","extend","failing","feature","features","finally","fixed","focuses","force","format","great","handle","handy","hyphens","identity","included","latest","launcher","leading","letter","makes","management","meant","mentioned","missed","modifer","multiple","names","needed","newline","normal","noticed","pointed","press","project","recognized","release","replete","required","rsquo","sending","setting","shortcut","since","snippets","sorts","spacebar","spaces","spelled","string","strings","stripping","symbols","syntax","system","target","tried","trigger","triggered","typed","typing","unable","unicode","updated","updates","using","versions","where","while","whitespace","window","within","works","workspace"]
	},{
		"title": "The IndieWeb and Webmentions",
		"url": "/2020/01/13/the-indieweb-and-webmentions/",
		"tags": ["comments","indieweb","social"],
		"date": "Jan 13<span>th</span>, 2020",
		"ts": "1578948420",
		"summary": "I don&rsquo;t know if you&rsquo;ve noticed, but a while back I added a nifty feature to posts on this site which displays activity from Twitter and Mastodon (likes, retweets, replies) on each post. In most cases, more responses to my work happen on social media than in post comments, so I really wanted to be able to integrate those social mentions with the existing comments. This is a static site running on Jekyll, so it took a little extra work and relies on a few external services. I got the idea for this from Evan Travers, who did a writeup of how he&rsquo;s accomplishing it on his own site. It all starts with the IndieWeb. I&rsquo;m going to list the steps I took for reference, but don&rsquo;t consider this any kind of tutorial. All of the information you need can be found in the Evan&rsquo;s post, as well as posts from Kieth Grant and tips from indiewebify.me. I added microformat markup to the site hcard with my author/contact info for every post and on index pages hentry for post bodies hfeed for indexes and feeds Validation via indiewebify.me and xray Set up IndieWeb sign-in I used GitHub as my sign-in source, ensuring my profile there had a link to my site, and then including a link to my GitHub profile on my own site set up Bridgy Fed to scrape for mentions on my various social platforms, and webmention.io as an API for collecting them. To be kind to the WebMention API, I set up a script that runs at 30-minute intervals, retrieving new mentions and caching them in a JSON file To prevent massive filtering in the browser, I added a CGI to my site that reads the cached JSON server-side and returns all mentions for a particular post as an array, sorted by date received The markup for the mentions is generated and inserted dynamically on page load using and the output of the CGI You can see a good example of the result in action on this post from November. Scroll to the end of the post to see the social activity (\"mentions\"). It was a fun experiment, and I&rsquo;m happy to have broader interactions than just local comments on the posts. If you&rsquo;re interested in any of the scripts I&rsquo;m using (crawler, CGI, jQuery), just let me know, I&rsquo;m happy to share",
		"keywords": ["bridgy","markup","microformats","webmentions","bridgy","github","indieweb","jekyll","kieth","mastodon","scroll","travers","twitter","validation","webmention","accomplishing","action","activity","added","array","author","bodies","broader","browser","cached","caching","collecting","comments","consider","contact","crawler","displays","dynamically","ensuring","example","experiment","external","extra","feature","feeds","filtering","found","generated","going","happen","happy","hcard","hentry","hfeed","including","index","indexes","indiewebify","information","inserted","integrate","interactions","interested","intervals","jquery","likes","little","local","markup","massive","media","mentions","microformat","minute","nifty","noticed","output","pages","particular","platforms","posts","prevent","profile","reads","received","relies","replies","responses","retrieving","returns","retweets","rsquo","running","scrape","script","scripts","server","services","share","social","sorted","source","starts","static","steps","tutorial","using","various","wanted","webmention","while","writeup"]
	},{
		"title": "Sponsor: ImageEngine, speed up your website",
		"url": "/2020/01/09/sponsor-imageengine-speed-up-your-website/",
		"tags": ["sponsor"],
		"date": "Jan 9<span>th</span>, 2020",
		"ts": "1578600120",
		"summary": "Thanks to ImageEngine for sponsoring BrettTerpstra.com this week! Load time has a huge impact on whether users engage and convert to a sale on your website. Studies show that the bounce rate and conversion rate on a website is drastically better if you can lower load times to less than 5 seconds. Images are the primary culprit that slow down a site. Images make up over two-thirds of most website&rsquo;s payload. ImageEngine can automatically reduce image payload by up to 80% with no perceptible change in quality. With less payload, the website loads much faster – typically cutting several seconds off load time. Installation is easy. Sign up for an account and point ImageEngine at wherever your images are stored on your domain (or Amazon S3). ImageEngine&rsquo;s device-aware edge servers will start detecting the type of device requesting your website. Then, it will resize, compress, and convert into the most efficient image file format (e.g. WebP for Chrome, JPEG 2000 for Safari). It then caches the optimized images on its image CDN for the next time a device requests it. Ready for a free trial? Head over to ImageEngine and give it a spin. ImageEngine&rsquo;s support team is there to make sure you achieve a faster website",
		"keywords": ["compression","optimization","amazon","brettterpstra","chrome","detect","elements","imageengine","images","installation","optimize","ready","safari","sponsored","studies","syndicate","thanks","vsayd","account","achieve","automatically","aware","blockquote","bounce","brettterpstra","caches","change","class","compress","conversion","convert","culprit","cutting","detecting","device","domain","drastically","efficient","engage","faster","format","height","https","image","imageengine","images","impact","loading","loads","lower","media","nofollow","noscript","optimize","optimized","original","payload","perceptible","picture","point","primary","quality","requesting","requests","resize","rsquo","seconds","servers","several","signup","source","sponsoring","srcset","stored","support","thirds","times","title","trial","typically","uploads","users","website","wherever","width"]
	},{
		"title": "SearchLink: Checking your work",
		"url": "/2020/01/08/searchlink-checking-your-work/",
		"tags": ["browser","markdown","popclip","search","searchlink","service","shortcuts","urlpreview"],
		"date": "Jan 8<span>th</span>, 2020",
		"ts": "1578499800",
		"summary": "We&rsquo;ve been exploring SearchLink lately in a series of posts. If you&rsquo;re following along, you&rsquo;ve installed SearchLink and explored the various !bang searches, and maybe even added a custom configuration and a few custom searches of your own. And you&rsquo;ve probably realized that an important step is being able to quickly verify the search results. The whole point of SearchLink is to avoid switching to your browser while you&rsquo;re writing. As a result, you have to trust that SearchLink found the right result &mdash; otherwise you&rsquo;re switching to your browser in addition to running SearchLink, which is worse than just switching to begin with. As you might expect, I have some options for you. More from \"SearchLink Tips\" SearchLink -- better searches, better results 2023/01/16 SearchLink -- browser history, bookmarks, and Pinboard 2023/01/16 SearchLink: Checking your work 2020/01/08 SearchLink: Next Steps 2019/12/23 SearchLink Basics 2019/12/16 In a lot of cases you can tell by looking at a URL that you got the right one. If you&rsquo;re just running SearchLink on one link at a time, you can check your work as you go. If you&rsquo;re running on multiple links in larger selections or entire files, you can turn on reporting to see all of your results in one block for verification. You can do this by editing your configuration file to set (see the docs for details) or by including in a metadata block at the top of your search selection or file. The latter only makes sense if you have reporting off in the configuration and want to enable it selectively. You can also include in either case to get an additional report of errors encountered. This shows where in the selection the replacement occurred, what the original search string was, and what URL (or error) was ultimately returned. The reports are output inside of HTML comment tags, meaning that even if you don&rsquo;t remove them from the text, they won&rsquo;t show up in your output. That said, I do recommend removing them from your file once you&rsquo;re satisfied with the results. Reporting is especially handy when you&rsquo;re running SearchLink on an entire file, either by selecting all or using the SearchLink File Service on a file in Finder. Not only does it make it easy to catch any mistakes and spot any errors, it also enables the use of the Jump to SearchLink Error Service. Note that Jump Service was omitted from recent versions of the download and I just noticed&hellip;",
		"keywords": ["actions","macos","quick","services","writing","action","amazon","basics","brett","brettspopclipextensions","cancel","catalina","changelog","checkurls","checkurlspopclip","checking","curio","dismiss","donate","download","error","escape","extension","extensions","finder","first","markdown","pinboard","popclip","popclipicon","preview","previewurl","previewurlservice","previewing","processed","published","quick","report","reporting","results","return","searchlink","selecting","service","share","sometimes","steps","tuvbv&#39;","updated","above","accurate","action","added","adding","aforementioned","again","allow","animated","archive","assigned","available","avoid","background","basics","begin","beginning","below","benefit","block","blockquote","bookmarks","bretts","brettterpstra","broken","browser","buckle","buttons","called","caption","catch","change","changelog","changes","check","checking","class","click","clicking","collection","comment","configuration","containing","contains","coordinates","corrections","cover","created","curio","cursor","custom","datetime","debug","defined","description","destination","details","dlbox","donate","double","download","downloaded","downloads","editing","either","enables","encountered","entire","equally","error","errors","escape","especially","everybody","example","expect","explored","exploring","extension","extensions","fathom","figure","files","finding","first","fixed","found","frame","friendly","gradient","handle","handy","height","hellip","highlight","highlighter","history","hitting","hoping","howtos","https","ignore","image","images","important","improve","including","incorrect","information","inside","install","installed","instapaper","intended","jumptosearchlinkerror","keyboard","language","larger","latter","ldquo","linear","links","listed","loaded","loading","location","looking","macos","major","makes","making","maybe","mdash","meaning","media","mentioned","metadata","methods","minor","mistakes","modified","moved","multiple","navigate","needed","noscript","noticed","numbers","occurred","omitted","onclick","optionally","options","original","output","panel"]
	},{
		"title": "Thinking faster with mind maps",
		"url": "/2020/01/06/thinking-faster-with-mind-maps/",
		"tags": ["brainstorming","keyboard","mentalhealth","mindmapping","organization","productivity","shortcuts"],
		"date": "Jan 6<span>th</span>, 2020",
		"ts": "1578319200",
		"summary": "It&rsquo;s come to my attention that the way I brainstorm has a lot to do with my ADHD. Brainstorming is kind of a superpower of the ADHD mind. It takes some work to go deep on a single topic, but we&rsquo;re great at the surface level associations and development. I believe that the techniques I share can apply to anyone&rsquo;s brainstorming, the ADHD connection just helped clarify for me why the things I do (and the tools I use) work for me. I&rsquo;ve said it before: I like mind maps because they make it easy for my thoughts to come out in whatever order they happen to come up, and as disorganized as they are in my head. I don&rsquo;t have to know what my top level groupings will be. I don&rsquo;t need to know how things are going to be sorted at all. I can just spill them out into something I can assess and manipulate. Being able to start churning out ideas before I start pondering organization &mdash; before I even have to decide what it really is I&rsquo;m brainstorming &mdash; gets things rolling with zero delay. Side note: if you read Tony Buzan (RIP) and subsequent mind mapping purists, they often talk about the need for mind maps to be on paper. That does not work for me, I need things to be more malleable. Doing it on a computer or tablet where I can spill-and-sort my ideas is paramount. Just for the record. So on to today&rsquo;s method. This is separate from the process I use when beginning a project, where I have a very good idea what the main areas are going to be. This is for starting a map with nothing but a central topic. It focuses on a finite portion of my overall mind mapping strategy. I start with the random flickers of ideas related to whatever the central topic is. As those flickers become map nodes and start to pile up, groupings start to become apparent, and I sort the ideas as they do. Once those initial groupings are in place, I can focus within the more finite scopes of the group to generate new, related ideas. And as those groups fill out, I can more easily see where the blank spots are. And I can, at any time, flit between groups as unrelated ideas strike. Sometimes a node comes out that&rsquo;s completely unrelated to whatever groupings have already materialized. That&rsquo;s actually one of my favorite things about this process, these outliers that constantly make me reassess what I&rsquo;ve created so far. Do I take everything I currently have and squeeze it into a new top-level branch, then start working on a&hellip;",
		"keywords": ["ithoughtsx","brainstorming","buzan","command","doing","finder","folder","holding","mindnode","omnioutliner","selection","shift","similar","sometimes","xmind","accessibility","accomplished","another","answer","anyone","apply","areas","arrow","assess","associations","because","before","begin","beginning","believe","belongs","between","blank","brainstorm","brainstorming","branch","bunch","capturing","categorized","central","change","children","churning","clarify","clicking","closer","comes","common","completely","completeness","computer","conducive","connected","constantly","container","contents","contiguous","created","creating","dealt","decide","decisions","deepest","define","defunct","development","dictate","disorganized","easily","entered","everything","expanded","external","faster","favorite","files","finite","first","flickers","floating","focus","focuses","gather","going","great","group","grouped","groupings","groups","happen","helped","ithoughts","ithoughtsx","ideas","imperative","initial","items","keyboard","later","letting","level","makes","malleable","manipulate","mapping","materialized","mdash","method","mouse","multiple","navigate","nodes","nothing","often","organization","organizing","outlier","outliers","outliner","overall","paper","paramount","parent","pondering","portion","process","project","purists","putting","questions","quickly","random","reassess","record","related","rolling","rsquo","satisfactory","scopes","selected","selecting","separate","share","shortcuts","shows","single","sorted","spatially","speed","spill","spots","squeeze","starting","strategy","strike","superpower","surface","tablet","takes","taking","techniques","themselves","thinking","thoughts","today","tools","topic","translation","typing","under","unrelated","using","usually","whatever","where","while","whole","within","working"]
	},{
		"title": "Sponsor: Get productive with TextExpander",
		"url": "/2020/01/02/sponsor-get-productive-with-textexpander/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Jan 2<span>nd</span>, 2020",
		"ts": "1577966400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Unlock your productivity with TextExpander. Manage everything you type repetitively: email addresses, phone numbers, common message replies, and more, keeping them all available with just a couple of keystrokes. TextExpander works everywhere you type, including word processors, email and messaging apps, and online forms. Customize your snippets with fill-in fields and pop-up lists, allowing every snippet to be dynamic and reusable in a multitude of circumstances. TextExpander is available for macOS, Windows, Chrome, iPhone and iPad, and if you manage snippets for your company, check out TextExpander for Teams. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["smile","textexpander","brettterpstra","chrome","customize","teams","textexpander","thanks","unlock","visit","windows","addresses","allowing","available","check","circumstances","common","company","couple","dynamic","email","everything","everywhere","fields","first","forms","iphone","including","keeping","keystrokes","learn","lists","macos","message","messaging","multitude","numbers","online","phone","processors","productivity","readers","repetitively","replies","reusable","snippet","snippets","sponsoring","textexpander","works"]
	},{
		"title": "Brett's Favorites 2019",
		"url": "/2019/12/30/bretts-favorites-2019/",
		"tags": ["appreview","hardware","macos","markdown","setapp","tools"],
		"date": "Dec 30<span>th</span>, 2019",
		"ts": "1577714400",
		"summary": "Looking back at last year&rsquo;s picks, almost every one of them is still in regular use. I&rsquo;ll skip repeating most items from that list this time, with the exception of apps that had notable updates in 2019. I do recommend taking a look back, though! As always, this is not a complete list of everything I&rsquo;ve loved this year. It&rsquo;s an incomplete list of things that got a lot of use or remained top-of-mind all the way through December. I&rsquo;ll start with my favorites from my own projects this year. A lot of my time was dedicated to Marked 2 and the upcoming nvUltra, but I still found time for a few labors of love. Bunch My little batch app launcher was created this year and got a lot of early-morning love. Launch and close \"contexts\" with groups of apps, do not disturb and desktop settings, and lots of scripting/automation capabilities. mdless A nontrivial amount of time went into improving my tool for previewing markdown files from the command line this year, too. howzit I created this tool to help me keep track of various build systems and task runners across disparate projects. It&rsquo;s quickly become a vital tool for me. iTextEditors The big chart of iOS text editors continued to change, with both losses and new additions. SearchLink I&rsquo;ve been talking about this utility for searching and linking in Markdown files a bit lately, and I&rsquo;ll say it again: most useful tool I&rsquo;ve ever written. Gather Ok, this one was written in 2012 and hasn&rsquo;t really been updated since then, but it still works. It&rsquo;s an app version of the Marky the Markdownifier concept. Until I get around to doing some repairs on Marky, this is one of my most reliable ways to convert web pages into Markdown. Sanebox I can’t say enough good things about SaneBox. The reason my email is, well, sane is because Sanebox keeps everything except the most important emails out of my inbox, easily and automatically sorting everything into folders of decreasing importance for my later review (or not, in a lot of cases). Fathom I’ve completely switched this site over from Google Analytics to Fathom, which does zero tracking while still providing me with the analytics I need for my hand-picked advertisers. Your privacy as a BrettTerpstra.com reader remains a top priority. Setapp Ok, I&rsquo;ll repeat this one from last year because they&rsquo;ve added a bunch of new apps and, if you&rsquo;ve panned it in the past, it&hellip;",
		"keywords": ["amazon","hardware","software","acorn","acrylic","adapter","affinity","amazon","analytics","anker","audio","bettertouchtool","brettterpstra","bunch","caldigit","catalina","check","cleanmymac","color","cover","designer","display","displayport","drafts","dropzone","ebdlva","ethernet","fathom","filepane","finder","forklift","gaffer","gafferpower","gather","ghostnote","gifox","gigabit","google","hacking","honorable","houdahspot","integrated","ioppl","keyboard","launch","lifehacker","looking","macbook","mailmate","markdown","markdownifier","marked","marky","mindnode","mount","mounts","multiple","oyoco","optical","outlet","permute","photo","plate","portable","projects","pushcut","qswwp","qjthpc","rkodvk","recent","regexrx","rolls","sanebox","sanebox","screenflow","searchlink","services","setapp","shortcuts","sketch","software","soundsource","special","spender","startech","stereo","strip","studio","tessan","tangentially","taskpaper","textexpander","thunderbolt","timing","travel","ultimate","wallet","writer","ability","accessory","acorn","across","added","additions","adjustable","advertisers","affinity","again","allows","almost","amazing","among","amount","analytics","animated","apple","applications","automate","automatically","automation","available","awesome","batch","because","bestof","bretts","brettterpstra","brings","build","bunch","cables","capabilities","change","changes","charge","charging","chart","choice","class","close","clunky","cocoa","color","command","completely","concept","conductor","connect","constant","contexts","continued","convert","cords","couch","created","creation","death","decreasing","dedicated","designer","desktop","devices","discover","disparate","display","disturb","doesn","doing","downstream","drafts","easily","ecstatic","editor","editors","email","emails","enough","entire","ergonomically","especially","events","everything","except","exception","expanding","exports","expression","extension","external","faster","favorite","favorites","features","figured","files","filtering","floor","folders","folding","folivora","found","freron","friendly"]
	},{
		"title": "Memories post-scrapbook, pre-Facebook",
		"url": "/2019/12/27/memories-post-scrapbook-pre-facebook/",
		"tags": ["email","facebook","history","personal","travel"],
		"date": "Dec 27<span>th</span>, 2019",
		"ts": "1577455200",
		"summary": "I recently stumbled upon a web project from about 17 years ago that really put into perspective how far certain technologies have come in the last couple of decades. The project was a travel \"blog\" for my younger brother, Wesley, who was on a long walk&hellip; The year was 2003 and Wesley had decided to walk from Savannah, Georgia, to Winona, Minnesota. We wanted to be able to keep friends and family apprised of his adventures as he went. \"So,\" you&rsquo;re thinking, \"maybe a dedicated Facebook page, or perhaps a travel blog he could update on the go?\" How quickly we forget what life was like in the early aughts. It took some remembering for me, at least. Smartphones were not a thing (pagers were still a thing). PDAs were a thing, but barely useful in a case like this. WordPress was not a thing (though it would be launched later that year). Facebook was not a thing &mdash; even MySpace wasn&rsquo;t a thing quite yet. So we came up with a solution that seemed pretty cutting edge at the time. Hell, it probably was. We found a device called the PocketMail. It was the first mobile email device to hit the mass market. It had an acoustic coupler built in which, when held up to a regular phone, could send emails directly. This made it possible for Wes to send emails from the road as long as he had a quarter for the payphone. Yes, payphones were still prevalent. So Wesley would send me his daily journal entries via email, and I would drop them into a static web page. I don&rsquo;t recall exactly how the pages were created, but looking at the source code I have to assume I was doing it in Dreamweaver. Tables as layout, font tags, inline styles &mdash; it serves as a wonderful example of why semantic, standards-based web design eventually had to take root. I&rsquo;m sure it was IE6 compatible, and Netscape was still a thing. Each entry got a date and a location with a link to MapQuest. (MapQuest was still a thing, Google Maps was not, yet.) Entries were archived by week, sometimes with editorial notes (and the occasional animated GIF) from me. But none of this was structured data, just table cells containing the metadata and paragraphs of text. There was no linking to specific days, no search, no way to sort the entries. But the travel log was there, and the pages still work today (fortunately, and perhaps surprisingly). It was a grand adventure, an impressive feat, and fascinating to read about as it happened. I&rsquo;ll probably turn the whole thing&hellip;",
		"keywords": ["adobe","adventure","dreamweaver","either","entries","explorer","facebook","georgia","google","great","internet","mapquest","memories","minnesota","myspace","netscape","pocketmail","savannah","smartphones","tables","wesley","winona","wordpress","acoustic","adventure","adventures","animated","apprised","archived","archiving","assume","aughts","backlink","barely","based","between","brettterpstra","brother","built","called","catalogued","cells","certain","class","compatible","consistent","containing","convert","couple","coupler","created","cutting","daily","decades","decided","dedicated","design","device","directly","doing","editorial","email","emails","endnotes","enough","entries","entry","eventually","everyone","everything","example","family","fascinating","first","fnref","footnote","footnotes","forget","format","fortunately","found","friends","fullmap","grand","guarantee","happened","height","hellip","https","image","impressive","inline","journal","later","launched","layout","ldquo","linking","loading","location","looking","market","maybe","mdash","media","memories","metadata","minute","mobile","montage","mother","noscript","noteref","notes","occasional","original","pagers","pages","paragraphs","parse","payphone","payphones","perhaps","perspective","phone","picture","pocketmail","possible","prevalent","print","project","quarter","quickly","rdquo","recall","recently","recording","regular","remembering","resist","reversefootnote","rsquo","scrap","scrapbooked","scrapbooking","search","seemed","semantic","serves","share","solution","sometimes","source","specific","srcset","standards","stateline","static","structured","stumbled","styles","surprisingly","table","technologies","thinking","title","today","travel","uploads","useful","version","wanted","wesley","where","whole","width","wikipedia","wonderful","years","younger"]
	},{
		"title": "SearchLink: Next Steps",
		"url": "/2019/12/23/searchlink-next-steps/",
		"tags": ["comments","markdown","search","searchlink","service"],
		"date": "Dec 23<span>rd</span>, 2019",
		"ts": "1577124000",
		"summary": "More from \"SearchLink Tips\" SearchLink -- better searches, better results 2023/01/16 SearchLink -- browser history, bookmarks, and Pinboard 2023/01/16 SearchLink: Checking your work 2020/01/08 SearchLink: Next Steps 2019/12/23 SearchLink Basics 2019/12/16 Continuing on from the previous SearchLink Basics post, this one will cover custom site searches and setting up a default configuration. In brief, a custom search is simply a site-specific search performed using Google or DuckDuckGo with search parameters that include . There are some other variations available, but that&rsquo;s the essence of a custom search. You can access this type of search on the fly by just using a domain name instead of a search abbreviation in a search. For example, running the following search will search for searchlink on this site only: However, if there are site searches you use often, it would be worth having an abbreviation, right? That&rsquo;s where a configuration file comes in. As mentioned in the previous post, you can see a list of all available searches by selecting just the word and running SearchLink. At the bottom of this list you&rsquo;ll see a section called \"Custom Searches.\" This comes pre-populated with a selection of example searches, but you can add your own by editing a configuration file. The first time you run SearchLink, it creates a hidden configuration file in your home directory called . If you know your way around Terminal at all it should be easy enough to edit this file. If you&rsquo;re not a command line person, you&rsquo;ll want to do this from Finder: Open your user folder in Finder using Go->Home or just typing ⇧⌘H (Shift-Command-H) Show invisible files by typing ⇧⌘. (Shift-Command-Period) Locate in the file listing (it will be visible but greyed out) Right click on and choose Open In&hellip; Select TextEdit (or your preferred text editor) The configuration file is fully commented (lines beginning with ), explaining what each option does, so I won&rsquo;t go line-by-line here. Feel free to set your default options as desired. The format is YAML, which for the most part just means that the options are specified as a key and a value separated by a colon. The exception is arrays, which includes the section. This consists of an indented list following the key. You can just edit and continue the existing examples, maintaining the formatting that&rsquo;s already there. A basic site search is just an&hellip;",
		"keywords": ["actions","macos","quick","services","writing","abbreviations","basics","checking","command","continuing","conversely","custom","document","duckduckgo","errors","finder","flags","google","however","inserting","multimarkdown","multiple","options","pinboard","prefix","remember","right","searchlink","searches","shift","steps","terminal","textedit","using","abbreviated","abbreviation","abbreviations","access","accurate","aforementioned","allow","allowing","allows","alone","arrays","available","avoid","basic","basics","basis","beginning","bookmarks","bottom","bracket","brettterpstra","brief","browser","called","cased","check","checking","choose","class","click","colon","comes","command","comment","commented","complicated","configuration","consisting","consists","continue","country","cover","covered","create","created","creates","custom","customsite","datetime","debug","default","define","defining","definition","desired","directly","directory","disable","document","doesn","domain","double","easily","editing","editor","enabled","enough","entire","errors","escaped","especially","essence","example","examples","exception","exists","explaining","false","familiar","featured","features","files","first","flags","flexible","folder","format","formatted","formatting","fully","greyed","having","height","hellip","hidden","highlight","highlighter","history","https","hyphen","ignore","image","included","includes","including","indented","inline","inserted","installment","instapaper","intuitive","invisible","kindred","language","latter","ldquo","letter","letters","links","listing","loading","looking","lower","lowercase","maintaining","markdown","markup","media","mentioned","messed","metadata","misspelled","negate","negative","nerds","noscript","notification","often","options","original","output","override","overzealous","parameters","performed","person","picture","pinboard","plaintext","populated","positive","posts","preferred","prefix","prefixing","project","projects","protocol","quickly","random","rdquo","recall","resulting","results","return","returned","right","rouge","rsquo","running","search"]
	},{
		"title": "PDF better with PDFpen",
		"url": "/2019/12/19/pdf-better-with-pdfpen/",
		"tags": ["sponsor","tools"],
		"date": "Dec 19<span>th</span>, 2019",
		"ts": "1576760400",
		"summary": "Thanks to PDFpen and PDFpenPro for sponsoring BrettTerpstra.com this week! PDFpen 11 is the ultimate tool for editing PDFs on the Mac, and the latest update lets you easily edit the content in table cells &mdash; change the type face, font size, and other text formatting with PDFpen&rsquo;s Font Bar. Smile&rsquo;s Jeff Gamet put together a great video showing off all of the new PDFpen 11 features. Among its myriad capabilities, PDFpen includes a precision edit tool, OCR tools, and you can add, edit, or remove images from your documents. If you work with PDFs, don&rsquo;t miss out on the power that PDFpen and PDFpenPro can bring to your workflow. PDFpen for Mac supports macOS Catalina, and PDFpen for iPad & iPhone is iOS 13-ready",
		"keywords": ["pdfpen","smile","among","brettterpstra","catalina","gamet","pdfpen","pdfpenpro","smile","software","thanks","visit","bring","capabilities","cells","change","content","documents","easily","editing","features","formatting","great","iphone","images","includes","latest","learn","macos","mdash","myriad","precision","ready","remove","rsquo","showing","sponsoring","supports","table","together","tools","ultimate","video","workflow"]
	},{
		"title": "tm: wrapper for tmux, redux (with Fish tab completion)",
		"url": "/2019/12/17/tm-wrapper-for-tmux-redux-with-fish-tab-completion/",
		"tags": ["scripting","terminal"],
		"date": "Dec 17<span>th</span>, 2019",
		"ts": "1576591200",
		"summary": "Back in 2014 I wrote a Bash script called that made creating and connecting to tmux sessions and windows a bit easier. I&rsquo;ve been using it ever since, pretty much daily, with a few revisions. I thought it was probably about time I shared the updates. Here&rsquo;s what&rsquo;s new: There are probably other little changes I made along the way, but that&rsquo;s what I gathered from a quick diff. The updated script can be found in this gist. is written in Bash, but works fine in other shells with the hashbang. So in Fish, for example, I just make sure that the script is saved as , is executable, and is located in my . When I first published it, I included some bash completion scripts. I&rsquo;ve added a Fish completion script that you can install in . Once installed, you can type it will complete from all open sessions, and running will complete windows for the named session (including indexes for unnamed windows). Nifty",
		"keywords": ["multiplex","allow","create","nifty","replace","running","added","argument","arguments","available","bunch","called","changes","connecting","create","creating","daily","easier","error","example","executable","first","found","gathered","gracefully","hashbang","included","including","index","indexed","indexes","insensitive","install","installed","little","located","match","matching","menus","named","numeric","params","passed","published","quick","quickly","recap","revisions","rsquo","running","saved","script","scripts","second","session","sessions","shared","shells","since","thought","unnamed","updated","updates","using","window","windows","within","works","written","wrote"]
	},{
		"title": "SearchLink Basics",
		"url": "/2019/12/16/searchlink-basics/",
		"tags": ["blogging","markdown","productivity","search","searchlink","service","shortcuts","tools","writing"],
		"date": "Dec 16<span>th</span>, 2019",
		"ts": "1576528620",
		"summary": "More from \"SearchLink Tips\" SearchLink -- better searches, better results 2023/01/16 SearchLink -- browser history, bookmarks, and Pinboard 2023/01/16 SearchLink: Checking your work 2020/01/08 SearchLink: Next Steps 2019/12/23 SearchLink Basics 2019/12/16 I say this pretty often, but I think that SearchLink is one of the most useful tools I&rsquo;ve ever created. Yes, even more useful than Marked 21. Well, within its very specific scope of utility, anyway. So I thought a post or two on how best to use SearchLink might be in order, starting with the basics. If you&rsquo;ve never heard of SearchLink (or maybe heard of but never tried), it&rsquo;s a tool for people who write in Markdown and use links. Whether you&rsquo;re blogging, writing podcast show notes, writing web-based documentation&hellip; if you add links to your markdown text, SearchLink is for you. Normally, you&rsquo;d switch to your web browser, search for the link you want, open it, copy the link from the url bar, switch back to your document, type in the Markdown syntax for the link, and paste in the url. SearchLink cuts that down to \"select text, hit shortcut.\" The first step, of course, is to install SearchLink. Simply download it from the main project page, unzip it, and double-click the files to install them as \"Quick Actions\" (nee Services). SearchLink is now available in the menu whenever you select text and right click it. You&rsquo;ll almost certainly want to assign a keyboard shortcut to SearchLink and save yourself a bunch of selecting with the mouse, right clicking, and scanning contextual menus for the tool. To add a shortcut, open System Preferences and go to Keyboard->Shortcuts and select Services2 in the left pane. Locate SearchLink (under the Text category) and click on the right side to assign a shortcut. This can be any key combination you like. I use ⌃⇧L (Control-Shift-L), personally. Aaron Dowd made a great intro video that covers all of the above steps. If you prefer watching to reading, I recommend checking it out. At its most basic, SearchLink requires nothing but selecting text and typing your shortcut. Doing this runs a general web search for the text and inserts the top result as a Markdown link. Say you&rsquo;re writing about an Apple product and you want to link to the product page. Just select the product name and type your shortcut: The next level of power comes from bang searches. Using this basic \"naked\" syntax, you can precede any text with an&hellip;",
		"keywords": ["actions","macos","quick","services","writing","aaron","actions","amazon","apple","bangs","basic","basics","because","brett","brettterpstra","catalina","check","checking","control","curio","doing","duckduckgo","error","google","installing","keyboard","markdown","marked","markup","normally","pinboard","preferences","quick","searchlink","services","shift","shortcuts","simply","steps","super","system","terpstra","usage","using","where","zengobi","above","accurate","album","almost","amalb","amart","amazonsearch","animated","anyway","append","apple","areas","artist","assign","augment","available","avoiding","backlink","bangs","based","basic","basics","benefit","blogging","bookmarks","brackets","brettterpstra","browser","bunch","caption","category","certainly","change","checking","class","click","clicking","combination","comes","comments","completely","consider","considered","consistent","contextual","control","covers","create","created","curio","datetime","decide","default","development","different","document","donate","donation","double","download","empty","endnotes","entirely","example","exclamation","feature","figure","files","finished","first","fnref","footnote","footnotes","frame","general","generic","giving","great","grouplink","heard","height","hellip","helps","highlight","highlighter","history","honestly","https","ithoughtsx","ignore","image","implementation","included","including","incorrect","indispensable","inserts","inside","install","installing","instapaper","intro","ithoughtsx","keyboard","keystrokes","keywords","language","later","ldquo","leave","letters","level","linked","linking","links","loading","looks","making","markdown","marked","markers","markup","maybe","media","menus","mindmap","missed","mouse","music","naked","nakedlinking","noscript","noteref","notes","nothing","occurred","often","opening","optional","original","paragraph","parentheses","parenthesis","paste","people","perhaps","personally","picture","pinboard","plaintext","pledging","podcast","point","posts","precede","prefer","product","project","projects"]
	},{
		"title": "Sponsor: MacUpdater - Effortlessly keep all your apps updated",
		"url": "/2019/12/05/sponsor-macupdater-effortlessly-keep-all-your-apps-updated/",
		"tags": ["sponsor"],
		"date": "Dec 5<span>th</span>, 2019",
		"ts": "1575554400",
		"summary": "Thanks to MacUpdater for sponsoring BrettTerpstra.com again this week! I&rsquo;m a satisfied customer myself! MacUpdater can silently run in the background, checking your apps for updates every day, and letting you know with a notification once a new update for any installed app is available. MacUpdater currently detects updates for over 35,000 apps and can automatically update more than 5,000 popular apps with a single click. After launching MacUpdater you&rsquo;ll see a list of all your apps. Apps with available updates are listed in red, apps that are up-to-date are listed in green. There are filter-options to display just outdated apps or ignore apps from being updated. Furthermore, you can automatically backup apps before updating or make safety-backups of downloaded updates. MacUpdater is permanently free for discovering updates for your apps. Updating more than 10 apps requires a one-time-purchase - no subscription or even registration is needed. All BrettTerpstra.com readers get 10% off by using the BRETTTERPSTRA coupon-code during purchase. Ready to get started? Head to www.macupdater.net for more information and to download the free trial",
		"keywords": ["software","brettterpstra","brettterpstra","macupdater","ready","sponsored","syndicate","thanks","updating","again","automatically","available","background","backup","backups","before","checking","click","coupon","customer","detects","discovering","display","download","downloaded","filter","green","ignore","information","installed","latest","launching","letting","listed","macupdater","myself","needed","notification","options","outdated","permanently","popular","readers","registration","requires","rsquo","safety","satisfied","silently","simple","single","sponsoring","started","subscription","trial","updated","updates","updating","using","versions"]
	},{
		"title": "Web Excursions for December 04, 2019",
		"url": "/2019/12/04/web-excursions-for-december-04-2019/",
		"tags": ["bookmarks"],
		"date": "Dec 4<span>th</span>, 2019",
		"ts": "1575480000",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Zenia - Your personal yoga assistant AI meets yoga. Uses the front camera of your iPhone (nothing recorded or sent to server) to provide real-time feedback on your poses. I tested this out, it&rsquo;s pretty impressive and I&rsquo;ll be interested to watch it expand. Clicker for Disney+ Another one from the \"Clicker for X\" developers, this time for Disney+. This one is free, though I haven&rsquo;t tested it myself as I&rsquo;m not currently subscribing to Disney+. Bookly A crowd-sourced library for your organization, in Slack. Like inter-library loans, but for your friends&rsquo; and coworkers&rsquo; personal book collections. Naker.Form An interactive animation combined with your web form to gamify form completion. I dig it. StarTech Thunderbolt 3 to Thunderbolt 2 Adapter I recently upgraded from an older MacBook Pro to a newer, Thunderbolt 3-only MBP. I had a great setup with a TB2 dock and everything running through a single Thunderbolt port, and I was able to port that entire setup with this one $80 dongle. (I&rsquo;ll admit, I eventually went for a TB3 dock, but this absolutely did the trick and made that investment entirely optional.) Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["books","thunderbolt","webdesign","adapter","another","bookly","check","clicker","disney","macbook","mindmeister","naker","slack","startech","thunderbolt","zenia","admit","animation","assistant","boosting","brainstorming","brought","camera","collaborating","collaborative","collections","coworkers","crowd","developers","dongle","entire","entirely","eventually","everything","excursions","expand","feedback","friends","front","gamify","great","haven","iphone","impressive","inter","interactive","interested","investment","library","loans","mapping","meets","myself","newer","nothing","older","optional","organization","partnership","personal","poses","productivity","recently","recorded","rsquo","running","server","setup","single","software","sourced","subscribing","tested","through","trick","upgraded","watch"]
	},{
		"title": "Sponsor: Free yourself from digital surveillance with IVPN",
		"url": "/2019/11/28/free-yourself-from-digital-surveillance-with-ivpn/",
		"tags": ["sponsor"],
		"date": "Nov 28<span>th</span>, 2019",
		"ts": "1574942400",
		"summary": "Thanks to IVPN for sponsoring BrettTerpstra.com this week! Your digital life is under constant surveillance: from social networks, data brokers, ad companies and others looking to extract data from your actions. This is the reality of the digital age &mdash; unless you&rsquo;re ready to resist and fight back. IVPN was built by a team of security experts and privacy activists as a tool of resistance against constant online monitoring. When using IVPN on your personal devices, an encrypted tunnel prevents the logging of your browsing history, while web trackers and ads stop following you around. IVPN was the first VPN provider to integrate the WireGuard protocol to their Android, Windows, macOS and iOS apps, helping you achieve lightning-fast connection speeds with their service on any platform. Unlike most mainstream VPN providers, they have strong ethical standards and reject personally targeted advertising, paid reviews and misleading affiliates. Join us in taking a stand against surveillance with a free, no-obligations trial",
		"keywords": ["privacy","android","brettterpstra","sponsored","syndicate","thanks","unlike","windows","wireguard","achieve","actions","activists","advertising","affiliates","against","brokers","browsing","built","companies","constant","devices","digital","encrypted","ethical","experts","extract","fight","first","helping","history","integrate","lightning","logging","looking","macos","mainstream","mdash","misleading","monitoring","networks","obligations","online","others","personal","personally","platform","prevents","privacy","protocol","provider","providers","ready","reality","reject","resist","resistance","reviews","rsquo","security","service","social","speeds","sponsoring","stand","standards","strong","surveillance","taking","targeted","trackers","trial","tunnel","under","using","while"]
	},{
		"title": "Web Excursions for November 27, 2019",
		"url": "/2019/11/27/web-excursions-for-november-27-2019/",
		"tags": ["bookmarks"],
		"date": "Nov 27<span>th</span>, 2019",
		"ts": "1574881200",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Indieweb Webmentions on Middleman or Jekyll I was having a Twitter conversation with @evantravers about his own experiments with Fish, and later noticed that our conversation had shown up as comments on his blog post. Which was awesome, and I wanted to know how it happened. He was kind enough to share his experiments with IndieWeb, Bridgy, and all the technologies that stick it all together for his static site. Notenik An intriguing, open-source notes app. It uses Markdown with mmd-metadata-style \"fields\", and has a whole template and scripting language for filtering and output. If you&rsquo;re looking for a scriptable notes solution, this might be worth checking out. Triangle - Better Web Type If you can&rsquo;t enjoy a game based around typographic perfection, this is not for you. GNU Direvent A file-watcher with a lot of options and event granularity. There is a boatload of options for watching a directory for changes and executing a command, but if the others aren&rsquo;t doing what you&rsquo;re looking for, check direvent out. Oh, and by the way, it&rsquo;s really good to see OneThingWell back at it (via). MakeEmoji A tool for creating custom animated emoji for Slack and Discord. Upload a photo and download various animations of it, ready for upload to Slack (or Discord). My red, floating head :brett-angry: one is going to come in handy eventually, though :brett-dance: will find more use, I&rsquo;m sure",
		"keywords": ["emoji","indieweb","typography","bridgy","cleanmymac","direvent","discord","indieweb","indieweb","jekyll","makeemoji","markdown","middleman","notenik","onethingwell","slack","triangle","twitter","upload","webmentions","angry","animated","animations","awesome","based","boatload","brett","brought","changes","check","checking","command","comments","conversation","creating","custom","dance","directory","direvent","doing","download","emoji","enjoy","enough","evantravers","eventually","excursions","executing","experiments","fields","filtering","floating","going","granularity","handy","happened","having","intriguing","language","later","looking","metadata","notes","noticed","options","others","output","partnership","perfection","photo","ready","rsquo","scriptable","scripting","share","shown","solution","source","speed","static","stick","style","technologies","template","together","tools","typographic","upload","various","wanted","watcher","watching","whole","worth"]
	},{
		"title": "All my Fish functions",
		"url": "/2019/11/25/all-my-fish-functions/",
		"tags": ["scripting","shell","terminal"],
		"date": "Nov 25<span>th</span>, 2019",
		"ts": "1574703660",
		"summary": "I think I&rsquo;ve wrapped up my conversion to Fish for the time being. I can honestly say that now that I&rsquo;m past the tinkering phase, I&rsquo;m more productive in Fish than I was in Bash. Which is no small claim, I was pretty good at Bash. In the process of the transition I created quite a collection of functions and completion scripts, so I figured I&rsquo;d make them available on the off chance that someone else is taking the same journey and/or is curious. The full collection is up on GitHub, with descriptions of all the folders and every function. I diligently added a to every function in the source, then wrote a script to list them all with their descriptions. That script is in the repo, too. Most of these came from my Bash setup, some even saw some improvements over their predecessors. You&rsquo;ll even recognize some of them from my Shell Tricks posts. There are a few highlights: All of the files in go in the auto-load folder, so none of them actually have to sit in memory while you&rsquo;re using the shell. Lots of functions, little consequence. All of the app shortcuts (Acorn, TaskPaper, Tower, etc.) have completion commands that work very nicely. These are located in the directory, which is also auto-loaded. The command handles deep creation of intermediate directories () and asks if you want to into the final target after it&rsquo;s run. The prompt takes a single key (y/n) and can be dismissed with return. While there are some downsides, I generally like Fish&rsquo;s command. There&rsquo;s a bash folder with some of my more involved bash scripts that I&rsquo;ve been successfully running from Fish without issue. , , , etc. A smart shadow function that uses except when it&rsquo;s a Markdown file, in which case it uses mdless. The command is pretty sweet for jumping deep into a directory tree with fuzzy matching (and selection when there are multiple matches) takes search and replace arguments to fix up the last command you ran. re-runs the last command and copies the output to the clipboard I ported , , my horizontal rule functions, aspell tools, and more. Plus a slew of little math utilities like , , and . If you&rsquo;re just starting to play around with Fish, this should be a great way to see what&rsquo;s possible and get started with porting your own setup. If you&rsquo;re a long-time Fish user, you&rsquo;ll probably be able to tell me where all I went wrong (which I&rsquo;m totally open to), but maybe you&&hellip;",
		"keywords": ["functions","scripting","acorn","check","github","markdown","shell","taskpaper","tower","tricks","while","added","arguments","aspell","available","chance","claim","clipboard","collection","command","commands","conversion","copies","created","creation","curious","descriptions","diligently","directories","directory","dismissed","downsides","except","figured","files","folder","folders","function","functions","fuzzy","generally","github","great","handles","highlights","honestly","horizontal","improvements","inspiration","intermediate","involved","journey","jumping","little","loaded","located","matches","matching","maybe","mdless","memory","multiple","nicely","output","phase","ported","porting","possible","posts","predecessors","process","productive","prompt","recognize","replace","return","rsquo","running","script","scripts","search","selection","setup","shadow","shell","shortcuts","single","small","smart","source","started","starting","successfully","takes","taking","target","think","tinkering","tools","totally","transition","ttscoff","using","utilities","where","while","wrapped","wrong","wrote"]
	},{
		"title": "iTerm and the Find pasteboard",
		"url": "/2019/11/22/iterm-and-the-find-pasteboard/",
		"tags": ["scripting","search","terminal"],
		"date": "Nov 22<span>nd</span>, 2019",
		"ts": "1574440200",
		"summary": "Here&rsquo;s another cool iTerm 2 trick: you can directly affect the system-wide Find pasteboard using escape codes. The reason I got excited about this is that I&rsquo;m used to having any search I run in one place (with ⌘F) automatically populate in other apps via the universal find pasteboard. The most notable time that this doesn&rsquo;t work is when the search I was running was on the command line using , , or the like. Obviously, right? But what if a could set the search field in other apps? Among the many special escape codes that iTerm recognizes is the command. This command takes any text output after it, up to an command, and applies it to the clipboard. You can use a named clipboard to affect the rule, find, or font clipboards (blank to affect general clipboard). In this case we&rsquo;re targeting the \"find\" clipboard, so the command is . So here&rsquo;s my solution (for now). It&rsquo;s not perfect as I can&rsquo;t suppress the output and still have it work, so it just fades it to black before it outputs the text destined for the clipboard. This example is for (silver searcher) in my Fish shell: (I did the same for , but got tripped up when I tried to do it for . It caused errors with RVM that I wasn&rsquo;t able to track down. That&rsquo;s ok, I rarely use grep directly.) Because the meat of this is just a printf/echo command with the escape sequence, this is easily adapted to other shells (see below for a bash/zsh version). It simply takes the first argument from the command line and echos it through iTerm&rsquo;s \"CopyToClipboard\" command, then runs the utility itself, in this case , using to skip any functions or aliases of the same name (like this current one, for example). Now if I run in a folder, \"pandoc\" shows up in my search field in iTerm so I can quickly ⌘G through the results, and when I switch over to my editor, it shows up there as soon as I hit ⌘F. Slick",
		"keywords": ["escape","iterm","sequence","among","black","because","copytoclipboard","defined","endcopy","escape","feeling","function","reset","silver","slick","surfer","adapted","agfindpasteboard","aliases","another","applies","argument","automatically","before","below","black","blank","brettterpstra","caused","class","clipboard","clipboards","codes","color","command","config","defaults","destined","directly","doesn","easily","echos","editor","errors","escape","example","excited","fades","feeling","field","first","folder","function","functions","general","ggreer","github","having","height","highlight","highlighter","https","iterm","ignore","image","iterm","itself","language","ldquo","loading","local","longshadow","media","named","normal","noscript","notable","original","output","outputs","pandoc","pasteboard","picture","plaintext","populate","printf","quickly","rarely","rdquo","recognizes","results","right","rouge","rsquo","running","sfind","search","searcher","sequence","shell","shells","shows","silver","simply","smart","solution","source","special","srcset","suppress","switch","system","takes","targeting","terminal","through","title","track","trick","tried","tripped","universal","uploads","using","utility","version","width"]
	},{
		"title": "Using howzit as a task runner",
		"url": "/2019/11/20/using-howzit-as-a-task-runner/",
		"tags": ["howzit"],
		"date": "Nov 20<span>th</span>, 2019",
		"ts": "1574258400",
		"summary": "I&rsquo;ve become fairly dependent on howzit for running my builds and deploys (and other tasks). By setting up a file for each project, containing lines for each section, I can always run to build or deploy, no matter what task runner/build system I set up for it. , , , , , , it doesn&rsquo;t matter. I can get the right build command every time without a second thought. As a shortcut, I have a function called that runs with a default argument of \"build\" but accepting alternate arguments. In Bash that&rsquo;s as easy as , but in Fish I have to use my function: In the latest version of (published today), I added some new options for getting completion-compatible lists of sections. The switch does the same as (list all sections), but without color, header, or list markers. The and switches list all sections containing @run (or @copy, @open, etc.) directives that could be run with . The version makes the list verbose, showing exactly what each section will run, and gives you just a \"task list\", perfect for completion. The repository now includes some Fish tab-completion commands using these options. I haven&rsquo;t set them up for other shells yet, but all the ingredients are there now. Recently I got one of those fancy MacBook Pros with the Touch Bar. (Obviously I got it about a month before Apple announced the 16\" with the better keyboard, as would be my persistent luck.) Nonetheless, I&rsquo;ve been trying &mdash; really trying &mdash; to make that Touch Bar useful on the machine I have. BetterTouchTool is a hoot with it, but I think I finally found a use that&rsquo;s truly a time-saver. At least a little. It started when I found the \"touchrunner\" package for Fish that checks for a file when you switch into a directory, setting the function keys in the Touch Bar to any tasks listed there. Great if you do everything with (or ), but with I could make that universal. So I did. I&rsquo;m just showing it off here. I&rsquo;m happy to share the plugin (a hack of touchrunner) upon request, but given that it requires the very specific combination of iTerm, Fish, a Touch Bar Mac, and the use of howzit, it seems like a pretty narrow slice of audience to deal with packaging it for general use. Just a neat trick for now",
		"keywords": ["grunt","runner","apple","bettertouchtool","great","macbook","nonetheless","recently","shell","supplemental","touch","weird","accepting","added","alternate","announced","argument","arguments","audience","before","build","builds","called","checks","color","combination","command","commands","compatible","containing","default","dependent","deploy","deploys","directives","directory","doesn","everything","fairly","fancy","finally","found","function","general","getting","gives","happy","haven","header","howzit","iterm","includes","ingredients","keyboard","latest","listed","lists","little","machine","makes","markers","mdash","narrow","options","package","packaging","persistent","plugin","project","published","repository","requires","right","rsquo","runner","running","saver","second","section","sections","seems","setting","share","shells","shortcut","showing","slice","specific","started","switch","switches","system","tasks","think","thought","today","touchrunner","trick","truly","trying","universal","useful","using","verbose","version"]
	},{
		"title": "Forgiveness, peace, and productivity",
		"url": "/2019/11/19/forgiveness-peace-and-productivity/",
		"tags": ["personal","productivity"],
		"date": "Nov 19<span>th</span>, 2019",
		"ts": "1574195160",
		"summary": "The surest way for me to not get anything done is to get overwhelmed by the guilt of not getting anything done. I&rsquo;ve worked for years to solve this little quandary, and I&rsquo;ve found a key element in the solution: forgiveness. Forgiveness is something I&rsquo;ve gotten much better at in recent years. I&rsquo;ve never been one to hold grudges &mdash; I don&rsquo;t have the memory to pull that off &mdash; but I would get irate with people in the moment for all manner of perceived slights and infractions. Recently, my mantra has become \"everybody is doing their best.\" It&rsquo;s the idea that I don&rsquo;t know what this particular person is living with, what they&rsquo;re going through in their life, or what just happened to them the minute before. All I can do is believe that they&rsquo;re doing their best, and that puts me in a place of compassion. (It doesn&rsquo;t work quite as well when I interpret something to be intentionally malicious, but it&rsquo;s still better than interpreting everything as malicious.) You&rsquo;d think it would be easy enough to apply this same mantra to myself. I mean, of all people, I should know that I&rsquo;m doing my best. But I&rsquo;m always the first to disagree. I think I could have done better, that I could be doing better. My mind calls bullshit as soon as I try to show a little compassion to myself. But the fact is that I have Bipolar Disorder and ADHD, and consequently contend with addiction, anxiety, depression, insomnia, poor memory function, poor impulse control, poor focus, periods of listlessness, and sundry other mental health issues. Every day I very much am doing the best I can. No amount of anger at myself is going to make the circumstance any different. Some part of me believes that all that criticism is useful, that it&rsquo;s the only way I&rsquo;ll do better, but rationally I&rsquo;ve come to accept that it&rsquo;s not. It&rsquo;s neither useful nor productive. At all. I really am doing my best, and feeling bad about it is a counter-productive waste of time. There are two things that I find especially helpful. The first is just doing something. Breaking a task down so far that the first step is almost unavoidable. For example, I have trouble making phone calls, especially about important stuff like health insurance. The idea of the phone itself becomes a heavy weight as I wonder \"what&rsquo;s wrong with me, because seriously how hard is making a phone call?\" If I can forget about the&hellip;",
		"keywords": ["bipolar","health","illness","mental","bipolar","breaking","disorder","forgiveness","getting","recently","accept","accepted","addiction","again","almost","amount","anger","anxiety","apply","because","becomes","before","begin","believe","believes","break","bullshit","calls","change","cheering","circumstance","compassion","completely","contend","control","couldn","courage","criticism","daily","depression","dialing","different","disagree","doesn","doing","dragged","easier","easily","element","enough","entails","especially","everybody","everything","example","extreme","feeling","figuring","finally","first","focus","follows","forcing","forget","forgiven","forgiveness","forgiving","found","function","getting","going","gotten","grudges","guilt","happened","health","heavy","helpful","important","impulse","incantation","infractions","insomnia","insurance","intentionally","interpret","interpreting","irate","issues","itself","larger","light","listlessness","little","living","loops","making","malicious","mantra","mdash","memory","mental","minute","momentum","myself","negative","neither","normal","often","overwhelmed","overwhelming","particular","peace","people","perceived","periods","person","phone","possible","productive","productivity","quandary","rationally","reassess","recent","repeat","right","rsquo","second","seemed","seriously","shortcomings","slights","slowly","solution","solve","stuff","sudden","sundry","surest","tackle","taken","takes","think","through","toward","tries","trouble","unavoidable","uncertainty","useful","waste","weighing","weight","where","while","wonder","words","worked","wrong","years"]
	},{
		"title": "Sponsor: PDFpen 11, the ultimate tool for PDFs",
		"url": "/2019/11/14/sponsor-pdfpen-11-the-ultimate-tool-for-pdfs/",
		"tags": ["sponsor"],
		"date": "Nov 14<span>th</span>, 2019",
		"ts": "1573732800",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com again this week! PDFpen and PDFpenPro are your ultimate PDF viewing and editing apps for the Mac. You can add headers and footers, along with watermarks to your documents. It also includes a precision edit tool, plus you can OCR documents. Version 11 is available now with several great new features. PDFpen and PDFpenPro are macOS Catalina-ready. You&rsquo;ll still be able to view and edit your PDFs when you take the Catalina plunge. And on your iOS devices, PDFpen for iPad & iPhone supports iOS 13 and iPadOS 13, including Dark Mode, multiple windows, and more. Here&rsquo;s a video with new feature highlights for version 11. Learn more about PDFpen and PDFpenPro at smilesoftware.com/podcast",
		"keywords": ["pdfpen","smile","brettterpstra","catalina","learn","pdfpen","pdfpenpro","thanks","version","again","available","devices","documents","editing","feature","features","footers","great","headers","highlights","ipados","iphone","includes","including","macos","multiple","plunge","podcast","precision","ready","rsquo","several","smilesoftware","sponsoring","supports","ultimate","version","video","viewing","watermarks","windows"]
	},{
		"title": "Web Excursions for November 12, 2019",
		"url": "/2019/11/12/web-excursions-for-november-12-2019/",
		"tags": ["bookmarks","gestures"],
		"date": "Nov 12<span>th</span>, 2019",
		"ts": "1573589880",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. renameutils I&rsquo;m loving this tiny set of CLIs for renaming files. This links to the project page, but you can install them through Homebrew (). and open a list of target files in an editor, where you can rename them using whatever editor tools you need, and then save to apply the changes. and provide readline editing of a filename in place. Super handy. While you&rsquo;re at it, check out rename, also on Homebrew, for a pipeline approach, and the command from moreutils for another approach to the trick. Augmented Text Editing on Mobile: The New iOS 13 Gestures From the Ulysses blog but not Ulysses-specific, a rundown of new gestures for text editing on iOS 13. Did you know there are 3-finger pinch commands for copy, cut, and paste? I didn&rsquo;t. Clicker for Hulu I&rsquo;m a user of the Mac app Clicker for Netflix, and was happy to see that DBK Labs now has the same type of player for Hulu. It integrates native macOS features with the service&rsquo;s players, and include PIP and hacks for things like skipping the stupid mini-player that Hulu brings up when you close a show. Some interesting touch bar support, too. rhydlewis/search-omnifocus An Alfred workflow that allows free text searching of OmniFocus tasks and projects. A really nice example of Alfred&rsquo;s power. Now someone needs to make this for LaunchBar&hellip; How to display the size of an app&rsquo;s frontmost window Thanks to Rob Griffiths I now have a mouse gesture that shows me the pixel dimensions of whatever window I have in the foreground. Which is actually something I happened to need&hellip; Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["alfred","applescript","omnifocus","alfred","augmented","check","clicker","editing","gestures","griffiths","homebrew","launchbar","mindmeister","mobile","netflix","omnifocus","super","thanks","ulysses","while","allows","another","apply","approach","boosting","brainstorming","brings","brought","changes","check","close","collaborating","collaborative","command","commands","dimensions","display","editing","editor","example","excursions","features","filename","files","finger","foreground","frontmost","gesture","gestures","hacks","handy","happened","happy","hellip","install","integrates","interesting","links","loving","macos","mapping","moreutils","mouse","native","needs","omnifocus","partnership","paste","pinch","pipeline","pixel","player","players","productivity","project","projects","readline","rename","renameutils","renaming","rhydlewis","rsquo","rundown","search","searching","service","shows","skipping","software","specific","stupid","support","target","tasks","through","tools","touch","trick","using","whatever","where","window","workflow"]
	},{
		"title": "Fish: further exploration",
		"url": "/2019/11/11/fish-further-exploration/",
		"tags": ["extension","history","learning","prompt","scripting","shell","terminal","tools"],
		"date": "Nov 11<span>th</span>, 2019",
		"ts": "1573488000",
		"summary": "Over the past few months I&rsquo;ve been playing with Fish, the Friendly Interactive SHell, and I&rsquo;ve posted a couple of times on the topic. I think I&rsquo;m sold on it now, and you&rsquo;ll probably be seeing a lot more Fish posts than Bash ones (though I&rsquo;ll try to offer Bash equivalents when possible). So I&rsquo;ve officially &lsquo;d to and am 100% comfortable using it day to day. For the record, I did spend some time with Zsh as well, but it just didn&rsquo;t tickle the same fancy as Fish has for me. Here are some of my tips, tricks, and observations since my last post. I had originally been sticking with my Bash habits and defining all of my functions in files I sourced at login. But you don&rsquo;t have to store a bunch of functions in memory with Fish. It can load functions temporarily when they&rsquo;re needed. You just place a file in , titled with the same name as the main function, and with a extension. Ideally one \"main\" function per file, with any necessary helper functions/subcommands. For example, my Fish port of bid, my command for getting the bundle id of any installed app, exists at , so when I run , it loads the function automatically and returns . This is a great way to improve performance, and with tools like (edit or create any function) and (save any function from memory to your autoload folder), it&rsquo;s easy to gather all your odds and ends. It&rsquo;s also really obvious where a function is sourced from, you just grep the folder for the command name&hellip; although Fish&rsquo;s command (and ) do an excellent job of pointing you to exactly where just about any function is defined. In addition to , using the function with the switch automatically saves an autoload function for you. There&rsquo;s really no alias concept in Fish, it&rsquo;s just shorthand for functions. Using creates a function: Once created, you can always save it (and any function in memory) to your autoload folder with . But if you run instead (with the ), it will go ahead and finish the job in one step, creating and writing the aforementioned function to . iTerm marks for navigation, a highlighted path, ruby version, git branch and status, time stamp on the right side, special features when you&rsquo;re in an SSH session. When the previous command returns an error, the turns red and the error number is listed in red on the right side. The string commands are awesome. split, join, match, replace, trim, escape, and more. It&rsquo&hellip;",
		"keywords": ["friendly","interactive","shell","shelll","&#39;alias","abbreviations","anyway","applications","autoloading","because","binding","bindings","client","colors","cousin","creating","curio","defined","friendly","functions","ideally","interactive","macbook","preview","prompt","shell","speaking","terminal","textexpander","users","using","weird","abbreviations","accepts","added","aecccad","aforementioned","ahead","alias","aliases","allowing","although","another","assign","assigning","autcomplete","autoload","autoloading","automate","automatically","available","awesome","background","backward","badge","based","before","between","bindings","binds","branch","brettterpstra","bright","browser","buffer","built","bunch","bundle","capitalized","changing","character","class","codes","color","colors","comfortable","coming","command","commandline","commands","commit","completing","concept","config","configuration","configured","contain","content","couple","create","created","creates","creating","curio","cursor","custom","dangerous","default","defined","defining","deleting","description","desired","different","digit","directories","directory","display","displays","easier","either","element","embraces","enjoying","entire","environment","equivalents","error","errors","escape","example","excellent","exercise","exists","expand","experiments","exploration","exploring","extension","fairness","fancy","favorite","feature","features","figcaption","figure","filename","files","finish","first","fishexpheader","fishprompt","fishshell","folder","forth","fully","funced","funcsave","function","functions","fuzzy","gather","getting","github","githubusercontent","gotten","great","habits","headache","headless","height","hellip","helper","highlight","highlighted","highlighter","highlighting","history","hitting","hostname","house","https","iterm","image","improve","inject","installed","integration","intended","interested","isearch","iterm","keybinding","keybindings","language","ldquo","learned","learning","letter","light","listed","little","loaded","loading","loads","local","located","logged","login","looks","lsquo","machine","mainly","makes"]
	},{
		"title": "Hook 1.3",
		"url": "/2019/11/06/hook-1-dot-3/",
		"tags": ["hookmark","macos","productivity"],
		"date": "Nov 6<span>th</span>, 2019",
		"ts": "1573068120",
		"summary": "Hook is a productivity app from CogSci Apps that connects your files, emails, web urls, and other digital breadcrumbs to each other. I&rsquo;ve mentioned it here and there, but my most detailed writeup was at Lifehacker a little while back. Hook applies a principle from cognitive productivity: \"deep work requires rapidly re-accessing pertinent information without searching.\" Hook allows you to stay in flow by keeping all of your related resources a couple of keystrokes away, no matter what you&rsquo;re working on. The latest update to Hook (v1.3) brings a streamlined UI, reorganized menu commands (with more keyboard shortcuts), and the ability to navigate links without leaving the Hook window. You can check Hook out for free. BrettTerpstra.com readers who decide to dive into Hook Pro can use the coupon for 20% off the list price (which is currently $19, but will be going up to $24 soon!). To apply the coupon for a discount purchase of Hook, visit the checkout page. During the checkout process, which is mediated by Paddle.com (the merchant of record), there will be an \"Add Coupon\" link in small font below \"Your total is $&hellip;\". Tick the checkbox, and then enter the coupon code",
		"keywords": ["cognitive","cogsci","brettterpstra","cogsci","coupon","lifehacker","paddle","ability","accessing","allows","applies","apply","below","breadcrumbs","brings","check","checkbox","checkout","cognitive","commands","connects","couple","coupon","decide","detailed","digital","discount","emails","enter","files","going","hellip","information","keeping","keyboard","keystrokes","latest","leaving","links","little","mediated","mentioned","merchant","navigate","pertinent","price","principle","process","productivity","rapidly","readers","record","related","reorganized","requires","resources","rsquo","searching","shortcuts","small","streamlined","visit","while","window","working","writeup"]
	},{
		"title": "Howzit: Remember how what you work on works",
		"url": "/2019/10/23/howzit-remember-how-what-you-work-on-works/",
		"tags": ["howzit","productivity","terminal"],
		"date": "Oct 23<span>rd</span>, 2019",
		"ts": "1571835600",
		"summary": "Back in April I posted a short script for keeping track of the various build systems I use in my projects. You know when you open a directory you haven&rsquo;t worked on for a while and there&rsquo;s a Gulp file, a Rakefile, a node_modules folder, and various other cruft that means you&rsquo;ll have to dig through to recall what commands you were using to build and deploy the project? Or when you know there were specific flags you were using to get the build to work, but you never got around to automating them? It&rsquo;s for those situations, and other general sanity. Over the rest of this year I&rsquo;ve slowly modified and expanded the script as I&rsquo;ve wanted it to do things differently or better. I&rsquo;ve been hesitant to post the results because it really feels like something nobody else is going to need and it&rsquo;s entirely possible that I&rsquo;ve put too much time into it already. I did stop myself before turning it into a fully packaged gem, so good on me. It&rsquo;s now called \"howzit.\" As in \"how&rsquo;z it do this?\" or \"how&rsquo;z it do that?\". Build notes are still a simple Markdown (plain text, really) file with quick notes for each topic, as applicable to the project. Running displays the whole file, paged (with , if available) and highlighted (with , , or markdown mode, based on availability). You can run to list all sections, and then to list a single section. Within each section you can now include directives like and at the beginning of a line, and when you run it will run all directives within that section. Aside from general convenience, this means that I can include the primary build commands and all options as a directive in every project, and just run as a universal build command. I&rsquo;ve detailed the rest of the options and features on the new howzit project page, including links to the GitHub repo and associated \"Issues\" section, if you happen to find it useful and find bugs, or find it almost useful and have ideas to get it the rest of the way there",
		"keywords": ["build","notes","project","system","aside","build","github","issues","markdown","rakefile","running","within","almost","applicable","associated","automating","availability","available","based","because","before","beginning","build","called","command","commands","convenience","cruft","deploy","detailed","differently","directive","directives","directory","displays","entirely","expanded","features","feels","flags","folder","fully","general","going","happen","haven","hesitant","highlighted","howzit","ideas","including","keeping","links","markdown","modified","modules","myself","nobody","notes","options","packaged","paged","possible","posted","primary","project","projects","quick","recall","results","rsquo","sanity","script","section","sections","short","simple","single","situations","slowly","specific","systems","through","topic","track","turning","universal","useful","using","various","wanted","while","whole","within","worked"]
	},{
		"title": "Sponsor: Work smarter and accomplish more with Pagico",
		"url": "/2019/10/17/sponsor-work-smarter-and-accomplish-more-with-pagico/",
		"tags": ["design","sponsor"],
		"date": "Oct 17<span>th</span>, 2019",
		"ts": "1571310000",
		"summary": "Thanks to Pagico for sponsoring BrettTerpstra.com this week! Isn&rsquo;t there always too much to do? Don&rsquo;t stress out, let Pagico 9 help you work smarter, get more done, and reduce stress. In this day and age, we all have many areas of responsibilities: projects at work, family errands, or the wonderful vacation you&rsquo;re planning. When multiple projects move concurrently, we may overlook details, and maybe even miss deadlines. With Pagico you can keep all these tracks neatly in check by centralizing notes, tasks, checklists, emails, and files by projects and clients. Imagine how convenient it is to have boarding passes right next to travel itineraries, or design documents connected with submission deadlines. By keeping things together, you can offload your brain and think more clearly. To be productive, you need to plan ahead and stay on track, but you also have to be able to adjust plans when needed. Pagico can help with all of these areas. Unlike conventional todo apps that rely on lists and calendars, Pagico visualizes your tasks as timelines that let you intuitively perceive your workload. This ensures that nothing slips through the cracks, and long-term deadlines never creep up on you. Need to move your plans around? Just drag things around on the timeline, or use the smart snooze options to swiftly reschedule. While getting stuff done is satisfying, it can get stressful too. So Pagico 9 is also designed to reduce your stress. Since Pagico visualizes your workload as timelines, you can see far ahead into the future. The ability to see potential problems ahead of time can help you generate solutions and worry less. Then, its elegant UI is designed to present information at a moderate level of density, perfect for inducing a sense of calm. Its newly added Dark Mode also makes it comfortable should you find yourself working at night. Always on the go or simply wish to keep data offline? Then Pagico is the right choice for you! By being a native app that lives on your computer, Pagico stores your data on your computer and on your computer only (by default). Need to sync with your other computer or mobile devices? Just turn on the Personal Cloud feature and Pagico will securely sync your data via the Pagico cloud servers. Work smarter and accomplish more. Boost your productivity with the new Pagico 9 today! Try 2 weeks for free",
		"keywords": ["pagico","productivity","across","boost","brettterpstra","cloud","devices","everything","imagine","keeping","local","pagico","personal","planning","reducing","since","sponsored","staying","stress","syncing","syndicate","thanks","together","track","unlike","while","ability","added","adjust","ahead","areas","boarding","brain","calendars","centralizing","check","checklists","choice","clearly","clients","cloud","comfortable","computer","concurrently","connected","convenient","conventional","cracks","creep","deadlines","default","density","design","designed","details","devices","documents","elegant","emails","ensures","errands","family","feature","files","getting","inducing","information","intuitively","itineraries","keeping","level","lists","lives","makes","maybe","mobile","moderate","multiple","native","neatly","needed","newly","night","notes","nothing","offline","offload","options","overlook","passes","perceive","planning","plans","potential","problems","productive","productivity","projects","reschedule","responsibilities","right","rsquo","satisfying","securely","sense","servers","simply","slips","smart","smarter","snooze","solutions","sponsoring","stores","stress","stressful","stuff","submission","swiftly","tasks","think","through","timeline","timelines","today","together","track","tracks","travel","vacation","visualizes","weeks","wonderful","working","workload","worry"]
	},{
		"title": "Fish (shell) fun: event handlers",
		"url": "/2019/10/15/fish-shell-fun-event-handlers/",
		"tags": ["hookmark","shell","terminal"],
		"date": "Oct 15<span>th</span>, 2019",
		"ts": "1571158140",
		"summary": "In my last post on the Fish shell, I brazenly stated that \"because of the way that Fish handles the prompt function, there’s no easy way to hook it without modifying the original theme files.\" That was 100% incorrect, as I figured out the next day. Fish has the ability to specify that any function act as an event handler. You can attach to the event to have the function run right before the prompt displays. So my revised function in my init file is: Now I no longer need to edit the theme files directly at all, which is much more how I&rsquo;d prefer things to be. As an alternative to , you can also attach to variables changing, which means you can use to run the function any time the working directory changes. That would look like: Also, any function can use the command to add its own hook. The example from the docs is nice and succinct: This is one area where the Fish documentation seems lacking: there&rsquo;s no list of available hooks nor (that I can find) any way to retrieve a list of emitted events in the shell. It&rsquo;s been trial and error for me thus far. Hopefully someone will correct me if I&rsquo;m wrong here. Update, someone (evanrelf) did correct me in the comments: you can find a list of all named events using . Ok, so that&rsquo;s an extended correction to my last post, but it&rsquo;s a cool enough aspect of Fish that it seemed worth covering on its own",
		"keywords": ["shell","cellar","hopefully","ability","aspect","attach","available","basename","because","before","branching","brazenly","brettterpstra","changes","changing","class","command","commands","comments","contains","correction","covering","directly","directory","displays","emitted","enough","error","evanrelf","events","example","expedition","extended","figured","files","fishing","fishlogo","fishshell","function","handler","handles","height","highlighter","history","hooks","https","image","incorrect","lacking","language","ldquo","loading","local","longer","media","modifying","named","noscript","original","picture","plaintext","prefer","print","prompt","rdquo","retrieve","right","rouge","rsquo","scripts","seemed","seems","share","shell","source","specify","srcset","stated","strong","succinct","taskpaper","theme","title","trial","uploads","using","variable","variables","where","width","working","worth","wrong"]
	},{
		"title": "Branching out from Bash: Fishing expedition",
		"url": "/2019/10/11/branching-out-from-bash-fishing-expedition/",
		"tags": ["plugin","prompt","scripting","shell","source","sublimetext","terminal","themes"],
		"date": "Oct 11<span>th</span>, 2019",
		"ts": "1570817340",
		"summary": "Given that Apple has already switched the default shell in Catalina from Bash to Zsh, I&rsquo;ve been thinking I really need to expand from Bash. Don&rsquo;t get me wrong, I love Bash and I&rsquo;ve spent years molding it to my liking. The amount of time I&rsquo;ve put into it and the ease with which that investment allows me to use it has always made switching to anything else seem, well, like a waste of time. But now I feel stuck. To that end, I&rsquo;ve been stretching out and trying to shake off my fear of getting to know other shells. I decided to spend some time getting comfortable with Zsh and Fish (the Friendly Interactive SHell). I started with Fish, building a configuration on weekends. Three weekends now and I&rsquo;m comfortable enough to use it as my regular shell during the week. Fish features advanced autosuggestion and expansions, does cool syntax highlighting, offers a \"sane\" scripting toolset, has an array of existing plugins and themes, and even sports a browser-based configuration tool that&rsquo;s pretty awesome. So here are some random notes from my travels. This is a journal, not a tutorial, containing my impressions and a few tips. The documentation for Fish is excellent, from the overview tutorial to the full shell documentation. And once you have it running, typing will open a local copy of the documentation in your web browser, and will drill down to docs for any builtin. Fish circumvents the need for some loading of man pages using autocompletion, too. It scans all of your man pages and determines the options/flags available for most commands, adding them to each command&rsquo;s autocompletion dictionary. First things first, I had to know that some of my most time-saving scripts and lovingly-crafted utilities were not going to die in the process of switching. It turns out that everything works fine with a few shebangs and a little reworking to rely less on executing within the Bash environment. I didn&rsquo;t have to rewrite any scripts of significant size; at worst I retooled a few 5-line functions, mostly just to get a feel for the scripting language. It really is pretty sane. Almost 100% of my aliases converted painlessly from my to my Fish init files. That said, in Fish the command is just a wrapper that creates a function. There are no aliases, per say. One nice feature of functions is that when you run (actually a wrapper for ) on a function, it will tell you what file and line it was declared on. So that&&hellip;",
		"keywords": ["&#39;allow","aliases","almost","apple","applications","bashmarks","because","command","catalina","command","completions","converting","entry","finder","first","fisherman","friendly","function","impressions","interactive","journal","manager","marked","ohmyfish","porting","prompt","random","shell","stdout","scripting","scripts","setapp","square","sublime","themes","users","version","writing","xcode","accepts","access","across","added","adding","advanced","alias","aliases","allow","allows","amount","annoying","another","anywhere","argument","arguments","array","article","autocompletion","autojump","autoload","autosuggestion","available","awesome","background","backlink","backticks","based","basename","bashmarks","basic","bcbba","because","becomes","between","bigger","bookmark","bookmarking","bottom","bracket","brackets","breeze","brett","brettterpstra","browser","building","builtin","called","changing","checks","circumvents","class","codes","color","colored","comfortable","command","commands","comments","comparisons","completely","completions","complex","concern","config","configuration","containing","contains","contents","convert","converted","count","couple","crafted","created","creates","crude","curly","decided","declaration","declare","declared","declares","declaring","default","define","description","determines","dictionary","differences","directories","directory","display","doesn","doing","double","drill","dynamically","easier","easiest","easily","effort","empty","enabled","ended","endnotes","enough","environment","escape","everything","example","excellent","executing","expand","expanded","expansions","explored","exploring","expressions","extension","external","extra","extract","fallback","feature","features","files","finder","first","fishshell","fishshellswim","flags","flexible","fnref","folder","footnote","footnotes","foreground","found","friendlier","function","functionality","functions","fuzzy","generated","gentleman","getting","github","global","going","grain","handled","handler","handlers","handles","hashbang","haven","height","hellip","highlight","highlighter"]
	},{
		"title": "Unify your team's voice with TextExpander",
		"url": "/2019/10/10/unify-your-team-voice-with-textexpander/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Oct 10<span>th</span>, 2019",
		"ts": "1570712400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! If you&rsquo;ve been reading this blog for a while, you already know you can amp up your personal productivity with TextExpander, shortening everything you write repeatedly to a few keystrokes anywhere you type: text documents, spreadsheets, web forms, and more. But you might not have considered how much it could help your team? When it comes to your company and your brand, any written correspondence that comes from your team is speaking for all of you. With TextExpander for Teams, you can make sure that everyone on your team can provide a consistent voice in every email, press release, or meeting agenda. And when a snippet needs revising, you can update it in one place and your team will instantly be using the new snippet. You can even manage who sees snippets by making different Groups for your departments, so customer support and sales see exactly the snippets they need. TextExpander is available on macOS, iPhone, iPad, Windows, and Chrome, so your whole team can take advantage of it, regardless of the platform(s) each team member uses. BrettTerpstra.com readers get 20% off their first year of a TextExpander subscription. Visit textexpander.com/podcast to get started",
		"keywords": ["expansion","smile","snippets","brettterpstra","chrome","groups","teams","textexpander","thanks","visit","windows","advantage","again","agenda","anywhere","available","brand","comes","company","considered","consistent","correspondence","customer","departments","different","documents","email","everyone","everything","first","forms","iphone","instantly","keystrokes","macos","making","meeting","member","needs","personal","platform","podcast","press","productivity","readers","reading","regardless","release","repeatedly","revising","rsquo","sales","shortening","snippet","snippets","speaking","sponsoring","spreadsheets","started","subscription","support","textexpander","using","voice","while","whole","write","written"]
	},{
		"title": "The Shortcuts Field Guide Giveaway",
		"url": "/2019/10/09/the-shortcuts-field-guide-giveaway/",
		"tags": ["automation","giveaway","shortcuts","tutorial","video"],
		"date": "Oct 9<span>th</span>, 2019",
		"ts": "1570640460",
		"summary": "As is always the case with David Sparks&rsquo; Field Guides, the iOS 13 edition of The Shortcuts Field Guide got a great response when I mentioned it here. And once again David has kindly provided a few extra codes for BrettTerpstra.com readers. And yes, if you win a code but already purchased the Guide, you can gift it to someone you think deserves it! There are five magic codes available that will give the winner free access to the MacSparky Shortcuts Field Guide, iOS 13 edition videos. Enter a name and email address below to be eligible to win one (1) coupon ($29US value) in a random drawing on Friday, October 11th, at 12:00 CST. Sorry, this giveaway has ended",
		"keywords": ["david","field","guides","macsparky","sparks","brettterpstra","david","enter","field","friday","guide","guides","macsparky","shortcuts","sorry","sparks","access","address","again","available","below","codes","coupon","deserves","drawing","edition","email","ended","extra","giveaway","great","kindly","magic","mentioned","purchased","random","readers","response","rsquo","think","value","videos","winner"]
	},{
		"title": "Web Excursions for September 30, 2019",
		"url": "/2019/09/30/web-excursions-for-september-30-2019/",
		"tags": ["bookmarks","markdown"],
		"date": "Sep 30<span>th</span>, 2019",
		"ts": "1569865260",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. HitCal A tool similar to calend.ly or WhenWorks, but built for Messages. Nail down a meeting time by offering available slots and letting the correspondent just pick one. Learn vim For the Last Time: A Tutorial and Primer I always feel like I&rsquo;m going back to the beginning to get a better grasp on Vim. This was a great tutorial. Simple Opt Out Deep links to opt-out of data sharing by 60+ companies. Markdown Tables for iOS In the vein of TableFlip, Markdown Tables is an iOS app for the creation and editing of Markdown-formatted tables for use in combination with your favorite Markdown editor. From the creator of Trunk Notes, the now-defunct iOS wiki app that I still have a soft spot for. Untitled Goose Game Yeah, I know, everybody&rsquo;s already talking about this game (to the extent that I had to try it), but it&rsquo;s worth the buzz. Cathartic. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["games","markdown","scheduling","backblaze","cathartic","check","goose","hitcal","learn","markdown","messages","notes","primer","simple","tableflip","tables","trunk","tutorial","untitled","whenworks","affordably","available","backs","beginning","brought","built","calend","cloud","combination","companies","computer","correspondent","creation","creator","defunct","editing","editor","entire","everybody","everything","excursions","favorite","formatted","going","grasp","great","letting","links","meeting","offering","partnership","reliably","rsquo","securely","sharing","similar","slots","tables","talking","today","tutorial","worth"]
	},{
		"title": "nvUltra news, September",
		"url": "/2019/09/25/nvultra-news-september/",
		"tags": ["nvultra"],
		"date": "Sep 25<span>th</span>, 2019",
		"ts": "1569436140",
		"summary": "Ok, another month, another nvUltra update. As I&rsquo;d warily predicted, my initial hopes for an August release slipped, and I&rsquo;m currently making more conservative predictions. I&rsquo;m not going to put an ETA on it this time, but before you grow concerned, let me tell you where things are at and why I&rsquo;m being cautious. We&rsquo;ve added another 500 testers from the initial signup list at this point, plus a slew of additional edge-case testers, and we have our hands full keeping up with feedback and forum posts from the current pool of users. Fletcher works in a hospital ER, and I have my own side-pursuits (not a Doctor) to pay the bills while we develop this, so it&rsquo;s 2 part-time guys working with 1000+ users and a very active beta feedback forum. There&rsquo;s a lot of excitement, though, and it makes it a lot of fun to continue interacting with everyone. We&rsquo;re feature complete for 1.0, and now we&rsquo;re just working out bugs and making sure everything that&rsquo;s there works the way it should for every user. New feature requests are being discussed and debated, but implementation of any additional features will now wait until after the initial product ships. I&rsquo;m also working to wrap up documentation on the extensive list of features packed into nvUltra&rsquo;s simple interface. I have an initial icon concept about 50% done, but it&rsquo;s not confirmed as the final direction yet. It interprets \"Ultra\" as pinnacle and uses the nib of a fountain pen as the peak in a mountain range. Shown here in greyscale because I haven&rsquo;t finalized a color scheme for this direction yet. Stay tuned. I&rsquo;ll be starting to use the mailing list to provide updates soon. Sign up at nvultra.com",
		"keywords": ["notational","nvalt","velocity","doctor","fletcher","shown","ultra","active","added","another","because","before","bills","cautious","color","concept","confirmed","conservative","continue","debated","develop","direction","discussed","everyone","everything","excitement","extensive","extra","feature","features","feedback","finalized","forum","fountain","going","greyscale","hands","haven","hellip","hopes","hospital","implementation","initial","interacting","interface","interprets","keeping","mailing","makes","making","mountain","nvultra","nvultra","packed","pinnacle","point","posts","predicted","predictions","product","pursuits","range","release","requests","rsquo","scheme","screenshots","ships","signup","simple","slipped","starting","testers","tuned","updates","users","warily","where","while","working","works"]
	},{
		"title": "Bunch 1.2: no more redundant Bunches",
		"url": "/2019/09/24/bunch-1-dot-2-no-more-redundant-bunches/",
		"tags": ["bunch","developer","macos","nvultra","productivity","snippet"],
		"date": "Sep 24<span>th</span>, 2019",
		"ts": "1569338940",
		"summary": "First off, I promise an nvUltra update this week. You deserve it. In the meantime&hellip; I woke up at three this morning. As you may have come to expect, I&rsquo;ve added stuff to Bunch, my batch app launcher and current too-awake-to-sleep-too-tired-to-do-real-work project. I think this new feature will save a few users (and myself) some time: I&rsquo;m calling it \"snippets,\" which is an uncreative way of saying you can now use templated actions with variables in a Bunch. One of my main uses of Bunch is to switch between projects I&rsquo;m working on. They are, by and large, the same Bunch: start a Timing.app task, open Tower to the project repository, open iTerm to the project directory, open TaskPaper to the project&rsquo;s todo file, etc. The only thing that really changes is the path and title of the project. Now I can set up a \"snippet\" file with all of the tasks, using to make it reusable. For example, a file called \"project.snippet\" in a \"snippets\" subfolder: Then, in my Bunch for the nvUltra project, I just call it with with any variable definitions following (with hyphens, same as application files, Automator workflow/shell variables, etc., because consistency): I haven&rsquo;t added any features for variable mangling or anything, just straight up text replacements, but it should do the trick. It&rsquo;s not meant to be overly complex (er, complicated) at this point. Who knows what happens next time I&rsquo;m up before the sun. There was also a crash when trying to change the folder location of your Bunches in recent versions. I agonized over this crash1 for an hour or two, I lost track, eventually giving up and just adding an alert that you need to restart Bunch after changing this setting. Now it doesn&rsquo;t crash, and you&rsquo;ll have to do that, what, like once? Ever? So that&rsquo;s kind of a fix. At least it doesn&rsquo;t crash now. The other updates since my last post are stupid. I won&rsquo;t even tell you about them. There&rsquo;s a changelog, though, wherein I reveal some features that I added because I thought they might save me time and then realized it was pointless but for some reason just left them in. Again, and I can&rsquo;t repeat this often enough, this project is mostly developed in the hours before 5am. The latest version (1.2.0) is out for automatic update, or download from the project page. Please enjoy, compliments of the chef. P.S. I already know that the header image on this post will never get the&hellip;",
		"keywords": ["batch","launcher","productivity","snippet","again","appdelegate","automator","bunch","bunches","daniel","development","first","jalkut","taskpaper","timing","tower","access","actions","added","adding","agonized","alert","automatic","awake","backlink","batch","because","before","between","brettterpstra","bridge","bunch","bunchassemblylineheader","callback","called","calling","change","changelog","changes","changing","class","complex","complicated","compliments","consistency","crash","credit","debugging","definitions","deserve","deserves","developed","directory","doesn","download","endnotes","enjoy","enough","eventually","example","exception","expect","explanation","feature","features","files","fnref","folder","footnote","footnotes","fsevents","giving","happens","haven","header","height","hellip","highlight","highlighter","hours","https","hyphens","iterm","illegal","image","knows","language","latest","launcher","ldquo","loading","location","mangling","meant","meantime","media","morning","mostly","myself","noscript","noteref","nvultra","often","original","overly","picture","plaintext","point","pointless","project","projects","promise","rdquo","realized","recent","repeat","replacements","repository","restart","reusable","reveal","reversefootnote","rouge","rsquo","saying","setting","shell","since","sleep","snippet","snippets","source","srcset","straight","stuff","stupid","subfolder","switch","taskpaper","tasks","templated","think","thought","through","tired","title","track","trick","trying","uncreative","updates","uploads","users","using","variable","variables","version","versions","wherein","width","within","workflow","workflows","working"]
	},{
		"title": "Tower presents Tech Animals, great merch, great charity",
		"url": "/2019/09/19/tower-presents-tech-animals-great-merch-great-charity/",
		"tags": ["apparel","charity","design"],
		"date": "Sep 19<span>th</span>, 2019",
		"ts": "1568898000",
		"summary": "Tower, the makers of the eponymous Git client, have a history of providing design-oriented products in addition to their elegant app. You may recall the Developer Manifesto poster I ran a giveaway for last year. Their latest product line is a fantastic followup. Tech Animals is a reimagining of all of the animals that become logos for our favorite tech projects, from the Linux Penguin and the Firefox to the Swift bird and the Perl camel, you&rsquo;re sure to find beautifully illustrated versions of your favorite project&rsquo;s mascot. All available as posters, coffee mugs, and t-shirts. Here&rsquo;s the cool part, though: 100% of profits are going to Hacker School, a project that inspires children to get started with programming while also offering refugees an IT education. Visit the shop and get some great design for a worthy cause",
		"keywords": ["coffee","mascot","poster","animals","developer","firefox","hacker","linux","manifesto","penguin","school","swift","tower","visit","animals","available","beautifully","camel","cause","children","client","coffee","design","education","elegant","eponymous","fantastic","favorite","followup","giveaway","going","great","history","illustrated","inspires","latest","logos","makers","mascot","offering","oriented","poster","posters","product","products","profits","programming","project","projects","providing","recall","refugees","reimagining","rsquo","shirts","started","versions","while","worthy"]
	},{
		"title": "The MacSparky Shortcuts Field Guide",
		"url": "/2019/09/18/the-macsparky-shortcuts-field-guide/",
		"tags": ["automation","automator","shortcuts","video"],
		"date": "Sep 18<span>th</span>, 2019",
		"ts": "1568819580",
		"summary": "If you get into the kind of automation I offer on this blog, or maybe wish you did if it weren&rsquo;t for all the coding, then Shortcuts on iOS is either on your radar or should be. And David Sparks has just the thing. Released today, the latest MacSparky Field Guide is Shortcuts, the iOS 13 edition. Apple has dedicated more resources to automation on iOS than they have for a long time on macOS, and Shortcuts offers a way to harness the power without having to write a single line of code. The course includes 6 hours+ of video training and 107 separate videos. Learn to build simple apps, automate your meetings, do things like have your iPad enter \"focus mode\" when you connect to coffeehouse wifi or send an automated message when you&rsquo;re running late with an accurate ETA. The MacSparky Shortcuts Field Guide costs $29 US, but for a limited time you can use the code to bring the price down to $24. Check it out",
		"keywords": ["apple","learning","macsparky","tutorial","apple","check","david","field","guide","learn","macsparky","released","shortcuts","sparks","accurate","automate","automated","automation","bring","build","coding","coffeehouse","connect","dedicated","edition","either","enter","focus","harness","having","hours","includes","latest","limited","macos","maybe","meetings","message","offer","offers","price","radar","resources","rsquo","running","separate","simple","single","today","training","video","videos","weren","write"]
	},{
		"title": "mdless one dot oh my",
		"url": "/2019/09/13/mdless-1-dot-0/",
		"tags": ["markdown","mdless","terminal"],
		"date": "Sep 13<span>th</span>, 2019",
		"ts": "1568390700",
		"summary": "Back in 2015 I wrote a little utility called mdless for previewing Markdown files on the command line. It performs some basic formatting fix-up, and then highlights the various elements of a Markdown document, paging it out in your terminal. While it&rsquo;s been popular via Hacker News and StackOverflow posts, I hadn&rsquo;t really updated it much since the release. When I finally got around to responding to some GitHub issues on it, I decided to go a little beyond the bugfixes to polish and extend it a bit. The bugfixes include errors on syntax highlighting, overruns on long blocks, you know, stuff like that. I&rsquo;d been doing point releases from 0.0.1 to 0.0.15, but I&rsquo;ve decided it&rsquo;s at a 1.0 place. So join me in welcoming mdless 1.0.0. Cheers. (It&rsquo;s actually 1.0.2 already, because bugs. You know how it is.) It&rsquo;s honestly not that huge a release, but it does breathe new life into the aging utility. As a reminder (or introduction), here&rsquo;s a list of the main features: Built in pager functionality with pipe capability, a replacement for Markdown files Tidy and highlight (Multi)Markdown table syntax Colorize Markdown syntax for most elements Normalize spacing and link formatting Display footnotes after each paragraph Inline image display (local, optionally remote) if using iTerm2 2.9+ Syntax highlighting when Pygments is installed List headlines in document, display single section of the document structure based on headlines mdless now does more and better Markdown highlighting it picks apart a few syntaxes into more finite bits for colorization Better formatting and highlighting of (Multi)Markdown tables rewritten colorization code, which is generally of more benefit to me than you Improved syntax highlighting for code blocks Only fenced code with a language defined (e.g. \"`python\") will be highlighted Prettier code blocks even if Pygments isn&rsquo;t installed Better language detection on fenced code blocks. Recognizes slightly malformed syntax and does a solid job of detecting language from any hashbang in the code A blackout feature for adding a background color to blocks, even if they&rsquo;re syntax highlighted Totally user-customizable Control every color for every element Determine how different header levels are highlighted Set a custom theme for Pygments highlighting It&rsquo;s still not perfect, but for getting a prettier view than when you want to peruse Markdown&hellip;",
		"keywords": ["command","utility","built","cheers","colorize","control","display","github","hacker","improved","inline","markdown","multi","normalize","prettier","pygments","recognizes","stackoverflow","syntax","terminal","totally","while","adding","aging","anyway","apart","background","based","basic","because","benefit","beyond","blackout","blocks","breathe","bugfixes","called","capability","color","colorization","command","custom","customizable","decided","defined","detecting","detection","different","display","document","doing","element","elements","errors","extend","feature","features","fenced","files","finally","finite","footnotes","formatting","functionality","generally","getting","hashbang","header","headlines","highlight","highlighted","highlighting","highlights","honestly","iterm","image","installation","installed","instructions","introduction","issues","language","levels","little","local","malformed","mdless","notch","optionally","overruns","pager","paging","paragraph","performs","picks","point","polish","popular","posts","prettier","previewing","project","python","release","releases","reminder","remote","replacement","responding","rewritten","rsquo","section","since","single","slightly","solid","spacing","structure","stuff","syntax","syntaxes","table","tables","terminal","theme","updated","using","utility","various","welcoming","wrote"]
	},{
		"title": "Sponsor: Stop repeating yourself, let TextExpander do it for you",
		"url": "/2019/09/12/sponsor-stop-repeating-yourself-let-textexpander-do-it-for-you/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Sep 12<span>th</span>, 2019",
		"ts": "1568293200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com again this week! I&rsquo;m setting up a Mac mini from scratch, and TextExpander was the third app I installed. I never start using a new machine without it. You repeat yourself all the time. Spend enough time typing out emails, messages, blog posts, and all the other things you type in a day and you&rsquo;ll find yourself saying the same thing more than twice. TextExpander makes it so you never have to type out the directions to your house again. Just save it to a snippet and have it available for entry on all of your devices in any app where you type. Easily insert text snippets in any application from a library of content created by you and/or your team. Add snippets for anything you type repetitively, shortening words, sentences, or entire emails to a few characters. TextExpander works everywhere you type, improving your productivity and accuracy no matter what apps you use. It&rsquo;s available for macOS, Windows, iPhone and iPad, and Chrome, so you can maintain consistency across all of your devices and platforms. In addition to saving time, TextExpander for Teams saves team members from sharing outdated information and helps everyone provide consistent responses. Visit textexpander.com/podcast to learn more about TextExpander and stop repeating yourself today",
		"keywords": ["expansion","smile","snippets","textexpander","brettterpstra","chrome","easily","spend","teams","textexpander","thanks","visit","windows","accuracy","across","again","available","characters","consistency","consistent","content","created","devices","directions","emails","enough","entire","entry","everyone","everywhere","helps","house","iphone","improving","information","installed","learn","library","macos","machine","maintain","makes","members","messages","outdated","platforms","podcast","posts","productivity","repeat","repeating","repetitively","responses","rsquo","saves","saving","saying","scratch","sentences","setting","sharing","shortening","snippet","snippets","sponsoring","textexpander","third","today","twice","typing","using","where","words","works"]
	},{
		"title": "Taking Control: The ADHD podcast #400",
		"url": "/2019/09/11/taking-control-the-adhd-podcast-number-400/",
		"tags": ["interview","mentalhealth","podcast","podcasting"],
		"date": "Sep 11<span>th</span>, 2019",
		"ts": "1568217540",
		"summary": "I had the pleasure of being the guest on Taking Control: The ADHD Podcast this week. Episode 400, which seems like a big one, numerically. I&rsquo;m duly honored. I mention it especially because the conversation ended up being enlightening to me. I didn&rsquo;t know what I was going to talk about when I got on Zoom that day, but I found it very natural to be open and vulnerable about my experiences with ADHD and BPD. Which, ironically, is where the conversation started out. We talked about how I&rsquo;ve never found it scary to talk about my mental health, as screwed up as it may be. It&rsquo;s easier to talk about it than hide it, so it&rsquo;s really the path of least resistance for me. But I&rsquo;ve learned over the years that not everyone has that proclivity, and being able to see others share makes a lot of people feel less alone, frustrated, and ashamed. I&rsquo;m so glad that my inability to keep my feelings under wraps is beneficial to others, especially given the potential alternative reactions. I learned a lot about myself just talking through it on the episode. Hopefully any ADHD folks with time to listen to it can enjoy the epiphanies with me. And while I hadn&rsquo;t been a listener until after the invite came, I&rsquo;ve been checking out the back catalog and will be a listener going forward. It&rsquo;s a really great podcast for people with ADHD in their lives (in themselves or a love one). Thanks to Pete and Nikki for letting me be a part of it! Check out episode 400 at rashpixel.fm",
		"keywords": ["health","mental","check","control","episode","hopefully","nikki","podcast","taking","thanks","alone","ashamed","because","catalog","checking","conversation","easier","ended","enjoy","enlightening","epiphanies","episode","especially","everyone","experiences","feelings","folks","found","frustrated","going","great","guest","health","honored","inability","invite","ironically","learned","letting","listen","listener","lives","makes","mental","mention","myself","natural","numerically","others","people","podcast","potential","proclivity","rashpixel","reactions","resistance","rsquo","scary","screwed","seems","share","started","talked","talking","themselves","through","under","vulnerable","where","while","wraps","years"]
	},{
		"title": "Web Excursions for September 09, 2019",
		"url": "/2019/09/09/web-excursions-for-september-09-2019/",
		"tags": ["bookmarks"],
		"date": "Sep 9<span>th</span>, 2019",
		"ts": "1568046660",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Fans Are Better Than Tech at Organizing Information Online I wish my own macOS tagging system could be this intelligent. Via @sjhcanada. Postbox 7.0 As you may be aware, I&rsquo;m a very happy MailMate user, but I&rsquo;ve always been impressed with the power of the Postbox email client for Mac. Among a host of new features, the latest version adds new swipe gestures, new rich-text composition tools, and \"Labs\", which allows running experimental 3rd-party code within Postbox. AnyDrop for Mac I like the idea of this: drag files to the menu bar and get a list of possible actions based on the type of file. But&hellip; it doesn&rsquo;t appear to be user-extensible, so I&rsquo;m happy sticking with Dropzone, personally. Color System Plugin for Sketch In the past, Dark Mode color schemes have usually been an afterthought for me. These days making a design pop in both light and dark versions requires attention from the beginning. This is a great Sketch plugin for setting up a color system that works. Amazon Prime Video - Rotten Tomatoes Overlay As someone who wishes Rotten Tomatoes were integrated everywhere I watch movies, this Chrome Extension which overlays Amazon Prime Video TV and movies with ratings is a welcome tool",
		"keywords": ["chrome","email","macos","sketch","tagging","amazon","among","anydrop","check","chrome","color","dropzone","extension","information","mailmate","online","organizing","overlay","plugin","postbox","prime","rotten","setapp","sketch","system","tomatoes","video","access","actions","afterthought","allows","appear","aware","based","beginning","brought","canada","client","color","composition","design","doesn","email","everywhere","excursions","experimental","extensible","features","files","gestures","great","happy","hellip","hundreds","impressed","integrated","intelligent","latest","light","macos","making","monthly","movies","overlays","partnership","party","personally","plugin","possible","ratings","requires","rsquo","running","schemes","setting","sticking","subscription","swipe","system","tagging","today","tools","usually","version","versions","watch","welcome","wishes","within","works"]
	},{
		"title": "Notification of recent changes to your BrettTerpstra.com",
		"url": "/2019/09/05/notification-of-recent-changes-to-your-brettterpstra-dot-com/",
		"tags": ["search","social","tools","webdesign"],
		"date": "Sep 5<span>th</span>, 2019",
		"ts": "1567699200",
		"summary": "I&rsquo;ve been a bit too busy to get much content out the last couple of weeks, but I did want to take a second to point out some changes (improvements, hopefully) I&rsquo;ve made to this site over the last couple of months. Mostly because I think they&rsquo;re kind of cool and I know few people will ever notice them. The time had come around for me to consider a redesign, but when I sat down to evaluate it, it turned out I still liked the overall layout of the site. So I focused on details, both design and speed related. You may love them, you might hate them, and I&rsquo;m open to feedback on any of them. I moved site search into the upper right. Despite my own proclivity for it being in the menu bar on the left, I know that UX research has shown that people expect it in the top bar, either left or right. So I capitulated. I also completely redesigned both the search input and the tools menu next to it. They now take up less space while still being available at all times. The site used to have a \"high contrast\" mode that could be triggered from the tools menu, but I&rsquo;d never finished it to my satisfaction and had dropped it over a year ago. I finally got around to that, and replaced the menu item with three new ones: Light Mode, Dark Mode, and Automatic. Automatic is the default and will use the OS settings on macOS to determine which mode to show, even switching in real time if you change that setting. I rewrote the algorithm that determines whether posts are related, reduced the number shown to four, and added thumbnail images as backgrounds for the list. I have a special Liquid tag that designates an image as the \"default\" image for the post, but if a post lacks that, it falls back to the first image in the post. If no image is used in the post, it picks from one of 5 default backgrounds (random). The background images use CSS to blur slightly, coming into focus on hover. I got a little stupid with this one and added a long, exaggerated expand-and-snap animation to the link that shows up when a post is truncated for the list view. I plan to start using \"read more\" truncation more often, keeping the home page cleaner. While the animation takes too long, it can be clicked at any time, just like any other button. I wrote a plugin some time ago that will automatically summarize any post for you. I improved this a bit for this revision. It can be enabled under the tools menu in the upper right, and will only show up if you request&hellip;",
		"keywords": ["javascript","responsive","webdev","automatic","button","downloads","icons","improved","layout","light","liquid","mostly","posts","related","responsive","search","sidebar","social","speaking","tools","while","added","aggregates","algorithm","allow","amount","animation","animations","appears","areas","automatically","available","background","backgrounds","based","because","beginning","bothered","button","buttons","capitulated","change","changes","cleaner","clicked","clicking","color","colors","column","columns","comes","coming","completely","consider","contact","content","contrast","couple","covers","create","creating","decisions","default","description","descriptions","design","designates","details","determines","devices","distributed","doing","download","dozen","dropped","dropping","either","enabled","enables","enjoyable","enough","everything","exaggerated","exists","expand","expect","experience","falls","feedback","filename","filter","filters","finally","finding","finished","first","flexbox","focus","focused","fonts","functionality","great","happy","headers","hesitate","hopefully","hover","icons","image","images","important","importantly","improved","improvements","input","items","keeping","lacks","layout","lesser","lighter","liked","linked","links","little","looks","macos","matches","media","mobile","moved","narrow","necessary","official","often","ordered","originated","overall","pasting","people","picks","plugin","point","portion","posts","prettier","proclivity","project","projects","prominent","published","random","redesign","redesigned","redone","reduced","related","removed","replaced","research","responsive","reveal","revision","rewrote","right","rsquo","satisfaction","screen","seamless","search","second","service","setting","settings","shown","shows","sidebar","slightly","social","sortable","sorting","space","special","specific","speed","spent","sprites","starting","starts","stayed","stupid","summarize","switching","table","takes","think","thumbnail","times","title","toolbar","tools","tracking","traffic"]
	},{
		"title": "Shell Tricks: a random selection",
		"url": "/2019/08/29/shell-tricks-a-random-selection/",
		"tags": ["finder","history","scripting","shell","shortcuts","terminal","tricks"],
		"date": "Aug 29<span>th</span>, 2019",
		"ts": "1567090800",
		"summary": "It&rsquo;s been a while since I posted any shell tricks, so I&rsquo;m just dumping a few random but useful aliases out here&hellip; First, a one-line function (Bash, but easily converted) for opening Finder, either to the path in the first argument or to the current directory. Due to the way the open command works, you can use relative paths from the current directory in the argument. A stupid easy alias for copying the current directory to the clipboard. Simple, but useful. Note that it trims the trailing newline from the result in the clipboard. Here&rsquo;s one for fixing the last command with a simple substitution, no special syntax, so if the command you messed up was , you can run to find/replace \"myfile.txt\" to \"myfile.txt\" and execute the result. I find this easier than substitutions, and I&rsquo;ve always found the Bash syntax to be more difficult to type quickly. Note that it will only replace the first match, not a global substitution. Just give it enough context to match the right part&hellip; Want to quickly merge git conflicts using or ? These aliases will check for lines starting with (unmerged), passing listed files to to run one of the commands. Lastly, when I&rsquo;m working in a shell and want to open a new view into it from another Terminal (iTerm) window or tab, I usually want to carry my recent command history with me. It&rsquo;s easy to do with the command, writing to the and then reading from it in a new session. In Bash, you can use (Option-period) to add the last argument of the previous command to the current command line. This is great, for example, after you&rsquo;ve created a new directory and want to into it in the next command. Wouldn&rsquo;t it be great if there was a way to do that from the current command line, sourcing from preceding arguments? A keyboard command to repeat the last argument of the current command&hellip; Bash history expansion shortcuts to the rescue. represents the current command, and you can add the modifier to reference the last argument, so repeats the argument I just typed. I have my shell set to expand shortcuts as soon as I hit space, so I can add this as a shortcut in iTerm and have it expand automatically. Under Preferences->Keys->Key Bindings, just add a new binding with the action \"Send Text\" and set the text to (with a trailing space). Assign it to a hotkey (mine is Shift-Option-period). Neat. As a side note, the history expansions also have modifiers for removing&hellip;",
		"keywords": ["alias","terminal","assign","bindings","bonus","command","conflict","directory","faster","finder","first","history","lastly","preferences","resolution","shift","simple","substitutions","terminal","under","wouldn","action","alias","aliases","another","argument","arguments","automatically","binding","carry","check","clipboard","command","commands","conflicts","context","converted","copying","created","difficult","directory","dumping","easier","easily","either","enough","example","execute","expand","expansion","expansions","extension","extensions","filenames","filepath","files","first","fixing","found","function","global","great","hellip","history","hopefully","hotkey","iterm","keyboard","listed","match","merge","messed","modifier","modifiers","myfile","newline","opening","passing","paths","posted","preceding","quickly","random","reading","recent","relative","removed","removing","repeat","repeating","repeats","replace","represents","rescue","right","rsquo","session","shell","shortcut","shortcuts","simple","since","sourcing","space","special","starting","stupid","substitution","substitutions","syntax","toolbox","trailing","tricks","trims","typed","unmerged","useful","using","usually","while","window","working","works","writing"]
	},{
		"title": "MailMate and Tagging",
		"url": "/2019/08/26/mailmate-and-tagging/",
		"tags": ["email","gmail","icons","keybindings","macos","mailmate","marked","reading","shortcuts","tagging"],
		"date": "Aug 26<span>th</span>, 2019",
		"ts": "1566847560",
		"summary": "I&rsquo;ve been considering a general \"Why I love MailMate\" post for some time now, but it keeps seeming like an overwhelming project. So instead, I&rsquo;m going to focus on one small part. I&rsquo;ve talked a bit about Bundles a couple of times before, so for now, let&rsquo;s talk about one of my favorite topics: tagging. First, as an introduction to MailMate, my favorite email client on the Mac, I&rsquo;ll refer to this paragraph that I love from MailMate&rsquo;s about page: MailMate is not the most widespread, the cheapest, or the greatest looking email client, but I also have no aspiration to MailMate ever being any of these. Instead, MailMate aspires to be the most powerful, the most flexible, the most efficient, the most standards compliant, and the most secure email client. Among MailMate&rsquo;s many features, it allows messages to be tagged with any words you want, just like any tagging system. You get to determine what these tags represent, how they&rsquo;re applied, and how to use them to create your own workflow. To edit tags on a message, use the Message->Tag submenu. This offers you a list of all your existing tags, as well as an Edit Tags option that will open the tag bar in the message window. This can more easily be triggered using a shortcut key, which in my bindings (and I believe the default, at least with Gmail bindings) is just typing \"t\" with any message selected in the viewer. You can also add toolbar buttons for tags using Message->Tag->Display in Toolbar. One nice feature of MailMate tags is that you can assign unicode characters and emoji to represent any tag, then instead of having a full tags column in the message list, you can just have the icons show, allowing them to function as \"flags\" on the messages. Icons are assigned from Preferences, in the Tags pane. Once you have icons assigned to your common tags, you can look under the View->Columns menu and you&rsquo;ll see two options for tags columns in the viewer, one that&rsquo;s just Tags (the full words) and one that&rsquo;s Tags with an icon next to it (just the icons). These icons also make any tags you add to your toolbar look nicer, just showing an icon button instead of a full tag name. Most of my tags are for filing purposes, such as \"expense\" (which gets a dollar sign) or \"nvultra\" (which gets a unicode 𝗻 character). I&rsquo;ll get to how I make those useful in a minute. If you use Gmail, you know that it doesn&rsquo;t use folders, but rather \"&hellip;",
		"keywords": ["client","email","among","another","applications","below","bindings","bundles","columns","combo","contents","custom","defaultkeybindings","display","first","flags","folders","general","gmail","header","headers","inbox","icons","inbox","keybindings","keybindings","keyboard","labels","library","mailmate","mailtags","mailbox","mailboxes","message","preferences","pseudo","reply","replied","resources","sanebox","smart","spark","support","toolbar","viewing","above","accounts","acting","action","added","allowing","allows","among","another","appears","apple","applied","apply","aspiration","aspires","assign","assigned","automatically","badges","based","because","before","believe","below","bindings","blockquote","boxes","brackets","brettterpstra","briefly","build","bunch","button","buttons","buying","called","certain","character","characters","cheapest","check","chunk","class","client","clients","colored","column","columns","combination","comma","command","common","completely","compliant","comprised","comprising","consider","considering","contain","contains","contents","continue","conveniently","copying","couple","create","creates","criteria","curious","curly","default","describe","deserve","deserves","development","dictionaries","dictionary","dilutes","disappear","disappeared","disappears","doesn","dollar","easily","efficient","either","email","emoji","employs","empty","energy","enlightenment","enough","enter","essentially","evolved","example","execute","expense","experimented","extended","favorite","feature","features","filed","filing","flagged","flagging","flags","flexible","focus","folder","folders","followed","follows","format","found","freron","frustration","function","functions","gather","gathered","general","gives","going","greatest","grouping","groups","handle","haven","having","headers","height","hellip","highlight","highlighter","horrible","https","icons","image","importance","important","inbox","included","includes","including","intentionally","interested","introduction","keeps","keybindings","keyboard","keywords","label","labels","language"]
	},{
		"title": "Bunch's latest abilities...",
		"url": "/2019/08/16/bunchs-latest-abilities/",
		"tags": ["bunch","shortcuts"],
		"date": "Aug 16<span>th</span>, 2019",
		"ts": "1565955240",
		"summary": "I got up a bit too early this morning. I finished a sprint on a freelance project but wasn&rsquo;t ready to dig into my other big stuff yet. That stuff&rsquo;s for after 5am. Before 5am is Bunch time. As promised, I haven&rsquo;t written a blog post for every update, but you can find the full list of recent changes in the changelog. If you don&rsquo;t know what Bunch is, it&rsquo;s an app I wrote for batch launching apps, opening files, toggling Do Not Disturb and a dozen other things. Start with the docs. There are a few apps that I launch in Bunches that don&rsquo;t respond to the command that would normally close all open windows for the app. Bunch uses an AppleScript \"close every window\" command to do this, and some apps by their nature just don&rsquo;t like that. In Tower, for example, that command won&rsquo;t work, but typing will. So, clearly, that&rsquo;s what Bunch needed to be able to do. In the file parameters for an app, you can now specify shortcuts to send to the app, or full strings to type out. The latter being less useful, but I already had the code for it. So it happened. To specify a shortcut, you just surround it in curly brackets. So for the previous example: That will send the Close All Windows shortcut and then open the Bunch repository. You&rsquo;ll note that the shortcut is specified with some odd characters. These map to the same characters used by key bindings in macOS: Which would, for whatever reason, perform a select-all, copy, paste, paste in the frontmost window of Sublime Text. Obviously not a good example: in addition to being pointless it presupposes that a window is already open, which isn&rsquo;t a safe assumption in a Bunch. But anyway, you can send sequences. You can also type text. Like I said, this is less useful than sending shortcuts, but if you need to send a series of regular keystrokes to an app, you can do so using square brackets. Within these strings there are a few \"escape\" codes you can use, specified using a double backslash. If you actually find a clever use for that second one, do tell. The latest version is available for automatic update (Bunch->Check For Updates) or download from the project page. As always, it&rsquo;s donationware and I sincerely thank everyone who&rsquo;s found it useful enough to pitch in",
		"keywords": ["batch","launcher","macos","applescript","arrow","before","bunch","bunches","check","close","command","control","disturb","github","grape","return","right","shift","sublime","tower","updates","windows","within","adding","anyway","assumption","automatic","available","backslash","batch","between","bindings","brackets","changelog","changes","characters","clearly","clever","close","codes","command","create","curly","donationware","double","download","dozen","enough","escape","everyone","example","files","finished","found","freelance","frontmost","happened","haven","keystrokes","latest","latter","launch","launching","macos","mnemonic","morning","multiple","nature","needed","newline","newlines","normally","opening","parameters","paste","pitch","pointless","presupposes","project","promised","ready","recent","regular","repository","respond","rsquo","second","sending","sequence","sequences","series","shortcut","shortcuts","sincerely","space","specify","sprint","square","strings","stuff","surround","symbol","thank","toggling","typing","useful","using","version","whatever","window","windows","within","written","wrote"]
	},{
		"title": "Sponsor: Unlock your productivity with TextExpander",
		"url": "/2019/08/08/sponsor-unlock-your-productivity-with-textexpander/",
		"tags": ["productivity","sponsor","textexpander"],
		"date": "Aug 8<span>th</span>, 2019",
		"ts": "1565265600",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander remains the most-used utility on my Mac, helping me out pretty much every time I type anything. So all the time, really. If you haven&rsquo;t already checked it out, follow the link at the end for 20% off your first year. Unlock your productivity with TextExpander. Easily insert text snippets in any application from a library of content created by you and/or your team. Add snippets for anything you type repetitively, shortening words, sentences, or entire emails to a few characters. TextExpander works everywhere you type, improving your productivity and accuracy no matter what apps you use. It&rsquo;s available for macOS, Windows, iPhone and iPad, and Chrome, so you can maintain consistency across all of your devices and platforms. In addition to saving time, TextExpander for Teams saves team members from sharing outdated information and helps everyone provide consistent responses. BrettTerpstra.com readers get 20% off their first year. Just visit textexpander.com/podcast to learn more about TextExpander",
		"keywords": ["expansion","smile","snippets","textexpander","brettterpstra","chrome","easily","teams","textexpander","thanks","unlock","windows","accuracy","across","available","characters","checked","consistency","consistent","content","created","devices","emails","entire","everyone","everywhere","first","haven","helping","helps","iphone","improving","information","learn","library","macos","maintain","members","outdated","platforms","podcast","productivity","readers","remains","repetitively","responses","rsquo","saves","saving","sentences","sharing","shortening","snippets","sponsoring","textexpander","utility","visit","words","works"]
	},{
		"title": "Your August nvUltra update",
		"url": "/2019/08/07/your-august-nvultra-update/",
		"tags": ["keyboard","markdown","nvalt","nvultra","search","simplenote"],
		"date": "Aug 7<span>th</span>, 2019",
		"ts": "1565198760",
		"summary": "The nvUltra private beta now has about 500 users putting it through its paces, and is rapidly nearing readiness for shipping. There are still a few major hurdles to jump through, and we&rsquo;re sifting through user feedback &mdash; deciding what&rsquo;s a valid feature request and what needs further clarification in our driving philosophy. I can&rsquo;t put a solid date on release yet, but I have fond hopes of a late August release. Much to do before then, though, and you probably know how my release dates can slip (but I 100% guarantee this is not going to be BitWriter all over again)! Here&rsquo;s the latest, with the caveat that there&rsquo;s always the possibility that certain features change or don&rsquo;t make it to final release. (A lot of other behavior changes have happened, but most people not currently testing wouldn&rsquo;t have known the original behavior to begin with, so on that you&rsquo;ll have to trust me when I say that it&rsquo;s getting better and better.) First, nvUltra can now run without a Dock icon (menu bar). When bringing it back up, either by hitting the user-defined hotkey or clicking the menu bar, the Dock icon appears temporarily. This makes all of the menu items available, allowing full control over the application in menu bar mode. I believe this to be a good solution considering that in nvALT &mdash; when running in the menu bar &mdash; you couldn&rsquo;t even get to Preferences without knowing the keyboard shortcut for the menu item. Now you can get to everything, and as soon as you switch away it&rsquo;s out of your Dock again. Rather than going with a 3-pane layout to include folders, we&rsquo;ve added a \"Folder Navigator.\" While most modern note-taking apps provide a left pane where you can build whole folder collections and hierarchies, this runs contrary to the way we use Ultra. Coming from the \"one big bucket\" philosophy of Notational Velocity, we focus first on tagging and fast and accurate full-text search, avoiding the need to file everything in specific folders. We also keep everything in plain text on your drive, so files have to actually exist in a subfolder to be \"foldered\" in Ultra, i.e. not a database that can just represent files in whatever folder(s) you assign them to. That said, Ultra can open any folder as a new \"bucket,\" and can have multiple folders open at once. Subfolders are recognized within any folder as well. So if your organization system includes, for example, a subfolder for each&hellip;",
		"keywords": ["notational","notes","nvalt","velocity","assets","beyond","bitwriter","coming","drive","dropbox","everyone","first","fletcher","folder","latest","major","markdown","multimarkdown","navigator","notational","preferences","quick","rather","simplenote","speaking","stuff","subfolders","ultra","ulysses","using","velocity","while","writer","ability","accessibility","accurate","added","again","allowing","another","appears","assets","assign","audience","automatically","available","avoiding","awful","because","before","begin","behavior","believe","bizarre","bring","bringing","bucket","build","caveat","certain","change","changes","choice","clicking","cloud","collections","comes","compatible","conducive","consider","considering","contact","control","copying","couldn","couple","daily","database","dates","deciding","deeper","defined","disability","distaste","distinct","doubled","drafts","drive","driving","editable","editor","either","embed","embrace","emphasis","especially","everything","example","exist","expanding","feature","features","feedback","files","first","focus","focused","folder","foldered","folders","footnotes","format","freely","fuzzy","generated","getting","going","guarantee","happened","heavily","hierarchies","hitting","hopes","hotkey","hurdles","icloud","ideal","image","images","includes","invite","items","itself","keeping","keyboard","keystrokes","knowing","latest","layout","learning","limit","limits","lingual","longevity","mailing","major","makes","masse","mdash","modern","movies","multi","multiple","nearing","needed","needs","notebook","notebooks","notes","nvalt","nvultra","opened","organization","original","outside","paces","people","perhaps","philosophy","points","portability","possibility","preferrable","previews","private","project","putting","quick","rapidly","readiness","realize","receptive","recognized","regularly","release","requires","roadmap","rsquo","running","search","selection","service","shipping","shortcut","sidebar","sifting","single","snippets","solid","solidified","solution","special","specific","specifically"]
	},{
		"title": "MacUpdater --- effortlessly keep all your apps up to date",
		"url": "/2019/08/01/macupdater-effortlessly-keep-all-your-apps-up-to-date/",
		"tags": ["sponsor"],
		"date": "Aug 1<span>st</span>, 2019",
		"ts": "1564657200",
		"summary": "Thanks to MacUpdater for sponsoring BrettTerpstra.com this week! I started using it recently and found it to be a good replacement for MacUpdate Desktop. It finds everything and is smart and safe about installing updates. Happy to have them on board! MacUpdater can scan your Mac and tell you which of your installed apps are not up-to-date. MacUpdater can then update those outdated apps to their latest versions with a single click. MacUpdater can run silently in the background and check your apps for updates every day, and let you know with a notification once a new update for any installed app is available. MacUpdater currently detects updates for over 35,000 apps and can automatically update more than 5,000 popular apps with one click. After launching MacUpdater you&rsquo;ll see a list of all your apps and their version information. Apps with available updates are listed in red, apps that are up-to-date are listed in green. There are filter options to display just outdated apps or ignore apps from being updated. Furthermore, you can automatically back up apps before updating or make safety backups of downloaded updates. MacUpdater is permanently free for discovering updates for your apps. Updating more than 10 apps using MacUpdater requires a one-time purchase (9.99$/€) &mdash; no subscription or even registration is needed. All BrettTerpstra.com readers get 10% off by using the coupon code during purchase. Ready to get started? Head to www.macupdater.net for more information and to download MacUpdater for free",
		"keywords": ["macos","macupdater","brettterpstra","brettterpstra","desktop","happy","macupdate","macupdater","mawebl","ready","sponsored","syndicate","thanks","updating","vsayd","automatically","available","background","backups","before","blockquote","board","brettterpstra","check","class","click","coupon","detects","discovering","display","download","downloaded","everything","filter","finds","found","green","height","highlighter","https","ignore","image","information","installed","installing","language","latest","launching","listed","loading","macupdater","mdash","media","needed","nofollow","noscript","notification","options","original","outdated","permanently","picture","plaintext","popular","readers","recently","registration","replacement","requires","rouge","rsquo","safety","silently","single","smart","source","sponsoring","srcset","started","strong","subscription","title","updated","updates","updating","uploads","using","version","versions","width"]
	},{
		"title": "Macstock 2019 was awesome",
		"url": "/2019/07/31/macstock-2019-was-awesome/",
		"tags": ["macstock","personal"],
		"date": "Jul 31<span>st</span>, 2019",
		"ts": "1564590900",
		"summary": "Elle and I got back from Macstock 2019 (a.k.a. Macstock 5) on Monday. We stayed an extra day to spend some time in Woodstock, the wonderful little Illinois town that is host to Macstock (or close enough, it&rsquo;s actually in nearby Crystal Lake). It seemed scheduling conflicts and personal affairs abounded this year, but despite some notably missing faces the numbers grew again, as they do every year this goes on. And what a crowd, I met so many new people this year, and had some great times with friends new and old. The talks were great. I loved presentations from David Sparks, Rosemary Orchard, Allison Sheridan, Mike Schmitz, and all the others. I especially enjoyed Chuck Joiner&rsquo;s presentation on how to create a good presentation deck &mdash; presented the day before my own talk &mdash; that made me realize I don&rsquo;t know how to make a good presentation deck. I felt like my own talks went well enough, though I always feel like I get more credit than I should. Imposter syndrome, I suppose. There were live podcasts from Mac Power Users and others, as well as the Macstock Film Festival, game night, and plenty of entertainment to go around. And if you have/make the time, there&rsquo;s Woodstock to visit and lots of local shops to enjoy. (I love Ethereal Confections and would be severely disappointed if &mdash; on any given trip to the area &mdash; I didn&rsquo;t get to go.) To everyone I met I want to say that it really was great to meet you. I wasn&rsquo;t just saying that. There were enough people there that I felt it was important to talk to that I might have come off as uninterested on occasion, flitting from one conversation to the next. Please don&rsquo;t think it was anything less than an honor to meet you. The number of times I was thanked for my work, my blog, or my podcasts was tremendous and meant the world to me. I did not take as many pictures as I should have, but here are a few I did pull off&hellip",
		"keywords": ["conference","allison","chuck","confections","crystal","david","ethereal","festival","illinois","imposter","joiner","macstock","monday","orchard","rosemary","schmitz","sheridan","sparks","users","woodstock","abounded","affairs","again","before","close","conflicts","conversation","create","credit","crowd","disappointed","enjoy","enjoyed","enough","entertainment","especially","everyone","extra","faces","flitting","friends","great","hellip","honor","important","little","local","loved","mdash","meant","missing","nearby","night","notably","numbers","others","people","personal","pictures","plenty","podcasts","presentation","presentations","presented","realize","rsquo","saying","scheduling","seemed","severely","shops","spend","stayed","suppose","syndrome","talks","thanked","think","times","tremendous","uninterested","visit","wonderful","world"]
	},{
		"title": "Carbon Reintroduction",
		"url": "/2019/07/19/carbon-reintroduction/",
		"tags": ["personal","privacy","security"],
		"date": "Jul 19<span>th</span>, 2019",
		"ts": "1563541200",
		"summary": "A while back I switched this site into high-privacy mode, switching to SSL and removing Google analytics and click-based advertising. I&rsquo;ve been happy with the results, including using Fathom for analytics. Since then, I&rsquo;ve been talking to the folks at BuySellAds, owners of Carbon Ads, about their privacy policies and have decided to re-introduce the single Carbon ad that I run in the sidebar. This is after carefully reviewing their take on data collection and their privacy policy. They collect only necessary data and track zero personal identity bits. It&rsquo;s enough to convince me that I&rsquo;m not risking your privacy by running their ads on my site. If you have any questions or concerns, I&rsquo;m happy to listen. At this point, though, I think that Carbon and BuySellAds are doing a commendable job in a world where &mdash; more often than not &mdash; ad companies take the low road",
		"keywords": ["analytics","digital","google","identity","internet","issues","management","media","privacy","social","buysellads","carbon","fathom","google","since","advertising","analytics","based","carefully","click","collect","collection","commendable","companies","concerns","convince","decided","doing","enough","folks","happy","identity","including","introduce","listen","mdash","necessary","often","owners","personal","point","policies","policy","privacy","questions","removing","results","reviewing","risking","rsquo","running","sidebar","single","switched","switching","talking","think","track","using","where","while","world"]
	},{
		"title": "The Keyboard Maestro Field Guide Winners",
		"url": "/2019/07/18/the-keyboard-maestro-field-guide-winners/",
		"tags": ["giveaway","keyboard"],
		"date": "Jul 18<span>th</span>, 2019",
		"ts": "1563475500",
		"summary": "The revamped Killotron Giveaway Robot functioned flawlessly all the way up until actually sending out the emails; it made me do the final stretch by hand, so we&rsquo;ll call that \"mostly\" successful with a bit to fix for next time. Thanks again to David Sparks for providing the codes, and even if you didn&rsquo;t win, you should go check out the Keyboard Maestro Field Guide (and all the other great Field Guides at learn.macsparky.com). I guarantee you&rsquo;ll learn a lot from one of the most helpful guys in the Mac world",
		"keywords": ["field","guide","keyboard","macsparky","maestro","clemmensen","congratulations","david","field","giveaway","guddat","guide","guides","holmen","keyboard","killotron","maestro","martin","mcdonnell","michael","reventlow","robot","simon","sparks","thanks","watts","again","check","codes","emails","flawlessly","functioned","giveaway","great","guarantee","helpful","learn","macsparky","mostly","providing","revamped","rsquo","sending","stretch","successful","tomcat","winners","world"]
	},{
		"title": "Sponsor: Timing, better Screen Time for the Mac",
		"url": "/2019/07/18/sponsor-timing-brings-screen-time-to-the-mac/",
		"tags": ["macos","sponsor"],
		"date": "Jul 18<span>th</span>, 2019",
		"ts": "1563454800",
		"summary": "Thanks to Timing for sponsoring BrettTerpstra.com this week! Are you up to date with the latest on Screen Time, Apple&rsquo;s time tracking solution? Screen Time already keeps track of the time you spend using the different apps on your iPhone and iPad. Now Apple has announced that with the macOS Catalina update, you will be able to track the time you spend on your Mac too! Want to know more about what exactly Screen Time is? Get yourself up to date with a look at our guide for Screen Time. The not so great news? The features of Screen Time are very basic, especially for someone tracking their time on a professional level. The featureset is so limited that you&rsquo;ll only have access to 30 days of activity — and nothing more than a high level overview of what you were working on. Simply put, Screen Time doesn&rsquo;t provide enough detailed information. That&rsquo;s where Timing comes in. Similar to Apple&rsquo;s Screen Time, Timing automatically tracks the time you spend on your Mac. What&rsquo;s more, every document you touch is tracked with Timing. You can then break your time down and assign it to customer projects — giving you a much more detailed look at how you spend your time. Timing doesn&rsquo;t stop when you&rsquo;ve stepped away from the computer. Unlike with Screen Time, you can manually add your time offline &mdash; perfect for when you&rsquo;re on a client call or in a meeting. You&rsquo;ll love the calendar integration too. With a single click, you can create time records for events from your calendar. And even the most analytical will love Timing&rsquo;s custom, detailed reports! Ready to take advantage of all Timing has to offer? Read more on our blog post getting Screen Time&rsquo;s functionality on your Mac with Timing. Then, download the 14-day free trial and save 10%",
		"keywords": ["macos","screen","timing","apple","brett","brettterpstra","catalina","ready","screen","similar","simply","thanks","timing","unlike","access","activity","advantage","analytical","announced","assign","automatically","basic","break","brett","brettterpstra","calendar","campaign","class","click","client","comes","computer","create","custom","customer","definitive","desktop","detailed","different","document","doesn","download","enough","especially","events","features","featureset","functionality","getting","giving","great","guide","height","https","iphone","image","information","integration","iphone","keeps","latest","level","limited","loading","macos","manually","mdash","media","medium","meeting","nofollow","noscript","nothing","offer","offline","original","overview","picture","professional","projects","reports","right","rsquo","screen","single","solution","source","spend","sponsoring","srcset","stepped","timingapp","title","touch","track","tracked","tracking","tracks","trial","uploads","using","where","width","working"]
	},{
		"title": "Sponsor: Give your productivity a boost with TextExpander",
		"url": "/2019/07/11/give-your-productivity-a-boost-with-textexpander/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Jul 11<span>th</span>, 2019",
		"ts": "1562850000",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander from Smile continues to be my most-used app on my Mac, and it&rsquo;s a huge timesaver on my iOS devices. It&rsquo;s an honor to have Smile&rsquo;s continued support! Your time is too valuable &mdash; and life is too short &mdash; to constantly retype what could be a snippet. Turn the things you type often into short triggers that expand everywhere you type. Summon these snippets in any app on Mac, Windows, iPhone, iPad, and even ChromeOS using an abbreviation, or search for them using a hotkey while you&rsquo;re typing. Companies use TextExpander for Teams for customer support, reports, email, and anywhere else they need consistent and accurate text. Want to make sure everyone on your team uses the same phrasing and replies with a consistent voice? TextExpander. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com to learn more about TextExpander",
		"keywords": ["chromeos","expansion","iphone","productivity","smile","textexpander","brettterpstra","chromeos","companies","smile","summon","teams","textexpander","thanks","visit","windows","abbreviation","accurate","addresses","answers","anywhere","common","consistent","constantly","continued","continues","customer","devices","directions","email","everyone","everywhere","expand","first","honor","hotkey","iphone","learn","mdash","often","phrasing","proposals","questions","readers","regularly","replies","reports","requests","retype","rsquo","search","short","snippet","snippets","sponsoring","support","textexpander","timesaver","today","triggers","typing","using","valuable","voice","website","while"]
	},{
		"title": "Giveaway: The Keyboard Maestro Field Guide",
		"url": "/2019/07/10/giveaway-the-keyboard-maestro-field-guide/",
		"tags": ["automation","giveaway","keyboard","tutorial","video"],
		"date": "Jul 10<span>th</span>, 2019",
		"ts": "1562783880",
		"summary": "I saw a great response to my post about MacSparky&rsquo;s Keyboard Maestro Field Guide, and David was kind enough to provide some promo codes for a giveaway. If you haven&rsquo;t checked it out, it contains everything you need to know to get started and dive deep with the Mac automation utility Keyboard Maestro. I recently switched my hosting for this site, and as a result I had to rewrite the Killotron Giveaway Robot. I can&rsquo;t easily run CouchDB on Dreamhost, so the whole thing is now backed by Firebase (no, I don&rsquo;t want to work with mySQL, actually). So this is the first public run of the new setup, and if there are complications I&rsquo;ll be immediately pulling this post and trying again after some fixes. But I think it&rsquo;s working. I have 5 copies of the Keyboard Maestro Field Guide to give away. Add your name and email below to enter the drawing. Winners will be randomly selected on July 15 at noon CST. Sorry, this giveaway has ended",
		"keywords": ["david","field","guides","keyboard","macsparky","maestro","sparks","couchdb","david","dreamhost","field","firebase","giveaway","guide","keyboard","killotron","macsparky","maestro","robot","sorry","winners","again","automation","backed","below","checked","codes","complications","contains","copies","drawing","easily","email","ended","enough","enter","everything","first","fixes","giveaway","great","haven","hosting","mysql","promo","public","pulling","randomly","recently","response","rewrite","rsquo","selected","setup","started","switched","think","trying","utility","whole","working"]
	},{
		"title": "Scripting Mac display brightness",
		"url": "/2019/07/08/scripting-mac-display-brightness/",
		"tags": ["automation","desktop","macos","office","scripting","shell"],
		"date": "Jul 8<span>th</span>, 2019",
		"ts": "1562608020",
		"summary": "After talking about it with the panel on a recent Mac Show appearance (pretty sure this part of the conversation happened during technical difficulties), I pulled out my Griffin PowerMate. The older USB one. While I did upgrade to the Bluetooth version, I still like the USB one better1. For various reasons, I&rsquo;d replaced it with my Shuttle Xpress on my desk, but I found space to comfortably use both and set about re-configuring the actions on it. Meanwhile, I keep waking up too early and being unable to fall back asleep2. Which means I slog to my computer in the dark, and coming out of a pitch black room means adjusting my monitor brightness more than \"automatically adjust brightness\" will accommodate. With BetterTouchTool and my Ultimate Hacking Keyboard I have Fn-M and Fn-N assigned to simultaneously increase and decrease the brightness on both of my MacBook Pro display and my external Thunderbolt Display, which is generally satisfactory. But with the PowerMate on my desktop, I developed a curiosity. You can see where this is going. The thing is, unlike system volume, there&rsquo;s no System Events API for display brightness. To script it, you have to open System Preferences and use accessibility scripting to actually move the slider, which I refuse to do on principle. It took a while to find a CLI called by Nicholas Riley, but it&rsquo;s a perfect fix. It can query all displays for current brightness levels (and other info) and modify the brightness on any or all displays from the command line. can be installed with Homebrew: will do the trick. Once installed, you can use to query all displays for basic info: The current display brightness is returned as a float (decimal) between 0 and 1, so 0.5 is half brightness, and 1 is full. To set a new brightness, just call with a float between 0 and 1 as an argument, e.g. . You can specify a display with for the \"main\" display or and an integer to target a specific display by number (as returned in the listing). In order to put brightness control onto the spinning knob of my PowerMate, I needed to be able to increment and decrement instead of setting the brightness directly. And that&rsquo;s the only thing that is missing. I started hacking the source to handle this, but because the project is regularly maintained as the SDK changes, I thought twice about messing up its ability to be updated. So a simple script wrapper handles it. Using (or ) will increase the brightness of all attached&hellip;",
		"keywords": ["brightness","powermate","applescript","applescripts","aside","bettertouchtool","bluetooth","brett","brightness","bunch","copyright","display","error","events","execute","griffin","hacking","homebrew","iokit","indigo","jkutgo","keyboard","macbook","meanwhile","nicholas","opengl","powermate","preferences","process","requires","returns","riley","shuttle","system","terpstra","thunderbolt","ultimate","usage","users","using","while","xpress","ability","acceleration","accessibility","accommodate","accustomed","actions","active","adjust","adjusted","adjusting","allow","allows","answer","appearance","applescript","argument","article","asleep","assigned","assume","attach","attached","automatically","automation","awake","backlink","basename","basic","because","believe","below","between","black","brettterpstra","brighten","brightness","britishtechnetwork","built","bunch","called","changes","checking","class","comfortably","coming","command","compensate","computer","conditionals","configuring","continues","control","controls","conversation","cripple","curiosity","decimal","decrease","decrement","decrementing","desktop","details","developed","directly","disappearing","display","displays","duckduckgo","elsif","endnotes","error","executable","external","fcbaa","figcaption","figure","finds","first","flags","float","fnref","folivora","footnote","footnotes","forgot","found","frustration","functions","generally","gestures","github","githubusercontent","going","grown","hacking","handle","handles","happened","happens","hardware","header","height","hellip","helpful","highlight","highlighter","hopefully","hours","https","image","implementation","including","incorporate","increase","increment","incrementing","indigodomo","information","install","installation","installed","integer","language","later","ldquo","length","level","levels","library","light","lights","listing","loading","local","macos","maintained","match","media","messing","missing","modifier","modify","monitor","needed","negative","night","noscript","noteref","nriley","office","older","online","optionally","options","origin","original","others","overruns","panel","partly"]
	},{
		"title": "Emoji input on macOS",
		"url": "/2019/07/04/emoji-input-on-macos/",
		"tags": ["keyboard","macos","quicktip","search"],
		"date": "Jul 4<span>th</span>, 2019",
		"ts": "1562250240",
		"summary": "Happy Independence Day to my US readers. I&rsquo;m not doing any parades, nor running any special discounts on my apps. Just a silly post. Since this blog has always been 86% me documenting things I figured out so I can find them later, I&rsquo;m going to go ahead and write about something I&rsquo;m pretty sure everybody else already knew. I&rsquo;ll start with a drawn-out backstory. I held out on the whole emoji thing for a long time. I figured there had to be a reason that Apple, Google, Microsoft, and others were putting so much effort into adding them to messaging, but it didn&rsquo;t make sense in my own habits. I&rsquo;m a person who even in a 140-character message would prefer to use multiple messages to allow complete words and sentences with correct punctuation than lower myself to the level of \"idk prly dum.\" But I started to see the intrigue of creating a new language, one based on hieroglyphs that held different meanings in different contexts and combinations, and even changing definitions between tribes. They could be used to punctuate regular text, or to add humor through ambiguity, or to provide a more precise representation of intent and emotion than text alone could, and with more depth than emoticons could. So maybe two years ago I really started using them. On my iPhone, emoji input is really easy. Even with Apple&rsquo;s default keyboard &mdash; but more so with Gboard or some of the emoji-centric 3rd-party keyboards &mdash; they were always at hand and almost as accessible as regular alphanumeric characters. But what about on my Mac? Now that I&rsquo;m using them frequently, it was annoying to deal with the impediments there. So, first step, the character palette. By default the keyboard shortcut is ⌃⌘␣ (Control-Command-Space). I hit it while typing in Messages and it gave me a popup with available emoji. I could search by name or just use the arrow keys to navigate the list as a grid. Ok. Then I enter one and it disappears. I have to open it again, navigate again, and then it disappears again. You can also open the traditional character palette input method using the icon in the upper right of the popup panel. In this mode it stays open and doesn&rsquo;t take keyboard focus, so you can click multiple emoji and keep typing. But because it doesn&rsquo;t take keyboard focus, it also means you have a float-over window that requires mouse interaction every time, and each character requires a double-click. Tradeoff. There&&hellip;",
		"keywords": ["emoji","anyway","apple","command","control","gboard","google","happy","independence","keyboard","maestro","messages","microsoft","since","space","textexpander","tradeoff","weirdly","accessible","adding","again","ahead","allow","allows","almost","alone","alphanumeric","ambiguity","animated","annoying","arrow","available","backstory","based","because","becomes","below","between","brettterpstra","caption","centric","change","changing","character","characters","class","click","clicking","closing","combination","combinations","contexts","continue","creating","default","definitions","depth","different","disappears","discounts","discoveries","documenting","doesn","doing","double","effort","emoji","emojiheader","emojipanel","emojipopup","emoticons","emotion","enter","eventually","everybody","field","figure","figured","firetrucks","first","float","floating","focus","frame","giving","going","great","groundbreaking","habits","happen","height","hellip","hieroglyphs","https","humor","iphone","image","impediments","input","intent","interaction","intrigue","keyboard","keyboards","keycaps","language","later","ldquo","level","loading","lower","macros","maybe","mdash","meanings","media","message","messages","messaging","method","mouse","multiple","myself","navigate","needing","noscript","original","others","palette","panel","parades","party","person","phone","picture","popup","precise","prefer","programmable","punctuate","punctuation","putting","quickly","rdquo","readers","regular","relatively","representation","requires","right","rsquo","running","search","seems","sense","sentences","shortcut","silly","single","slightly","small","snippets","source","special","srcset","started","stays","strong","tabindex","third","through","title","traditional","tribes","typing","untether","uploads","upper","using","while","whole","width","window","words","write","writing","years"]
	},{
		"title": "Web Excursions for July 03, 2019",
		"url": "/2019/07/03/web-excursions-for-july-03-2019/",
		"tags": ["bookmarks"],
		"date": "Jul 3<span>rd</span>, 2019",
		"ts": "1562166000",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Eva Design System: Deep learning color generator I think the most common reason I break out color wheels is to find the right success/info/warning/error colors for a web interface. This tool lets you specify a primary color and generates your green, blue, yellow, and red hues to match it. Xprim A free tool which enables presenters to conduct live polls during a talk. Put up a QR code to link everyone to the polls and Q&A forms, then get feedback as you go. Cool idea. For a better overview, be sure to check the docs. swiftwebui/SwiftWebUI A demo implementation of SwiftUI for the Web. It&rsquo;s a fun toy to start playing. Requires macOS Catalina and Xcode 11, so if you weren&rsquo;t already sure it was for devs&hellip; soheilpro/catj A CLI that displays JSON files in a flat format, quickly turning JSON data into valid JavaScript field references. It will make more sense when you check out the repo. History Will Not Be Kind to Jony Ive A scathing but undisputable take from Jason Koebler at Motherboard. \"Ive, Apple&rsquo;s Chief Design Officer, is leaving the company. He leaves a legacy that made its products hard to repair and impossible to upgrade.\" Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["apple","design","swiftui","apple","catalina","check","chief","design","history","jason","javascript","koebler","mindmeister","motherboard","officer","requires","swiftui","swiftwebui","system","xcode","xprim","boosting","brainstorming","break","brought","check","collaborating","collaborative","color","colors","common","company","conduct","displays","enables","error","everyone","excursions","feedback","field","files","format","forms","generates","generator","green","hellip","implementation","impossible","interface","learning","leaves","leaving","legacy","macos","mapping","match","overview","partnership","playing","polls","presenters","primary","productivity","products","quickly","references","repair","right","rsquo","scathing","sense","software","soheilpro","specify","success","swiftwebui","think","turning","undisputable","upgrade","valid","warning","weren","wheels","yellow"]
	},{
		"title": "Bunch and Timing.app",
		"url": "/2019/07/02/bunch-and-timing/",
		"tags": ["applescript","automator","bunch","developer","nvultra","scripting"],
		"date": "Jul 2<span>nd</span>, 2019",
		"ts": "1562101620",
		"summary": "I started this post a while ago, before I realized that Timing would be sponsoring the blog later this month. So full disclosure, Timing is sponsoring the blog later this month. This is a handy trick either way, so I&rsquo;ll go ahead and post it as&hellip; value added? Intro recap: Bunch is my little utility for batch launching apps and switching \"contexts\" as you work on your Mac. Timing is an excellent time tracking app for Mac that automatically keeps track of what you&rsquo;re working on, helping you compile accurate reports of your time. Aside from just launching apps, Bunch has features for running scripts and Automator Workflows. And Timing has an AppleScript dictionary that makes it easy to change the current \"task\" (a classification you can add to a time block). Thus, in a Bunch that launches a specific project context, you can use AppleScript to switch Timing over at the same time. There are a few ways to do it, but the simplest is with raw AppleScript. At the top of the Bunch I use to switch to working on nvUltra, I have this: The first line stops whatever task is currently being tracked. The second line sets the task to \"nvUltra\" and the project to \"Development\" (so as not to confuse it with the \"Writing\" nvUltra task). The last line () is only run when the Bunch is being closed. It will return Timing to general tracking without an assigned task. If you want to get a little more reusable with this, you can create a shell script or Automator workflow and either pass arguments to it, or have logic that uses the environment variable to determine the task automatically. ( is populated with the name of the Bunch in any script environments, and it shows up as a variable named \"Bunch\" for Automator workflows). I&rsquo;m including a Workflow below that accepts a \"task\" and \"project\" variable when called from the Bunch, like this: Note that I have my Workflows stored in a subfolder () and that the extension is assumed by Bunch, so that&rsquo;s not needed in the line that calls it. It will automatically stop any running task before starting the one you pass. When it&rsquo;s run without any arguments, as shown in the last line, it quits the current task and exits. Here&rsquo;s what it looks like. If you&rsquo;re interested in the actual AppleScript, just download below and open it in Automator. You&rsquo;ll see the variables named \"task,\" \"project,\" and \"Bunch\" present in the variables section of the Workflow. These must exist for&hellip;",
		"keywords": ["timing","automation","tracking","applescript","aside","automator","bunch","bunches","changelog","development","donate","download","intro","omnifocus","published","timing","updated","workflow","workflows","writing","above","accepts","accurate","added","admittedly","ahead","arguments","assigned","assumed","automatically","batch","before","below","block","called","calls","change","check","classification","closed","confuse","context","contexts","create","dictionary","disclosure","download","either","empty","environment","environments","example","excellent","exist","exits","extension","features","first","focus","forget","general","handy","hellip","helping","including","instance","integrating","interested","items","keeps","later","latest","launch","launches","launching","limited","little","logic","looks","makes","named","needed","nvultra","parameters","populated","project","quits","realized","recap","relevant","reports","return","reusable","rsquo","running","script","scripting","scripts","second","section","shell","shown","shows","simplest","somewhere","specific","sponsoring","started","starting","stops","stored","subfolder","switch","switching","tasks","timing","tools","track","tracked","tracking","trick","utility","value","variable","variables","whatever","while","workflow","workflows","working"]
	},{
		"title": "Sponsor: TableFlip -- The Ultimate Plain Text Table Editing Tool, now in the Mac App Store",
		"url": "/2019/06/27/sponsor-tableflip-the-ultimate-plain-text-table-editing-tool-now-in-the-mac-app-store/",
		"tags": ["appstore","editor","macappstore","macos","markdown","sponsor","tools"],
		"date": "Jun 27<span>th</span>, 2019",
		"ts": "1561633200",
		"summary": "Thanks to TableFlip for sponsoring BrettTerpstra.com this week. This app is one of the coolest task-specific Markdown tools I&rsquo;ve seen in years, making editing MultiMarkdown-style tables in your documents truly painless. I&rsquo;m honored to have their support this week! TableFlip is compatible with every plain text workflow imaginable. Use whichever editor you like, and keep it open while you work with TableFlip. You can use Marked 2 and TableFlip in concert to enhance your Markdown workflow. It&rsquo;s fast, it&rsquo;s fun to use, and it&rsquo;s now on the Mac App Store. Having a look at a CSV export of your database becomes painless. Adjusting the Markdown tables for your upcoming book is easy as pie (the eating, not the baking). Tabular data should be edited in a tabular way, not as a string of characters. Look at column data in a CSV file in an instant, whereas regular spreadsheet software needs ages to even launch! Markdown tables from anywhere inside your text can be edited conveniently in the graphical editor. This beats mangling text every time. Imagine editing Markdown table syntax on a per-column basis. Text processing doesn&rsquo;t support this well. Text is a linear sequence of characters. You think in terms of a two-dimensional table. That&rsquo;s a bad clash of expectations! With TableFlip, you edit Markdown tables live and in-place in a graphical editor. Open the document to view and edit all the tables buried inside. You will know how to use the editor immediately. It comes with industry-standard shortcuts for editing spreadsheets. And if you need to add more columns or rows, TableFlip is built all around that: Just move beyond the boundaries with your arrow keys and begin editing right away! If you rearrange parts of a table and want to prune excess columns and rows, TableFlip has you covered, too. Let the app clean up the mess for you! If you use Marked 2 to have a live preview of your Markdown documents already, toss TableFlip in the mix for some graphical editing and see how all the apps work in synchrony! It&rsquo;s so natural that it&rsquo;s weird to even mention, but TableFlip does allow you to use whichever tool you prefer to edit and process your text files. It does not lock you in, and it does not change the file encoding. You have all the power &mdash; and even more with TableFlip added to your tool chain. Be it dark mode or light mode, TableFlip&rsquo;s minimalistic design puts your content first. Its&hellip;",
		"keywords": ["markdown","multimarkdown","table","tableflip","adjusting","apple","available","beautiful","blazing","brettterpstra","enjoy","export","having","imagine","integrates","interface","latex","markdown","marked","multimarkdown","sponsored","store","syndicate","tableflip","tabular","thanks","added","allow","anywhere","apply","arcane","arrow","available","baking","basis","beats","becomes","begin","beyond","boundaries","built","buried","chain","change","changes","characters","clash","clean","cluttered","column","columns","comes","command","compatible","concert","content","convenience","conveniently","coolest","covered","database","design","designed","developer","dimensional","directly","document","documents","doesn","download","eating","edited","editing","editor","elegantly","elements","emphasizes","encoding","enhance","everywhere","expectations","export","files","first","flexibility","focuses","graphical","hidden","hierarchies","honored","icons","imaginable","improve","industry","inside","instant","interface","internationally","launch","light","linear","making","mangling","mdash","mention","minimalistic","natural","needs","outweighs","painless","parts","people","prefer","preview","process","processing","prune","purchasing","quickly","rearrange","recognition","regular","right","rsquo","sequence","shortcuts","software","specific","sponsoring","spreadsheet","spreadsheets","standard","store","string","stuff","style","support","synchrony","syntax","table","tables","tabular","terms","think","toolbars","tools","truly","understand","upcoming","updating","weird","whichever","while","workflow","working","years"]
	},{
		"title": "On scripting runtimes and macOS",
		"url": "/2019/06/26/on-scripting-runtimes-and-macos/",
		"tags": ["automator","macos","python","scripting","shell","tools"],
		"date": "Jun 26<span>th</span>, 2019",
		"ts": "1561574040",
		"summary": "As noted by Michael Tsai, in the Xcode 11 beta release notes, Apple notified us that scripting runtimes will be removed from \"future versions\" of macOS. I previously linked Dr. Drang&rsquo;s thoughts on this as well: Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. In future versions of macOS, scripting language runtimes won’t be available by default, and may require you to install an additional package. If your software depends on scripting languages, it’s recommended that you bundle the runtime within the app. Considering how integral these runtimes are to my own daily use of my Mac, this is a real annoyance. I&rsquo;m fully capable of installing them myself, but I still find the decision baffling. Consider the things I share right here on my blog. It&rsquo;s an extensive list, and 90% of these projects rely on Ruby, Python, or Perl to function. Even the ones that don&rsquo;t require you to go anywhere near the command line use scripting languages in the background to do what they do. So while this might not be a huge blow for me, it&rsquo;s an impediment to anyone who uses my projects that isn&rsquo;t a Terminal nerd. The Markdown Service Tools are one of my most consistently popular projects. Every one of those Services relies on a scripting language, all via Automator. So if the runtimes aren&rsquo;t available by default, does that mean that Automator won&rsquo;t have a Run Shell Script action anymore? Or, very likely, that Automator will be no more, replaced by Shortcuts and entirely lacking scripting runtimes? The announcements also include a switch from Bash to Zsh as the default shell. I&rsquo;m unclear as to whether bash will be removed from the default install entirely, but doing so would also require many of my projects to be re-tooled for zsh so as not to require every user to install bash just to run a simple shell script. Feasible, but unlikely that I&rsquo;d ever get around to updating everything that uses bash scripting at its core. Don&rsquo;t forget, even Homebrew requires Ruby to install itself, so that&rsquo;s a speed bump to easily installing command line tools. Marked makes use of the system Ruby runtime when it compiles Scrivener documents for preview, and many of my customers use Custom Processors that rely on scripting runtimes, even if they have limited experience in the shell. Some apps rely so heavily on system runtimes that they&rsquo;d be&hellip;",
		"keywords": ["apple","apple","automator","command","consider","considering","custom","destinations","drang","dropzone","feasible","homebrew","markdown","marked","maybe","michael","microsoft","processors","python","script","scripting","scrivener","service","services","shell","shortcuts","terminal","tools","windows","xcode","action","announcements","annoyance","answer","anymore","anyone","anywhere","available","background","baffling","based","benefit","blockquote","bundle","bundling","burden","capable","change","clicking","command","compatibility","compiles","complexity","consistently","controlled","convinced","crippled","customers","daily","decision","default","depends","deprecating","developer","developers","direction","directly","documents","doesn","doing","downsides","easily","effort","either","embedding","entirely","everyday","everything","example","experience","extensive","figure","forget","fully","function","garden","general","great","grokked","guess","heavily","higher","https","ification","impediment","included","including","install","installable","installing","integral","itself","keeping","lacking","language","languages","ldquo","leancrew","legacy","likely","limited","linked","macos","makes","markdown","measurable","mjtsai","moving","myself","necessary","noted","notes","notified","opposite","package","pitfalls","point","popular","population","preview","previously","projects","provides","rdquo","reasoning","recommended","related","release","relies","removed","replaced","requires","requiring","right","rsquo","running","runtime","runtimes","script","scripting","scripts","security","selling","service","share","shell","simple","software","speed","starting","switch","system","thoughts","through","tooled","tools","touted","unclear","unlikely","unnecessary","updating","upside","useful","versions","while","within","working"]
	},{
		"title": "MightyDeals",
		"url": "/2019/06/20/mightydeals/",
		"tags": ["sponsor"],
		"date": "Jun 20<span>th</span>, 2019",
		"ts": "1561035600",
		"summary": "Thanks to MightyDeals for sponsoring BrettTerpstra.com this week! This comical collection includes professional vector illustrations of 26 different cartoon characters in over 8,000 poses. You&rsquo;ll get a wide range of ages, genders, races and occupations both in color and a separate black and white set. Easy to customize with the original AI and EPS files, these colorful characters are perfect for any project from presentations to comic strips. 26 unique characters - doctor, chef, priest, policeman, soldier, detective, thief, kids, and more 8,000 different poses Great asset for presentations, tutorials, Web, print, comics, spot illustrations and more Multiple file formats - AI and EPS sets, plus PNG (transparent and individual) Bonus: includes black and white versions of each set, as well as comic strip panels, word balloons and backgrounds The entire set, with AI, EPS, and PNG formats is only $29. Check it out today",
		"keywords": ["bundle","cartoon","mightydeals","vector","bonus","brettterpstra","cartoon","character","check","great","highlights","mightydeals","multiple","thanks","vectors","asset","backgrounds","balloons","black","cartoon","characters","collection","color","colorful","comic","comical","comics","customize","detective","different","doctor","entire","files","formats","genders","illustrations","includes","individual","occupations","original","panels","policeman","poses","presentations","priest","print","professional","project","races","range","rsquo","separate","soldier","sponsoring","strip","strips","thief","today","transparent","tutorials","unique","vector","versions","white"]
	},{
		"title": "The Top 20 Apps not in my Dock",
		"url": "/2019/06/19/the-top-20-apps-not-in-my-dock/",
		"tags": ["appreview","dropzone","keyboard","launchbar","macos","password","popclip","productivity","tricks","utility"],
		"date": "Jun 19<span>th</span>, 2019",
		"ts": "1560949200",
		"summary": "I usually save up my Top Apps posts for the end of the year, but I have such a soft spot in my heart for macOS utilities that I actually mentally create these lists frequently. The half-year point seems reasonable to let one out. Every time I realize how much an app affects my workflow I want to hug it, so this is my big thank you to 20 apps on my system right now that make my life better every day. None of them run in my Dock &mdash; most of them are in the menu bar, some are completely background tasks on my machine where it&rsquo;s easy to forget that they&rsquo;re an integral part of my workflow. I see you, apps. I have custom trackpad gestures for everything. You know that thing where you sit down at someone else&rsquo;s machine and instinctively use a gesture or a keyboard shortcut only to have it not work? You should see other people trying to use my machine. LaunchBar I&rsquo;ve been falling in love with LaunchBar all over again lately. When Alfred came out with their action editor they were a step ahead, but I always come back to LaunchBar, especially now that it has an Action Editor of its own. I appreciated Dr. Drang&rsquo;s comparison. Hazel This is probably the easiest one to forget about, yet one of the most useful. My two most-used Hazel tricks are my TagFiler system and a trick I use where I can save an image file to my Desktop with an filename like and it will resize it to 1600px, create a 1x version at 800, and optimize the results. Then I drag it to&hellip; Dropzone For everything from moving files to my most common folders to uploading directly to my S3 buckets and getting a URL in my clipboard, I use Dropzone so often I take it for granted. I&rsquo;ve written my fair share of custom Destinations for it, but also use the heck out of its built in ones. Related props go to Yoink, which I&rsquo;ve been using more often than Dropzone&rsquo;s Drop Bar for collecting files to act on. Default Folder X I see DFX every time I open or save a file in any app, so I do tend to forget it&rsquo;s there, elegantly making folder navigation a breeze. TextExpander I&rsquo;ve used TextExpander seven time since starting to write this post. Still, my favorite trick is a snippet I wrote that generates and sends Marked crossgrade licenses to customers. PopClip At first I thought PopClip was weird. I didn&rsquo;t think I&rsquo;d use it because I&rsquo;m very keyboard-centric on my Mac. But using it made me&hellip;",
		"keywords": ["apple","bettertouchtool","hazel","textexpander","tools","action","alfred","amoeba","backblaze","bartender","bettertouchtool","calendar","cardhop","choosy","david","default","desktop","destinations","drang","droplr","dropzone","editor","elements","fantastical","flexibits","folder","granted","hazel","houdahspot","hyper","image","individual","karabiner","keyboard","launchbar","maestro","marked","password","popclip","related","rogue","seriously","since","soundsource","sparks","spotlight","superduper","tagfiler","textexpander","timing","toiling","yoink","access","action","affects","again","ahead","alternatives","apart","appear","appreciated","arbitrary","audio","automate","automatically","automations","background","backing","because","before","breeze","brilliance","browsers","buckets","built","categorizing","centric","certain","checked","checking","choice","chose","clipboard","clones","collecting","common","community","comparison","completely","consistent","contact","control","convenient","create","created","crossgrade","crowded","custom","customers","customizability","developer","devices","different","directly","disappeared","disappointed","discovering","doesn","easiest","editor","elegantly","email","entire","entry","especially","everybody","everyday","everything","expressions","extensions","failed","falling","favorite","favorites","feeling","field","filename","files","first","flexibility","focus","folder","folders","forget","generates","gesture","gestures","getting","granted","guide","harness","haven","heart","hellip","history","hotkey","hours","image","input","instantly","instinctively","integral","interaction","keeping","keyboard","keystrokes","kicking","language","licenses","lists","little","looking","macos","machine","makes","making","management","match","mdash","mentally","mention","menubar","moving","multiple","native","natural","navigation","night","often","opened","optimize","options","output","particular","people","point","possible","posts","powerful","productive","projects","props","quietly","ready","realize","reasonable","recent","regret","regular","remember","reminding","reports","resize","resorted","results"]
	},{
		"title": "Web Excursions for June 18, 2019",
		"url": "/2019/06/18/web-excursions-for-june-18-2019/",
		"tags": ["bookmarks","fonts"],
		"date": "Jun 18<span>th</span>, 2019",
		"ts": "1560873600",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. The Dark Side of Dark Mode Adam Engst says what I&rsquo;ve been feeling: It may be hip and trendy, but put bluntly, Dark Mode likely makes those who turn it on slower and less productive. Here&rsquo;s why, if you adopted Dark Mode purely because Apple promoted it as the new hotness, you should think hard about switching back to the Light Mode that your eyes and brain prefer. randoFont A simple but handy little tool for randomly exploring Google fonts. You can specify categories (serif, sans, mono, display) and then just shuffle through the fonts. When you don&rsquo;t have specific requirements and are just looking for a good font, it&rsquo;s a lot nicer to see a few at a time than pages of results&hellip; Deprecating scripting I&rsquo;m tempted to write my own piece on Apple deprecating the scripting runtimes, but I find myself overly emotionally attached to the topic. I&rsquo;m sure my thoughts will come out over time, but Dr. Drang&rsquo;s post covers most of my points very well. MyHumans - Regain control of incoming iPhone calls This is what it&rsquo;s come to, a call blocking app that only allows calls from your contacts (without modifying the rest of your notifications). Even with 3 call blockers running I still get multiple robocalls every day, so I don&rsquo;t see any other option. Micro Album An app that lets you easily create limited sets of pictures so you can hand your phone to a friend without concern that they&rsquo;ll swipe&hellip; too far",
		"keywords": ["macos","typography","album","apple","cleanmymac","deprecating","drang","engst","google","light","micro","myhumans","regain","adopted","allows","attached","because","blockers","blocking","bluntly","brain","brought","calls","categories","concern","contacts","control","covers","create","deprecating","display","easily","emotionally","excursions","exploring","feeling","fonts","friend","handy","hellip","hotness","iphone","incoming","likely","limited","little","looking","makes","modifying","multiple","myself","nicer","notifications","overly","pages","partnership","phone","pictures","piece","points","prefer","productive","promoted","purely","randofont","randomly","results","robocalls","rsquo","running","runtimes","scripting","serif","shuffle","simple","slower","specific","specify","speed","swipe","switching","tempted","think","thoughts","through","tools","topic","trendy","write"]
	},{
		"title": "The fickle macOS Accessibility Permissions",
		"url": "/2019/06/17/the-fickle-macos-accessibility-permissions/",
		"tags": ["macos"],
		"date": "Jun 17<span>th</span>, 2019",
		"ts": "1560776400",
		"summary": "I&rsquo;ve had this happen with several apps &mdash; some apps more than once &mdash; and maybe you&rsquo;ve seen it: the app has been manually granted permissions under System Preferences->Security & Privacy->Accessibility, but still fails to access features, especially the clipboard. This kills functionality in apps like LaunchBar and PopClip. Checking the permissions always shows they&rsquo;re enabled, and the apps don&rsquo;t seem to detect any issue; most of them notify you if they don&rsquo;t have permissions, linking you to the System Preferences pane, so it seems as though, for all intents and purposes, the system registers that permissions are set. Yet somehow, they&rsquo;re not. The solution that works every time is to remove the app from the list in System Preferences by hitting the minus symbol at the bottom, then re-add the app either by dragging it in from Finder or using the plus symbol and manually selecting it. So if you&rsquo;re seeing functions of macOS utilities inexplicably stop working, especially after an OS update, do that. It&rsquo;s an icky and impermanent solution. I find the shortcomings of the new security measures irritating. I&rsquo;m all for security. I also know what I&rsquo;m doing &mdash; and what apps I install and run &mdash; and having to give every app permission to open a folder in Finder with Apple Events is annoying. I&rsquo;d like an override that just states \"I get it, I take full responsibility.\" If nothing else, Apple, please at least fix the bugs that require users to provide permission more than once. Please and thank you1. No, I&rsquo;m not delusional enough to think that writing that on my blog would be more effective than filing a radar. And yes, I&rsquo;ll be filing a radar.&nbsp;↩",
		"keywords": ["accessibility","security","accessibility","apple","checking","events","finder","launchbar","popclip","preferences","privacy","security","system","access","annoying","apple","backlink","bottom","brettterpstra","class","clipboard","delusional","detect","doing","dragging","effective","either","enabled","endnotes","enough","especially","fails","features","filing","fnref","folder","footnote","footnotes","functionality","functions","granted","happen","having","height","hitting","https","image","impermanent","inexplicably","install","irritating","kills","ldquo","linking","loading","macos","manually","maybe","mdash","measures","media","minus","noscript","noteref","nothing","original","override","permission","permissions","picture","radar","rdquo","registers","remove","responsibility","reversefootnote","rsquo","security","seeing","seems","selecting","several","shortcomings","shows","solution","somehow","source","srcset","states","strong","symbol","sysprefsaccess","system","thank","think","title","under","uploads","users","using","utilities","width","working","works","writing"]
	},{
		"title": "Sponsor: PDFpen 11, the ultimate tool for PDF editing",
		"url": "/2019/06/13/sponsor-pdfpen-11-the-ultimate-tool-for-pdf-editing/",
		"tags": ["sponsor","tools"],
		"date": "Jun 13<span>th</span>, 2019",
		"ts": "1560427200",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! If you do anything more with PDFs on your Mac than just read them, PDFpen is your tool. Read on for why! PDFpen 11 is the ultimate tool for editing PDFs on the Mac, iPhone, and iPad, and it&rsquo;s available now. Using PDFpen, you can do all of the PDF editing tasks you&rsquo;d expect, plus you can add headers, footers and watermarks to your documents, edit graphics with the Precision Edit tool, store commonly used graphics in the Library, and scan and OCR documents so you can go paperless. With PDFpenPro you can do even more: batch OCR documents, convert websites into PDFs, create fillable PDF forms, and create and edit Table of Contents",
		"keywords": ["pdfpen","smile","software","brettterpstra","camera","contents","continuity","learn","library","pdfpen","pdfpenpro","precision","split","table","thanks","using","ability","available","batch","commonly","comparing","convert","create","document","documents","easier","editing","expect","features","fields","fillable","footers","forms","graphics","headers","iphone","includes","items","multiple","pages","paperless","rsquo","scanning","several","simultaneously","sponsoring","store","support","tasks","ultimate","users","watermarks","websites"]
	},{
		"title": "Bunches LaunchBar Action quick fix",
		"url": "/2019/06/12/bunches-launchbar-action-quick-fix/",
		"tags": ["bunch","launchbar"],
		"date": "Jun 12<span>th</span>, 2019",
		"ts": "1560355800",
		"summary": "I found a bug in Bunches, the LaunchBar Action for Bunch that I posted on Monday, and have uploaded a fix for it. The cache time is reduced to one day, and it uses LaunchBar preferences to locate your preference file rather than depending on the script environment. It should work now, but let me know if you have any problems! Oh, by the way, the latest version of Bunch can now run scripts when quitting a Bunch, too. I mean, since I&rsquo;m posting about Bunch news anyway&hellip; Bunches LaunchBar Action v2.1.0 Download Bunches LaunchBar Action v2.1.0 A LaunchBar action for Bunch Published 05/22/19. Updated 06/26/21. Changelog Donate &bull; More info&hellip",
		"keywords": ["launcher","macos","action","bunch","bunches","changelog","donate","download","launchbar","monday","published","updated","action","anyway","cache","depending","environment","found","hellip","latest","posted","posting","preference","preferences","problems","quitting","rather","reduced","rsquo","script","scripts","since","uploaded","version"]
	},{
		"title": "NiftyMenu, Mac menu madness",
		"url": "/2019/06/12/niftymenu-mac-menu-madness/",
		"tags": ["automation","macos","niftymenu"],
		"date": "Jun 12<span>th</span>, 2019",
		"ts": "1560344400",
		"summary": "Ok, this one is a little embarrassing. You know how I often refer to myself as a mad scientist? This is what I&rsquo;m talking about. I made a crazy thing last weekend that has such limited practical value that even if I found anyone else who could truly benefit from it, our combined total of time savings would struggle to come close to the Saturday morning hours that went into it. That said, it&rsquo;s too neat a trick and I put too much loving care into it to hide it. It started while I was working on documentation for nvUltra and wanted some quick screenshots of various menus. I generally have reservations doing this because over time menus always change so it&rsquo;s hard to automate, and you know you&rsquo;re going to have to do this all over again next time you move a menu item or the OS updates with some fancy new look that makes all your current screenshots look outdated. Plus the process of taking menu screenshots itself has some annoyances for me (I detailed them in the docs). If only there was a way to create a playground that I could automate&hellip; My solution is called NiftyMenu. With one script it automatically builds an HTML playground that exactly duplicates the menus of any Mac app. Click menus to lock them in place, double-click and option-click to add different callouts. Toggle background images and Dark Mode with keystrokes. Then use a JavaScript API to automate fuzzy search for clicking items, adding callouts, desktop images, and Dark Mode. See the demo to understand what I&rsquo;m talking about. If you dare, visit the GitHub repository to see the full depth of the madness. Yes, I&rsquo;ll ask my doctor about a med change",
		"keywords": ["craziness","click","github","javascript","niftymenu","saturday","toggle","adding","again","annoyances","anyone","automate","automatically","background","because","benefit","builds","called","callouts","change","click","clicking","close","crazy","create","depth","desktop","detailed","different","doctor","doing","double","duplicates","embarrassing","fancy","found","fuzzy","generally","going","hellip","hours","images","items","itself","keystrokes","limited","little","loving","madness","makes","menus","morning","myself","nvultra","often","outdated","playground","practical","process","quick","repository","reservations","rsquo","savings","scientist","screenshots","script","search","solution","started","struggle","taking","talking","trick","truly","understand","updates","value","various","visit","wanted","weekend","while","working"]
	},{
		"title": "Bunch for the menu bar",
		"url": "/2019/06/11/bunch-for-the-menu-bar/",
		"tags": ["bunch"],
		"date": "Jun 11<span>th</span>, 2019",
		"ts": "1560258000",
		"summary": "Ok, Bunch news two days in a row, despite having said I wouldn&rsquo;t keep doing this. But this one is special. I&rsquo;ll keep it short. One of the most frequent requests has been for Bunch to run as a menu bar utility. I get it. While I like having it in my Dock and it makes sense with my workflow, it&rsquo;s never made sense to have it show up in the Application Switcher (⌘-Tab). And it frequently requires clicking once to wake it up before the right click menu will work. So a menu bar app made sense. So I did that. The Bunch project page is updated with new info and downloads. If you&rsquo;re already running Bunch, the update should show up automatically. To get the menu bar goodness after you update, just use Preferences->Run In Menu Bar. You can get back to Dock Mode at any time with Preferences->Run In Dock",
		"keywords": ["launcher","utility","bunch","bunchmenubarheader","preferences","switcher","while","automatically","before","brettterpstra","bunch","class","click","clicking","doing","downloads","frequent","goodness","having","height","https","image","loading","makes","media","noscript","original","picture","project","projects","requests","requires","right","rsquo","running","sense","short","source","special","srcset","strong","title","updated","uploads","utility","width","workflow","wouldn"]
	},{
		"title": "Better Bunch for LaunchBar",
		"url": "/2019/06/10/better-bunch-for-launchbar/",
		"tags": ["bunch","launchbar","reading"],
		"date": "Jun 10<span>th</span>, 2019",
		"ts": "1560171600",
		"summary": "This post is specifically for people who use Bunch with LaunchBar. If you happen to be an Alfred user, Jay Miller is cool guy who also develops an Alfred action for Bunch. Thanks Jay! I made such a huge improvement to the \"Bunches\" LaunchBar action that I had to bump it straight up to version 2.0. Bunch has been improving, so this little one has to keep up. It&rsquo;s the way of the world. The action previously just read your Bunches folder and launched them with the URL handler. The URL handler has expanded, though, and there was a bunch1 of stuff I wanted to be able to do from LaunchBar. I actually use Bunch as much from my launcher as my Dock now, so it was worthwhile to put some time into it. Here&rsquo;s what&rsquo;s new: Using defaults to determine the Bunches folder and the Toggle Bunches preference every time the action was selected was adding 2-4 seconds of delay. I changed it to read the preference plist directly, which cut down the domain search time, but it was still consistently slow. Those preferences aren&rsquo;t likely to change all that often, so now it just caches them in the actions&rsquo; own preferences and only has a short delay once every few days when it refreshes. The cache is set to last for 3 days at a time, and you can force a refresh from the settings submenu. Allow setting a default action (Toggle, Open) that overrides your Bunch preferences When Toggle Bunches is enabled in Bunch, the Dock shows checkmarks next to open Bunches and it makes sense to have the preference there. From LaunchBar, though, I don&rsquo;t have access to the list of what&rsquo;s currently launched, so it makes more sense to set the Action to default to \"Open\". If you open the settings menu (the last item when you arrow into the Bunches action), you&rsquo;ll see the item that overrides that preference. Bonus: once you&rsquo;ve set that, you&rsquo;ll never suffer from that particular delay again. Every Bunch listed now has a child menu that offers whichever actions aren&rsquo;t default If the default action is Open or Close, hitting the right arrow (or Ctrl-L) will offer you the opposite option. If it&rsquo;s on Toggle, the options will include both Open and Close. Holding modifier keys when opening the action changes the default methods for that run Ctrl: close bunches Command: toggle bunches Shift: open bunches After you type to select the Bunches action, hold down the Ctrl key as you arrow into it. Everything will&hellip;",
		"keywords": ["launcher","macos","action","alfred","allow","bonus","brett&#39;s","bunch","bunches","bunchesheader","caching","changelog","close","command","disturb","donate","download","everything","github","holding","javascript","launchbar","miller","paypal","published","stdin","saturday","shift","sorry","spacebar","sponsor","support","tuvbv&#39;","thanks","toggle","updated","using","accept","access","action","actions","adding","again","align","anywhere","arguments","arrow","aside","background","backlink","below","between","border","brettterpstra","bunch","bunches","bunchlblogo","button","cache","caches","caching","center","change","changed","changelog","changes","checkmarks","child","class","close","codesigned","command","commands","completely","consistently","cover","default","defaults","description","develops","directly","diverged","dlbox","domain","donate","donating","download","downloads","enabled","endnotes","execute","expanded","extension","fathom","feasible","files","fnref","folder","footnote","footnotes","force","github","going","gradient","handler","handling","handy","happen","height","hellip","hidden","highlighter","hitting","https","icons","iframe","image","images","improvement","improving","information","input","intended","keyboard","kjaymiller","label","language","latest","launchbar","launched","launcher","lbchangelog","ldquo","likely","linear","listed","little","loading","logos","longer","makes","maybe","meantime","media","memorize","method","methods","modifier","morning","nerdy","newlines","noscript","noteref","obdev","offer","offers","often","onclick","opening","opposite","options","original","outsiders","overrides","packed","particular","paypalbutton","paypalform","people","picture","plaintext","plist","position","preference","preferences","press","previously","project","projects","published","radius","rdquo","ready","received","refresh","refreshes","relative","repeat","retrieved","reversefootnote","rewrote","right","rouge","rsquo","running","script","search","seconds","selected","sense","separate","setting"]
	},{
		"title": "nvUltra is nvUltra",
		"url": "/2019/06/07/nvultra-is-nvultra/",
		"tags": ["nvalt","nvultra"],
		"date": "Jun 7<span>th</span>, 2019",
		"ts": "1559944320",
		"summary": "I just wanted to post a quick progress report on the upcoming nvALT successor, nvUltra. It&rsquo;s been a big week of bug fixes and planning! First, we decided on an official name of \"nvUltra.\" We&rsquo;re sticking with the working title. Here&rsquo;s the story: when Fletcher first started working on this, before we even teamed up, he started calling it nvUltra as a play on nvALT. When he mentioned it during our first Skype chat, I thought \"whoa, that&rsquo;s perfect.\" And it was&hellip; as a name for an nvALT successor. I&rsquo;d like to think that there are potential customers outside of current nvALT users, though, and I think that \"nvUltra\" is just a weirdly spelled non-word to the uninitiated. So we started trying to find something we liked better. We went through months of brainstorming, with an extensive mind map, detailed Slack discussions, input from friends (and some of you), and conversations with other outsiders. We found a bunch of \"could be cool\" names, but none that we both agreed had any \"eureka!\" to them. So we finally admitted that the only name we both loved was nvUltra. So we&rsquo;re making it official. Now I just have to figure out the icon and branding for it. Our first round of beta testing is going well, and we&rsquo;ve slowly been adding one-off testers to the list. I would estimate another week before we officially expand the pool. Our current testers are really putting it through its paces and by the time the next invite goes out, it&rsquo;s going to be a significantly better app. Things are moving quickly! That&rsquo;s the news for now. The mailing list is getting huge, so anyone joining now will likely only get a beta invite after it&rsquo;s already public. If you want to get updates on beta and release progress, though, please do sign up",
		"keywords": ["testing","first","fletcher","skype","slack","adding","admitted","agreed","another","anyone","before","brainstorming","branding","bunch","calling","conversations","customers","decided","detailed","discussions","estimate","eureka","expand","extensive","figure","finally","first","fixes","found","friends","getting","going","hellip","input","invite","joining","liked","likely","loved","mailing","making","mentioned","moving","names","nvalt","nvultra","official","officially","outside","outsiders","paces","planning","potential","public","putting","quick","quickly","release","report","round","rsquo","significantly","slowly","spelled","started","sticking","story","successor","teamed","testers","testing","think","thought","through","title","trying","uninitiated","upcoming","updates","users","wanted","weirdly","working"]
	},{
		"title": "Sponsor: Setapp, a suite of Mac apps for all tasks",
		"url": "/2019/06/06/sponsor-setapp-a-suite-of-mac-apps-for-all-tasks/",
		"tags": ["macos","setapp","sponsor"],
		"date": "Jun 6<span>th</span>, 2019",
		"ts": "1559818800",
		"summary": "Thanks to Setapp for sponsoring BrettTerpstra.com this week! Setapp is an answer to an app world with increasing subscription fatigue, and I know Setapp both as a regular user and as a developer making income on the platform. In both regards I&rsquo;m a happy customer and am thrilled to have Macpaw and Setapp supporting my work here. Seriously, if you haven&rsquo;t tried it, it really is worth your time to go take a look. Apple keeps taking new directions, and lately one of them is moving their products to a subscription-based model. Both Arcade and Apple News+, released this year, have the same goal: to kill the paywall &mdash; but obviously not their own. They aim to eliminate paying for each separate item and allow access for a single price. Setapp &mdash; one of the first software products of its kind &mdash; appeared on the Mac market a few years ago, even before Apple started the switch to subscription. Setapp is a large collection of 150 Mac applications available for a single price of $9.99/month. The total price of all apps combined goes well over $4000. Users are free to install and use as many apps as they please, the collection continuously grows, and all future app updates are included in the subscription. The apps on Setapp cover virtually any job on Mac, from web development and design to task management, personal finance, travel plans, and photo editing. Every app goes through a thorough vetting procedure to earn its place on Setapp: it has to comply with high quality standards and be one of the best in its niche. Setapp is still a unique concept for the software market, where most of subscriptions only cover a single app. The goal is to have a go-to place for any task, without having to search for apps elsewhere and pay for each. Setapp is free to try for 7 days and it&rsquo;s sporting a fresh new design. Give it a go",
		"keywords": ["macos","setapp","software","subscription","apple","arcade","brettterpstra","macpaw","seriously","setapp","thanks","users","access","allow","answer","appeared","applications","available","based","before","collection","concept","continuously","cover","customer","design","developer","development","directions","editing","eliminate","elsewhere","fatigue","finance","first","fresh","grows","happy","haven","having","included","income","increasing","install","keeps","making","management","market","mdash","model","moving","niche","paying","paywall","personal","photo","plans","platform","price","procedure","products","quality","regular","released","rsquo","search","separate","single","software","sponsoring","sporting","standards","started","subscription","subscriptions","supporting","switch","taking","thorough","thrilled","through","travel","tried","unique","updates","vetting","where","world","worth","years"]
	},{
		"title": "The latest Bunch stuff",
		"url": "/2019/06/04/the-latest-bunch-stuff/",
		"tags": ["bunch","desktop"],
		"date": "Jun 4<span>th</span>, 2019",
		"ts": "1559653200",
		"summary": "As promised, since I&rsquo;ve added the auto-updates to Bunch I&rsquo;ve laid off on posting with every release. But there&rsquo;s enough cool new stuff now that I figured I&rsquo;d share. I&rsquo;m still toying with the idea of making this a commercial application, but for now it remains donationware. So don&rsquo;t be shy. I need a Bunch of coffee. Or me on GitHub! Since the last post, I&rsquo;ve added a&hellip; bunch of new features. One feature of note that will definitely slip under the radar is that Bunch now watches your Bunches folder and automatically detects changes to your Bunches, refreshing them in memory every time they&rsquo;re edited. No more \"Refresh Bunches\" command neccessary when experimenting. I added a few new commands to Bunch. These are lines in parenthesis which control a few macOS functions. Previously I only had commands for hiding and showing the dock set up. And commands for toggling Do Not Disturb: and . These can be abbreviated as and . I&rsquo;ll describe these briefly, but see the documentation for more details. You can now execute Automator Workflows by using at the beginning of a line. If the workflow is in your Bunches folder (or a subfolder), you don&rsquo;t even need a path or an extension for it (except for relative paths to subfolders), just a line like or . You can even pass variables to it, so you can re-use the same workflow in multiple Bunches with different inputs. You can also execute shell scripts and shell commands directly by using at the beginning of a line. These are executed as the equivalent of . You can pass arguments on the same line, or use lines below it to set environment variables. More details in the docs. You can also now add a percent sign () before an app name to ignore it when quitting a Bunch. So if you have an app you want to make sure gets launched with a Bunch, but don&rsquo;t want it to quit when toggling a Bunch off, just add at the beginning of the line. The URL handler has expanded to include and methods, as well as a method that lets you point to Bunches outside of the Bunch folder and even execute raw text as if it were a bunch. The open, close, and toggle URL handler methods will also now appropriately change the state of Bunches in the menu if you have Toggle Bunches or Single Bunch Mode enabled. I&rsquo;ve added a few alert dialogs to let you know when and why a Bunch item might be failing. Because Bunch is potentially interacting with a dozen other apps and&hellip;",
		"keywords": ["launcher","macos","actions","alfred","automator","because","bunch","bunches","commands","disturb","feedback","github","handler","improvements","integrations","launchbar","previously","refresh","since","single","toggle","workflows","abbreviated","added","again","alert","appropriately","arguments","automatically","batch","because","before","beginning","below","briefly","bucks","bunch","change","changes","close","coffee","command","commands","commercial","control","definitely","describe","desktop","details","detects","dialogs","different","directly","donationware","download","dozen","edited","enabled","enough","environment","except","execute","executed","executing","expanded","experimenting","extension","failing","feature","features","feedback","figured","folder","functions","going","handler","handlers","hellip","hiding","icons","ignore","inputs","interacting","launched","little","loving","macos","making","memory","method","methods","multiple","neccessary","outside","parenthesis","paths","percent","pitch","point","points","possible","posting","potentially","project","promised","quitting","radar","refreshing","relative","release","remains","rsquo","scripts","share","shell","showing","since","stuff","subfolder","subfolders","toggle","toggling","toying","under","updated","updates","using","variables","watches","where","workflow"]
	},{
		"title": "A Macstock reminder",
		"url": "/2019/05/31/a-macstock-reminder/",
		"tags": ["macstock"],
		"date": "May 31<span>st</span>, 2019",
		"ts": "1559332080",
		"summary": "Just a reminder, Macstock 2019 is happening in just over a month. Which is soon, but there&rsquo;s still time to plan your trip to the Chicago area for a weekend of hanging out with fellow Apple nerds and absorbing some Mac and iOS knowledge from the amazing speaker lineup (and me). A final addition to the session lineup is especially exciting to me. My girlfriend, Elle Newman, will be teaching \"Yoga for Nerds\" in the mornings before the sessions. Starting with some wrist, neck, and back care you can do while sitting at a desk, it&rsquo;s going to include the exercises that turned me from a wreck to a trooper. I used to have constant back pain, and my wrists were so painful I would be unable to work for entire days. If you spend time at a keyboard, I highly recommend fitting that session into your morning. The second session will be a bit more what you imagine when someone says \"yoga,\" but you can show up in your regular clothes and everything you need will be provided. This stuff has turned my health around, I&rsquo;m excited that Elle will be able to share it with my friends and colleagues. And remember, you can still get a discount on your tickets by using the code when you buy. Make your plans now",
		"keywords": ["discount","apple","chicago","macstock","nerds","newman","starting","absorbing","amazing","before","clothes","colleagues","constant","discount","entire","especially","everything","excited","exciting","exercises","fellow","fitting","friends","girlfriend","going","hanging","happening","health","highly","imagine","keyboard","knowledge","lineup","morning","mornings","nerds","painful","plans","recommend","regular","remember","reminder","rsquo","second","session","sessions","share","sitting","speaker","spend","stuff","teaching","tickets","trooper","turned","unable","using","weekend","while","wreck","wrist","wrists"]
	},{
		"title": "Sponsor: Find your Mac's hidden files with CleanMyMac X",
		"url": "/2019/05/30/sponsor-find-your-macs-hidden-files-with-cleanmymac-x/",
		"tags": ["developer","macos","sponsor"],
		"date": "May 30<span>th</span>, 2019",
		"ts": "1559214000",
		"summary": "Thanks to CleanMyMac X for sponsoring BrettTerpstra.com this week! I&rsquo;ve been using CleanMyMac X for a long time now, and the latest version extends it far enough to be a replacement for at least two other apps on my system. It&rsquo;s a pleasure to have them sponsoring the blog this week. CleanMyMac X, as the name suggests, helps you do the cleaning chores on your Mac. But apart from this obvious use, there&rsquo;s another cool thing rarely mentioned about CleanMyMac X &mdash; it lets you peek underneath your macOS. It digs out all the files you&rsquo;ve forgotten about, stealth extensions, unused DMG installers, apps, and everything else that passes unnoticed on your computer. CleanMyMac X is the only cleaner that specifically detects rarely-opened files on your Mac. As we all know, our Downloads folder often becomes a massive graveyard for files. And who hasn&rsquo;t saved files into random folders at some point? CleanMyMac X solves this with its Large & Old file scanner that sorts files by kind and their size. For example, you can find large movies that you last opened one year ago &mdash; a quick method to free up space. Some apps don&rsquo;t show up in the Launchpad. Some are forever buried in the Applications folder. CleanMyMac X has a built-in Uninstaller that might as well be called \"App detective.\" There are special filters for unused apps, 32-bit apps, app leftovers, and even apps coming from different developers. Finding out how many (or few) apps you actually use can be eye-opening for many users. The newest tool in CleanMyMac X&rsquo;s arsenal is called \"Space Lens.\" It displays your entire folder tree in the form of differently-sized bubbles. This way users can explore their hard drive and spot the largest space wasters as well as \"Russian dolls,\" folders located inside other folders. It can serve as a nice alternative to Finder that minimizes the number of clicks needed to find a file. Your Mac&rsquo;s system junk may hold 1 GB of space, or just as easily, 320 GB, depending on your user habits. CleanMyMac X tackles this by categorizing junk that rarely shows up in search. Programmers may find hundreds of unused disk images, designers will find the intermediate versions of their projects and so on. As ironic as it may sound, digging through System Junk may be far from boring. CleanMyMac X as available as a subscription and as a one-time purchase. You can download a free trial from the developer&rsquo;s site. Crafted by&hellip;",
		"keywords": ["cleanmymac","macpaw","maintenance","system","apple","applications","brettterpstra","cleanmymac","crafted","disable","downloads","erase","everything","finder","finding","folders","launchpad","macpaw","programmers","russian","space","story","system","thanks","uninstaller","unused","adware","another","apart","arsenal","available","becomes","boring","browser","bubbles","built","buried","called","categorizing","chores","cleaner","cleaning","clicks","coming","computer","consumers","cracks","cryptocurrency","depending","designers","detective","detects","developer","developers","different","differently","digging","displays","dolls","download","drive","easily","enough","entire","everything","example","explore","extends","extensions","files","filters","folder","folders","forever","forgotten","graveyard","habits","heavy","helps","history","hundreds","ideas","images","independent","inside","installers","intermediate","ironic","largest","latest","leftovers","located","macos","malware","massive","mdash","memory","mentioned","messenger","method","miners","minimizes","movies","needed","newest","notarization","obvious","often","opened","opening","passed","passes","point","projects","quick","random","rarely","replacement","rsquo","saved","scanner","search","serve","shows","sized","slipped","solves","sorts","sound","space","special","specifically","sponsoring","stealth","subscription","suggests","system","tackles","through","trial","underneath","unnoticed","unused","users","using","version","versions","wasters"]
	},{
		"title": "nvUltra update: the beta begins",
		"url": "/2019/05/29/nvultra-update-the-beta-begins/",
		"tags": ["nvalt","nvultra"],
		"date": "May 29<span>th</span>, 2019",
		"ts": "1559144760",
		"summary": "After all these years of promising the successor to nvALT, it&rsquo;s amazing to be able to tell you that the nvUltra beta has begun. We (Fletcher Penney and myself) still don&rsquo;t have a final name, but the app is really solid and I&rsquo;m excited to be bringing people on board to put it through its paces. The first round we&rsquo;ve sent out is to a tiny group of private beta testers (only about 20 people). We hand-picked this round from people who&rsquo;ve been great beta testers in the past and whom I know already understand the concept behind nvALT. Once we get through a few rounds of bug fixes and improvements with this group, we&rsquo;ll be opening it up to a larger segment pulled from the mailing list. And then probably wider after that, but with the hopes of going to market in as short a time as possible. Because we&rsquo;re still refining the UI, I&rsquo;m not going to share a lot of screenshots yet. I will tell you about Connections mode, though. In addition to blazing fast, full-text search, you can also toggle into Connections, which takes the text of the currently selected note and compares it against the text of all the other notes in the folder (and subfolders), with the result of showing you all of the notes most relevant to the current one. It&rsquo;s a cool new feature in the nvALT and Notational Velocity style of note-taking apps, and one we think you&rsquo;ll find useful. Look forward to more updates soon. Sign up here to join the mailing list",
		"keywords": ["notational","nvalt","velocity","because","connections","fletcher","notational","penney","velocity","against","amazing","begun","behind","blazing","board","bringing","compares","concept","excited","feature","first","fixes","folder","going","great","group","hopes","improvements","larger","mailing","market","myself","notes","nvalt","nvultra","opening","paces","people","picked","possible","private","promising","pulled","refining","relevant","round","rounds","rsquo","screenshots","search","segment","selected","share","short","showing","solid","style","subfolders","successor","takes","taking","testers","think","through","toggle","understand","updates","useful","wider","years"]
	},{
		"title": "SSD Showdown: Seagate Fast vs Samsung T5",
		"url": "/2019/05/24/seagate-fast-ssd-vs-samsung-t5/",
		"tags": ["backup","hardware","reading"],
		"date": "May 24<span>th</span>, 2019",
		"ts": "1558702800",
		"summary": "A little while ago I ran into some issues that required me to do a full clone of my MacBook Pro&rsquo;s disk, erase, and restore from an external. It was painful with my external Thunderbolt drive (a Buffalo MiniStation 1TB Thunderbolt). Then (after a week of banging my head on the desk) I realized that in the process of restoring, I had also converted my disk back to HFS from APFS. Which meant I couldn&rsquo;t update the OS or install the latest version of Xcode. Which is a problem. So to make it less painful, I decided to invest in a newer external SSD drive. At a 1TB requirement and a limited budget, there were only so many options. After reading a lot of reviews, I went with the Seagate Fast ($199.85). Yeah, they named it \"Fast.\" To be fair, it is pretty fast. Whereas the backup/restore from my internal SSD with the Buffalo MiniStation had taken about 14 hours (and that was only a partial \"Smart Copy\" backup), the Fast did the whole process (full backup to a blank drive, full restore) in just over 4 hours. That&rsquo;s more than 3x faster. Given that the price of the external SSD isn&rsquo;t much more than I originally paid for the Buffalo, this was a really good investment for me. When I would boot from my clone disks previously (Rugged and MiniStation), the OS would be barely usable. I mean 20 minutes to finish booting. With the Fast, it was almost like booting directly from my internal SSD. Not quite, but entirely usable. I enjoyed the speed so much that I wanted to replace my old LaCie Rugged 1TB Thunderbolt with one of these newfangled SSDs, now that the price has come down a bit. So I did some more research and picked up the Samsung T5 ($167.99). And then I had to compare. Both drives are the 1TB capacity models, with USB-C outputs. I don&rsquo;t have a USB-C machine, so I&rsquo;m running all tests with a USB-C to USB-A cable attached directly to my MacBook Pro&rsquo;s USB3 ports. All of these tests are miserable when connected through any USB3 hub, including through my Thunderbolt display. So I&rsquo;m skipping any stats from those tests and just saying \"don&rsquo;t try connecting these through hubs\"1. I think the physical differences are irrelevant at this size, but I&rsquo;ll mention them anyway. The T5 comes in smaller than the Fast at 74x57mm to the Fast&rsquo;s 94x79mm. And the T5 is lighter, too, coming in at 51g to the Fast&rsquo;s 82g. So if you&rsquo;re looking for small, the T5 wins by a good margin. What I&rsquo;m&hellip;",
		"keywords": ["drive","external","blackmagic","buffalo","capacity","compared","conclusions","duper","journaled","lacie","macbook","ministation","model","price","rugged","samsung","seagate","smart","speed","super","superduper","superduperdescription","thunderbolt","write","xcode","abstract","adapter","align","almost","anyway","apple","attached","available","backlink","backup","banging","barely","blackmagic","blank","booting","brettterpstra","budget","bunch","cable","capacity","center","change","cheaper","claim","class","clone","comes","coming","compare","comparison","conclusions","connected","connecting","converted","couldn","decent","decided","definitively","differences","directly","disks","display","drive","drives","either","endnotes","enjoyed","entirely","erase","external","faster","fastest","finish","fnref","footnote","footnotes","formatted","freshly","going","height","hours","https","image","including","install","internal","invest","investment","irrelevant","issues","itunes","judging","latest","ldquo","lighter","limited","little","loading","looking","lowest","machine","margin","mattered","maximum","meant","media","mention","minutes","miserable","models","named","newer","newfangled","noscript","noteref","older","options","original","originally","outputs","painful","partial","performance","physical","picked","picture","pocket","ports","previously","price","problem","process","range","rdquo","readers","reading","realized","replace","required","requirement","research","restore","restoring","results","reversefootnote","reviews","right","rsquo","running","saying","scores","sequential","setup","several","shirt","short","skipping","small","smaller","source","speak","speed","speeds","srcset","ssdreviewheader","ssdssidebyside","starts","stats","strong","style","table","taken","tbody","testing","tests","thead","think","through","times","title","uploads","usable","using","version","wanted","welcome","while","whole","width","write"]
	},{
		"title": "Tame your turbulent schedule with NotePlan 2",
		"url": "/2019/05/23/tame-your-turbulent-schedule-with-noteplan-2/",
		"tags": ["markdown","sponsor"],
		"date": "May 23<span>rd</span>, 2019",
		"ts": "1558612800",
		"summary": "Thanks to NotePlan for sponsoring BrettTerpstra.com this week! I started using Noteplan when it first came out and have been impressed with how refined it&rsquo;s become over time. The concept of using Markdown files for planning, scheduling, and note-taking is brilliant, but it takes some special execution to make it work. NotePlan pulls it off! With NotePlan you get serious work done. It helps you spend less time planning and more time doing. It lets you track your work and get things out of your head quickly so you have the headspace to be creative &mdash; that&rsquo;s what brains are made for. Find out how! NotePlan is a daily planning tool in Bullet Journal style for pros, combining a calendar with plain-text markdown notes and embedded to-dos &mdash; all in one place. Your notes are saved in simple text files, so the data is always safe and accessible in your iCloud Drive - not hidden away in some online database Write markdown to-dos embedded into your daily notes and organise them using simple formatting like headings, bold, italic, links, etc. Capture important things in projects notes which are not attached to a date and schedule them from there into your calendar Integrates with iCloud calendars and Reminders A distraction-free, minimal design lets you focus on your tasks Customise NotePlan by choosing from a set of light and dark themes If you have a turbulent schedule and tons of things to keep track of but never enough time, NotePlan is perfect for you. Save time planning and never let anything fall through the cracks. The Markdown editor lets you write your tasks rapidly without even touching the trackpad or mouse The monthly and weekly calendar gives you a birds-eye view of what&rsquo;s coming next A list with open tasks and badges in the calendar let you keep track of your current to-dos Capture ideas, links, memos or anything that&rsquo;s important for you on a given day Save \"sticky\" things in your project notes Good news! NotePlan 2 on macOS just launched, check it out",
		"keywords": ["calendar","markdown","noteplan","notes","brettterpstra","bullet","capture","customise","drive","integrates","journal","markdown","noteplan","noteplan","reminders","sponsorship","syndicate","thanks","write","accessible","attached","badges","birds","brains","brilliant","calendar","calendars","check","choosing","combining","coming","concept","cracks","creative","daily","database","design","distraction","doing","editor","embedded","enough","execution","files","first","focus","formatting","gives","headings","headspace","helps","hidden","icloud","ideas","important","impressed","italic","launched","light","links","macos","markdown","mdash","memos","minimal","monthly","mouse","notes","online","organise","planning","project","projects","pulls","quickly","rapidly","refined","rsquo","saved","schedule","scheduling","serious","simple","special","spend","sponsoring","started","sticky","style","takes","taking","tasks","themes","through","touching","track","trackpad","turbulent","using","weekly","write"]
	},{
		"title": "Web Excursions for May 22, 2019",
		"url": "/2019/05/22/web-excursions-for-may-22-2019/",
		"tags": ["bookmarks","markdown"],
		"date": "May 22<span>nd</span>, 2019",
		"ts": "1558530000",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Mark It Down: convert rich text to Markdown It ain&rsquo;t pretty, but this little web app does a pretty solid job of taking pasted RTF (web, rich text) and spitting out valid Markdown. Nothing is perfect, but this gets as close as my own experiments have ever gotten me. Handy tool to keep bookmarked. Typography Resources by Amrit Pal Singh A treasure trove of font and typography resources for print and web designers. CodiMD - Collaborative markdown notes A new platform for collaborative Markdown editing and sharing. Offers a presentation mode for quickly creating a deck from Markdown. FontBase - The Best Fontcase Alternative FontBase is a free font utility for designers that gives you all the features of Fontcase. Goodbye Tony Buzan In memoriam: Tony Buzan, the Inventor of Mind Mapping, passed away on April 13 at the age of 76. As a mind mapping enthusiast, I&rsquo;ve enjoyed a good number of Tony&rsquo;s books and consider him a legend",
		"keywords": ["buzan","fonts","markdown","typography","amrit","buzan","cleanmymac","codimd","collaborative","fontbase","fontcase","goodbye","handy","inventor","mapping","markdown","nothing","offers","resources","singh","typography","bookmarked","books","brought","close","collaborative","consider","convert","creating","designers","editing","enjoyed","enthusiast","excursions","experiments","features","gives","gotten","legend","little","mapping","markdown","memoriam","notes","partnership","passed","pasted","platform","presentation","print","quickly","resources","rsquo","sharing","solid","speed","spitting","taking","tools","treasure","trove","typography","utility","valid"]
	},{
		"title": "The MacSparky Keyboard Maestro Field Guide",
		"url": "/2019/05/21/the-macsparky-keyboard-maestro-field-guide/",
		"tags": ["automation","keyboard","tutorial","video"],
		"date": "May 21<span>st</span>, 2019",
		"ts": "1558443600",
		"summary": "David Sparks is at it again, releasing the latest in his video tutorial series: the Keyboard Maestro Field Guide. It&rsquo;s almost 4 hours of video training on this nerd favorite, with 76 separate videos, plus downloadable samples and code. Keyboard Maestro is one powerful tool for automation, and even I don&rsquo;t feel like I&rsquo;ve plumbed its depths. And I consider myself a total nerd for this stuff. I got an advance look at the Field Guide and there&rsquo;s a lot there to learn. There&rsquo;s an intro discount that brings the price to $24 right now. If you&rsquo;re looking to get deeper into automation and explore one of the greatest Mac utilities out there, check out the Keyboard Maestro Field Guide while it&rsquo;s still discounted",
		"keywords": ["field","guide","keyboard","macos","macsparky","maestro","david","field","guide","keyboard","maestro","sparks","again","almost","automation","brings","check","consider","deeper","depths","discount","discounted","downloadable","explore","favorite","greatest","hours","intro","latest","learn","looking","myself","plumbed","powerful","price","releasing","right","rsquo","samples","separate","series","stuff","training","tutorial","utilities","video","videos","while"]
	},{
		"title": "Another day, another Bunch",
		"url": "/2019/05/20/another-day-another-bunch/",
		"tags": ["bunch","macos"],
		"date": "May 20<span>th</span>, 2019",
		"ts": "1558364400",
		"summary": "I should probably eventually try to make money off of Bunch. But for now it&rsquo;s just what I&rsquo;m going to do to stretch my fingers (and brain) in the morning before I start my day&rsquo;s work on nvUltra (I&rsquo;ll post an update on that soon, things are going quite well). First things first, I finally added automatic updates (Sparkle) to Bunch. Now it will ask you if you want to check for updates and will just let you install new versions with the click of a button. Adding this meant admitting to myself that I was going to keep updating it, but it&rsquo;s hard to deny that at this point. This also means I&rsquo;ll stop overloading my blog with notes on every update. The project page will continue to be updated with the changelog, and I&rsquo;ll only post about \"big\" changes. I added a new syntax for running commands that are built in to Bunch. You just put the line in parenthesis and if the enclosed string matches a valid command, Bunch will execute it. Commands are mostly going to be shortcuts to system events. Right now, the only commands are \"hide dock\" and \"show dock.\" I&rsquo;ll add more as I need to. Next new feature is the ability to quit Bunches. There&rsquo;s an option in the Preferences submenu (also under Bunch in the menu bar) called \"Toggle Bunches\" that will set a preference for you. When enabled, when you launch a bunch, its menu item gets a checkmark showing that it&rsquo;s active. Clicking a checked Bunch will reverse it, quitting any apps it launched, ignoring lines for files, focus, quit, and AppleScript. There&rsquo;s also a submenu called \"Quit Apps in Bunch&hellip;\" that contains a list of all of your Bunches so you can quit the apps for any Bunch, even if you haven&rsquo;t activated the Bunch previously. Finally, there&rsquo;s a mode called \"Single Bunch Mode.\" You can toggle it in the menu bar under Bunch->Single Bunch Mode. When this is active, launching a Bunch will quit apps in the last Bunch prior to launching the new Bunch. If the new Bunch contains apps existing in the previous Bunch, those apps will be ignored. If two Bunches have overlapping apps, nothing happens to those apps when switching Bunches (so the app doesn&rsquo;t quit and relaunch). Same with Dock Commands, they won&rsquo;t be doubled up. A tip for using Toggle/Single Bunch Mode: Don&rsquo;t include apps in your Bunch that you generally always have running anyway. That way when you quit apps in a Bunch, you won&rsquo;t have to relaunch&hellip;",
		"keywords": ["context","launcher","adding","applescript","automatic","bunch","bunches","clicking","commands","download","finally","first","github","hiding","items","login","preferences","quitting","right","single","slack","sparkle","toggle","updates","ability","activated","active","added","admitting","again","anyway","assuming","automatic","becomes","before","brain","breeze","built","bunch","button","caffeine","called","changelog","changes","check","checked","checkmark","click","command","commands","contains","continue","doesn","doubled","efficient","enabled","enjoy","enough","events","eventually","example","execute","feature","files","finally","fingers","finished","first","focus","generally","going","great","habit","handle","happens","haven","hellip","hides","ignored","ignoring","imperfection","included","install","launch","launched","launching","loading","matches","meant","misses","money","morning","mostly","myself","notes","nothing","nvalt","nvultra","often","overlapping","overloading","parenthesis","point","preference","previously","project","putting","quitting","relaunch","reverse","rsquo","running","seconds","shortcuts","showing","stretch","string","submenu","switching","syntax","system","takes","testing","thanks","thought","through","toggle","under","underscore","updated","updates","updating","using","valid","versions","waits","where"]
	},{
		"title": "Bunch gets its own URL scheme",
		"url": "/2019/05/17/bunch-gets-its-own-url-scheme/",
		"tags": ["bunch","macos"],
		"date": "May 17<span>th</span>, 2019",
		"ts": "1558098000",
		"summary": "Yeah, this has become my morning habit. Make coffee, add something to Bunch. If you haven&rsquo;t been following, Bunch is my batch application launcher for the Dock that I wrote way back on Tuesday of this week. As of today, it&rsquo;s not just for your Dock anymore. Bunch now has a url scheme. This means that a link like will run your \"My Bunch.bunch\" instantly. You can run them from scripts with , embed them in links, or use them in apps that allow url handlers as extensions. You can also use them in BetterTouchTool or Keyboard Maestro to put bunches on a hotkey. Note that Bunch can&rsquo;t currently run Bunches if you call the URL while it&rsquo;s not running. It will launch, but you&rsquo;ll need to have it running to actually trigger a bunch via the url handler. The handler is case insensitive (\"my bunch\" works as well as \"My Bunch\"). It also has a shorthand version because there&rsquo;s only one method on it (open): . Just the scheme and the name of the bunch is all you actually need. Oh, and by the way, you can change the location of your Bunches folder to anywhere you like now. Just choose \"Change Bunches Folder\" from the Dock menu and select a new folder. Maybe one on Dropbox so you can sync your bunches&hellip; I think these add a little extra utility to my little utility. Download (and documentation) on the project page. Enjoy. By the way, if you like this stuff, consider becoming a member or making a one-time donation with the button below. My morning coffee isn&rsquo;t free&hellip",
		"keywords": ["bettertouchtool","bunch","bunches","change","download","dropbox","enjoy","folder","github","keyboard","maestro","maybe","tuesday","allow","anymore","anywhere","batch","because","becoming","below","bunch","bunches","button","change","choose","coffee","consider","donation","embed","extensions","extra","folder","habit","handler","handlers","haven","hellip","hotkey","insensitive","instantly","launch","launcher","links","little","location","making","member","method","morning","project","rsquo","running","scheme","scripts","shorthand","stuff","think","today","trigger","utility","version","while","works","wrote"]
	},{
		"title": "Bunch 1.0.4 with URL schemes support",
		"url": "/2019/05/16/bunch-1-dot-0-4-with-url-schemes-support/",
		"tags": ["bunch","macos"],
		"date": "May 16<span>th</span>, 2019",
		"ts": "1558012620",
		"summary": "Apparently this is just what I do early in the mornings now. Bunch 1.0.4 is out. It&rsquo;s a pretty heavy code overhaul, switching most functions that were using AppleScript over to NSWorkspace, which you probably won&rsquo;t notice but it solves some security and performance issues. It also does a better job of checking whether it really needs to execute a function (i.e. is the app already running? Closed? Hidden?). It&rsquo;s speedier all around. The real front-facing change is that it now handles any URL scheme. Previously it only opened web urls, but now you can put any url handler call on its own line and it will be executed just like any URL. There&rsquo;s also a feature where you can put an underscore at the end of an app name and it will hide the app after launch, but it&rsquo;s not consistently working yet. (I don&rsquo;t want to just sit and poll for the app to finish launching, and I couldn&rsquo;t get a notification observer to function properly with appDidFinishLaunching&hellip;). So that&rsquo;s kind of a hit and miss feature that&rsquo;s not included in the docs yet. That&rsquo;s all, I have to do real work now. This little app has come along nicely, though. Download and updated docs on the Bunch project page. And yes, I really should just go ahead and add Sparkle to it, but I&rsquo;m just not taking it that seriously yet",
		"keywords": ["launcher","macos","apparently","applescript","bunch","closed","download","hidden","nsworkspace","previously","sparkle","ahead","appdidfinishlaunching","change","checking","consistently","couldn","execute","executed","facing","feature","finish","front","function","functions","handler","handles","heavy","hellip","included","issues","launch","launching","little","mornings","needs","nicely","notification","observer","opened","overhaul","performance","project","properly","rsquo","running","scheme","security","seriously","solves","speedier","switching","taking","underscore","updated","using","where","working"]
	},{
		"title": "Version Control with Git Made Easy",
		"url": "/2019/05/16/version-control-with-git-made-easy/",
		"tags": ["developer","sponsor"],
		"date": "May 16<span>th</span>, 2019",
		"ts": "1558008000",
		"summary": "Thanks to Tower for sponsoring BrettTerpstra.com this week! I&rsquo;m a huge fan of this Git version control app, and I use it daily. It makes complex Git tasks as easy as drag and drop, including integration with GitHub, Bitbucket, Gitlab, and more. Git has become a core part of every modern software development workflow. But while Git offers many powerful new tools, it also presents new challenges: a steep learning curve, a new set of complexities and new possibilities for mistakes. This is why Tower is the tool of choice for over 100,000 developers and designers. It comes with an extensive set of features, helping developers and designers to become confident Git users - no matter their level of expertise. Beginners will get easy access to many advanced features, while experts will become more productive. Some of the world&rsquo;s best software teams use Tower every day &mdash; on both macOS and Windows. Learn more about Tower and begin your 30-day free trial today! Use code to get 20% off your first year",
		"keywords": ["control","tower","version","beginners","bitbucket","brettterpstra","github","gitlab","learn","thanks","tower","windows","access","advanced","begin","challenges","choice","comes","complex","complexities","confident","control","curve","daily","designers","developers","development","expertise","experts","extensive","features","first","helping","including","integration","learning","level","macos","makes","mdash","mistakes","modern","offers","possibilities","powerful","presents","productive","rsquo","software","sponsoring","steep","tasks","teams","today","tools","trial","users","version","while","workflow","world"]
	},{
		"title": "Launch AND quit apps with Bunch 1.0.2",
		"url": "/2019/05/15/launch-and-quit-apps-with-bunch-1-dot-0-2/",
		"tags": ["bunch","macos","scripting"],
		"date": "May 15<span>th</span>, 2019",
		"ts": "1557946800",
		"summary": "A quick update to Bunch: it can now quit apps in addition to launching them. If your bunch file has an exclamation point before the name of an app, it will attempt to quit it instead of launching it, making Bunch an actual context switcher. For example, to quit Slack and open Hulu, your would include: Quit lines can be mixed into any bunch, but shouldn&rsquo;t have files after them (lines starting with a dash). And it won&rsquo;t work on web urls, so don&rsquo;t try using it to close your Facebook tab for you. Also, it uses AppleScript, so the app you&rsquo;re quitting has to respond to the AppleScript \"quit\" command, but that&rsquo;s most apps. I also improved the speed of launching multiple apps a bit (still depends on how long an app takes to launch, obviously), and fixed the build so it will work on systems back to macOS 10.10. But wait, there&rsquo;s more! I added the following quickly after I&rsquo;d already written this post (the download is actually 1.0.3 now). These two features are not fully tested and may or may not work depending on your setup and the apps you try it with&hellip; Adding a line at the end of a bunch that starts with an @ symbol will attempt to focus that app after all of the others are launched/quit, hiding everything except for the target app. The first time you use it it will likely ask you for permission to access System Events. Be sure to approve that if you want the AppleScript to be able to function. Adding a line anywhere in the file that begins with an asterisk (*) will execute that line as AppleScript. There are some limitations, mostly around Bunch having access to various apps&rsquo; Apple Events, but I think I&rsquo;ve found a workable solution in most cases. This feature also allows you to use to run command line utilities. Again, the above two are not well-tested. And again, this is a silly side project while I&rsquo;m supposed to be working on something else, so please do report issues, but don&rsquo;t expect much in the way of timely support and/or further updates. (He says knowing that it&rsquo;s hard to resist the pull sometimes&hellip;) P.S. Fletcher, if you&rsquo;re reading this, don&rsquo;t worry, I woke up too early (4am) and put exactly 1 hour and 12 minutes into this, then got back to work on that one project",
		"keywords": ["context","launcher","switcher","adding","again","apple","applescript","bunch","check","events","facebook","fletcher","slack","system","above","access","added","again","allows","anywhere","approve","asterisk","before","begins","build","bunch","close","command","context","depending","depends","download","everything","example","except","exclamation","execute","expect","feature","features","files","first","fixed","focus","found","fully","function","having","hellip","hiding","improved","instructions","issues","knowing","launch","launched","launching","likely","limitations","macos","making","minutes","mixed","mostly","multiple","others","permission","point","project","quick","quickly","quitting","reading","report","resist","respond","rsquo","setup","shouldn","silly","solution","sometimes","speed","starting","starts","support","supposed","switcher","symbol","systems","takes","target","tested","think","timely","updated","updates","using","utilities","various","while","workable","working","worry","written"]
	},{
		"title": "TextExpander Tools update",
		"url": "/2019/05/15/textexpander-tools-update/",
		"tags": ["snippet","textexpander","tools"],
		"date": "May 15<span>th</span>, 2019",
		"ts": "1557925200",
		"summary": "Thanks to Taz Goldstein on Twitter, it came to my attention that my tool for generating downloads for my TextExpander snippets had partially broken. In the process of fixing it, I made some improvements. If you haven&rsquo;t seen it, the tool is called TE-snippets. It takes all of the TextExpander snippet groups that I have available in my TextExpander Tools project and makes it possible to customize the triggers and create a subscription link or direct download with the results. The biggest update I snuck in while fixing it is the ability to use suffixes instead of (or along with, if you really wanted to) prefixes. Just set one or both in TE-snippets and it will be included in any customizable snippet triggers. Leave either or both blank to skip them. Note that some triggers aren&rsquo;t set up to be customizable, but most are. Why suffixes and prefixes? For a long, long time I started all of my snippets with a punctuation prefix, usually , to separate the triggers from strings I might actually type. I&rsquo;ve been using suffixes more and more; It&rsquo;s a personal preference, but I always use one or the other. If I&rsquo;m triggering the snippets after a delimiter (space, tab, etc.), I like to use a hyphen at the end. So expands to after a space (but if I happen to be actually hyphenating a word, it doesn&rsquo;t because the next keystroke is a character). I can keep the snippets short and still avoid accidental triggers, and using a consistent prefix or suffix makes it significantly easier to train the muscle memory that makes TextExpander ten times more useful. So, if you haven&rsquo;t checked out TE-Tools for a while, do it! Even if you&rsquo;re not a TextExpander user, maybe my TextExpander Tools will inspire you to check it out. As far as I know, the snippet groups I generate will work on any of TextExpander&rsquo;s supported platforms (including Windows, which I imagine is a bonus for dual-platform users). While TextExpander frequently sponsors this blog and supports my work, this project isn&rsquo;t paid for by Smile or TextExpander. This is just me being a huge fan",
		"keywords": ["expansion","snippets","textexpander","tools","goldstein","leave","smile","textexpander","thanks","tools","twitter","while","windows","ability","accidental","available","avoid","because","biggest","blank","bonus","broken","called","character","check","checked","consistent","create","customizable","customize","delimiter","direct","doesn","download","downloads","easier","either","expands","fixing","generating","groups","happen","haven","hyphen","hyphenating","imagine","improvements","included","including","inspire","keystroke","makes","maybe","memory","muscle","personal","platform","platforms","possible","preference","prefix","prefixes","process","project","punctuation","results","rsquo","separate","short","significantly","snippet","snippets","snuck","space","sponsors","started","strings","subscription","suffix","suffixes","supported","supports","takes","times","train","triggering","triggers","useful","users","using","usually","wanted","while"]
	},{
		"title": "Bunch, a batch app launcher for your Dock",
		"url": "/2019/05/14/bunch-a-batch-app-launcher-for-your-dock/",
		"tags": ["bunch","macos","utility"],
		"date": "May 14<span>th</span>, 2019",
		"ts": "1557846720",
		"summary": "I made you a thing this morning. It&rsquo;s called Bunch and it&rsquo;s a utility for launching preconfigured groups of apps and documents. Bunch sits in your Dock with no windows. When you right click it, you get a list of your \"bunches,\" and selecting one launches, well, a bunch of apps. It&rsquo;s designed for starting a new \"context\" on your machine, e.g. a specific project, or just \"work\" or \"play.\" Bunch can launch apps, open specific documents in an app, and load web urls. It&rsquo;s pretty simple. I mean, I wrote it this morning in about an hour. As a teaser/example, here&rsquo;s what happens when I choose \"nvUltra\" from Bunch: Launch MeisterTask Launch Slack Launch Xcode and open nvultra.xcodeproj Launch Tower and open the nvUltra repo Launch iTerm (if it isn&rsquo;t already) Launch Sublime Text and open the documentation project and the \"themes\" project See? It&rsquo;s useful. Check it out on the Bunch project page",
		"keywords": ["launcher","bunch","check","launch","meistertask","slack","sublime","tower","xcode","bunch","bunches","called","choose","click","context","designed","documents","example","groups","happens","iterm","launch","launches","launching","machine","morning","nvultra","nvultra","preconfigured","project","right","rsquo","selecting","simple","specific","starting","teaser","themes","useful","utility","windows","wrote","xcodeproj"]
	},{
		"title": "The Marked Custom Style Gallery (1.0)",
		"url": "/2019/05/13/the-marked-custom-style-gallery-1-dot-0/",
		"tags": ["gallery","marked","userstyle"],
		"date": "May 13<span>th</span>, 2019",
		"ts": "1557752400",
		"summary": "I&rsquo;ve more or less finished a little side project I started to make it easier to find and use Marked Custom Styles. I have a lot of plans for improving the styling system itself, but for now I wanted to make a little more user-friendly way to look around than just going to visit a GitHub repository. First, some background. Marked 2 is my Markdown previewer app. It comes with 9 built-in preview styles, but allows total customization using CSS. You can learn more about using custom styles in the help docs. You&rsquo;ll also find instructions and tips for creating your own. When users are willing to share their work, I collect them in a public GitHub repository. The problem is, that doesn&rsquo;t provide any previews, so you end up downloading the whole lot and testing them out in Marked, which is far from convenient. The opposite, in fact. So I created a little gallery system that indexes all of the styles in the repository, catalogs their metadata, and creates a single-page gallery. You can select styles from a dropdown, or page through them one at a time. If you find one you like, there&rsquo;s a download button that will take you directly to the source code. Check it out. As I work on nvUltra I&rsquo;m designing some new styles for its built-in preview. I ported the current state of one of my favorites, Gregarious, to Marked. You can check it out in the gallery. As a side note, you can set a hash on the gallery url to target a specific style (e.g. ), perfect for linking directly to that style. As you browse the hash updates, so copying the url at any point will link directly to the style you&rsquo;re currently viewing. I&rsquo;m hoping that offering a little more convenience in this will inspire more people to share their own Custom Styles with the world. To do so, be sure you&rsquo;ve included the required header comment (detailed here) and then either contact me directly with a link to it, or create a pull request on the GitHub repo (if that&rsquo;s your thing). Someday I&rsquo;ll make an actual community system with uploads and all, but that keeps getting pushed off. So much to do these days",
		"keywords": ["custom","markdown","marked","style","check","custom","first","github","gregarious","markdown","marked","someday","styles","allows","background","browse","built","button","catalogs","check","collect","comes","comment","community","contact","convenience","convenient","copying","create","created","creates","creating","custom","customization","designing","detailed","directly","doesn","download","downloading","dropdown","easier","either","favorites","finished","friendly","gallery","getting","going","header","hoping","improving","included","indexes","inspire","instructions","itself","keeps","learn","linking","little","metadata","nvultra","offering","opposite","people","plans","point","ported","preview","previewer","previews","problem","project","public","pushed","repository","required","rsquo","share","single","source","specific","started","style","styles","styling","system","target","testing","through","updates","uploads","users","using","viewing","visit","wanted","whole","willing","world"]
	},{
		"title": "Did your Hyper key break?",
		"url": "/2019/05/10/did-your-hyper-key-break/",
		"tags": ["hyper","keybindings","keyboard","macos"],
		"date": "May 10<span>th</span>, 2019",
		"ts": "1557493200",
		"summary": "If this note applies to you, you already know what a Hyper key is. If you don&rsquo;t, go ahead and start with the post I wrote a while back on using Karabiner Elements to make your Caps Lock key more useful. If you&rsquo;re starting from scratch, you won&rsquo;t need the info below, I&rsquo;ve already updated the instructions. For those of you using my original instructions, you may have found that some or all of your Hyper key functionality disappeared with a recent update of Karabiner Elements. (I think it has to do with much stricter JSON parsing that was implemented, but the solution doesn&rsquo;t necessarily validate that.) To get your Hyper key back, the first thing to do is remove the current Hyper key rules in Karabiner Elements preferences. Select the Complex Modifications tab and find the \"Change caps_lock to&hellip;\" rule, then click the Remove button on the right. Then add it back in using the \"Add Rule\" button at the bottom. You can also just go straight to my example and edit in the definition yourself (), if you prefer. The default Hyper key rule that&rsquo;s imported won&rsquo;t have the added benefit of making your Caps Lock an Escape key when pressed alone. If you want that part, you&rsquo;ll need to edit to add the toifalone key to it, as seen in line 33 of the example. The original config I offered had an extra key in it, which is what was breaking the Escape key functionality. Removing those lines as shown in the example will restore it. This solution is thanks to tweets from Joakim Kemeny and Chris Salter. I&rsquo;m grateful and very happy to have my favorite modifier key back",
		"keywords": ["elements","karabiner","change","chris","complex","elements","escape","fixing","hyper","joakim","karabiner","kemeny","modifications","remove","removing","salter","added","ahead","alone","applies","below","benefit","bottom","breaking","button","click","config","default","definition","disappeared","doesn","example","extra","favorite","first","found","functionality","grateful","happy","hellip","implemented","imported","instructions","making","modifier","necessarily","offered","original","parsing","prefer","preferences","pressed","recent","remove","restore","right","rsquo","rules","scratch","shown","solution","starting","straight","stricter","thanks","think","tweets","updated","useful","using","validate","while","wrote"]
	},{
		"title": "Type smarter with TextExpander",
		"url": "/2019/05/09/textexpander/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "May 9<span>th</span>, 2019",
		"ts": "1557403200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander is the ultimate tool for speeding up your everyday typing tasks. Insert words, phrases, forms, templates, and more with just a couple key clicks—everywhere you type. Take control of your time and productivity by letting TextExpander handle your repetitive typing tasks. TextExpander 6.5 for macOS and 2.0 for Windows sports a new visual editor for snippets! The new editor make it easier to see and edit snippet fill-ins, dates and date math, nested snippets, and more. Get 20% off your first year when you visit textexpander.com with this link",
		"keywords": ["smile","snippet","textexpander","brettterpstra","textexpander","thanks","windows","brettterpstra","class","clicks","control","couple","dates","easier","editor","everyday","everywhere","first","forms","handle","height","https","image","letting","loading","macos","media","nested","nofollow","noscript","original","phrases","picture","podcast","productivity","repetitive","snippet","snippets","source","speeding","sponsoring","sports","srcset","tasks","templates","textexpander","title","typing","ultimate","uploads","visit","visual","width","words"]
	},{
		"title": "Web Excursions for May 08, 2019",
		"url": "/2019/05/08/web-excursions-for-may-08-2019/",
		"tags": ["bookmarks"],
		"date": "May 8<span>th</span>, 2019",
		"ts": "1557329100",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. The Ultimate Guide to Writing Online From David Perell, this is a goldmine of wisdom for bloggers, especially for those just getting started. Explore Census Data My mother is currently working for the US Census. It&rsquo;s sparked an interest for me in the data collected, and I didn&rsquo;t realize until recently that it&rsquo;s all publicly available: a wealth of population data for the US. Pushcut - Automation your way An iOS app that can trigger iOS shortcuts (and webhooks) from push notifications. For example, a notification that appears at sunset asking if you want to turn lights on, rather than just having a timed action do something you might not always want. Lots of possibilities! Remote pbcopy on OS X systems Yes, this is a link to one of my own articles, but I&rsquo;ve been using this tip so long I&rsquo;d forgotten I even had a special setup for making it happen. If you&rsquo;ve ever wanted to pipe output in a remote SSH session right to your macOS clipboard, here you go",
		"keywords": ["automation","blogging","pbcopy","automation","census","check","david","explore","guide","online","perell","pushcut","remote","setapp","ultimate","writing","access","action","appears","articles","asking","available","bloggers","brought","clipboard","collected","especially","example","excursions","forgotten","getting","goldmine","happen","having","hundreds","interest","lights","macos","making","monthly","mother","notification","notifications","output","partnership","pbcopy","population","possibilities","publicly","rather","realize","recently","remote","right","rsquo","session","setup","shortcuts","sparked","special","started","subscription","sunset","systems","timed","today","trigger","using","wanted","wealth","webhooks","wisdom","working"]
	},{
		"title": "Web Excursions for April 26, 2019",
		"url": "/2019/04/26/web-excursions-for-april-26-2019/",
		"tags": ["bookmarks","macos","shortcuts"],
		"date": "Apr 26<span>th</span>, 2019",
		"ts": "1556283600",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Siri Shortcuts and Screen Time coming to the Mac While I don&rsquo;t want Screen Time on my Mac, I do want Shortcuts. I just hope that a Marzapan implementation of Shortcuts isn&rsquo;t going to replace Automator completely. Partly just because I doubt it will have a Run Shell Script action that&rsquo;s as useful&hellip; Cursor Pro Hey, it&rsquo;s a modern Mouseposé! (If you don&rsquo;t remember Mouseposé, it&rsquo;s a tool for highlighting your cursor on the screen for screencasting.) Gladys I learned about this clipboard manager for Mac and iOS via Macdrifter and am really impressed with it on my MacBook Pro and iPad Pro. ShortcutsGallery.com If you&rsquo;re into iOS Shortcuts, you&rsquo;ve probably already seen this, but if you&rsquo;re curious about the capabilities, this is a great site to explore. Stack Overflow Developer Survey 2019 The consistently relevant results of StackOverflow&rsquo;s yearly developer survey are out. If you&rsquo;re a dev (or even a casual observer) interested in the state of the tech job world, don&rsquo;t miss it. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["clipboard","gladys","shortcuts","stackoverflow","automator","backblaze","check","cursor","developer","gladys","macbook","macdrifter","marzapan","mousepos","overflow","partly","screen","script","shell","shortcuts","shortcutsgallery","stack","stackoverflow","survey","while","action","affordably","apple","backblaze","backs","because","brettterpstra","brought","capabilities","casual","class","clipboard","cloud","coming","completely","computer","consistently","curious","cursor","developer","doubt","entire","everything","excursions","explore","going","great","height","hellip","highlighting","https","image","implementation","impressed","insights","interested","itunes","learned","loading","macdrifter","manager","media","missed","modern","noscript","observer","original","partnership","picture","producthunt","relevant","reliably","remember","replace","results","rsquo","screen","screencasting","secure","securely","shelf","shortcuts","shortcutsgallery","source","srcset","stackoverflow","survey","title","today","uploads","useful","width","world","yearly"]
	},{
		"title": "Zengobi's new Curio 13 release",
		"url": "/2019/04/25/zengobis-new-curio-13-release/",
		"tags": ["brainstorming","productivity","sponsor"],
		"date": "Apr 25<span>th</span>, 2019",
		"ts": "1556197200",
		"summary": "As you probably know, I&rsquo;m a long-time fan of Curio for brainstorming and project management. It&rsquo;s an honor to have Zengobi sponsoring BrettTerpstra.com this week! Curio is an intuitive, freeform notebook application for the Mac with all the integrated tools you need to take notes, brainstorm ideas, collect research, and organize your tasks and documents. A single, incredibly powerful application where you can be more productive and focus on getting things done. macOS Mojave dark mode support figure layers for more flexible layouts and arrangements cross references between figures, idea spaces, and web locations with custom types like Agree and Evidence for more organized research an integrated equation editor focus mode for better concentration additional markdown support new album arrangements new meta properties major performance enhancements plus dozens of other features and improvements First launched in 2004, Curio has thousands of customers around the world who use it for note-taking, brainstorming, and creative exploration. Curio 13 is available in Professional, Standard, and Core editions so you can purchase based on your feature needs. Academic and volume discounts are also available",
		"keywords": ["brainstorming","curio","management","project","zengobi","academic","agree","brettterpstra","curio","evidence","first","learn","mojave","professional","standard","zengobi","album","arrangements","available","based","begin","between","brainstorm","brainstorming","collect","concentration","creative","cross","custom","customers","discounts","documents","dozens","editions","editor","enhancements","equation","exploration","feature","features","figure","figures","flexible","focus","freeform","getting","honor","ideas","improvements","incredibly","integrated","intuitive","launched","layers","layouts","locations","macos","major","management","markdown","needs","notebook","notes","organize","organized","performance","powerful","productive","project","properties","references","release","research","rsquo","single","spaces","sponsoring","support","taking","tasks","thousands","today","tools","trial","types","volume","where","world"]
	},{
		"title": "Make your favorite keyboard a Bluetooth keyboard",
		"url": "/2019/04/23/make-your-favorite-keyboard-a-bluetooth-keyboard/",
		"tags": ["bluetooth","hardware","keyboard","writing"],
		"date": "Apr 23<span>rd</span>, 2019",
		"ts": "1556024400",
		"summary": "A lot of you already have a Bluetooth keyboard you love. Whether it&rsquo;s a keyboard just for your iPad or one on your desktop that can serve both, they&rsquo;re pretty ubiquitous. But a significant portion of the nerd community has a favorite keyboard that isn&rsquo;t Bluetooth. My favorite keyboard is the Ultimate Hacking Keyboard. You may recall me writing about it last year after having had it for a few months. It&rsquo;s still my favorite keyboard. To the extent that I wished I could use it with my iPad Pro, at least when I was at home (mechanical keyboards aren&rsquo;t the pinnacle of portability). I&rsquo;d tried a few solutions that all had showstopping limitations. Then I found the Handheld Scientific Bluetooth Adapter. For $35US, this little device has a USB slot that will turn just about any keyboard into a Bluetooth device. It&rsquo;s not the sleekest-looking design, but it has no issues with functionality. It requires power, so it either needs to be plugged into a hub or a battery pack, but beyond that it&rsquo;s a very portable little stick. And it works perfectly. The device has a button on it that toggles between a passthrough (USB) mode, a Bluetooth only mode, and both. This means that when it&rsquo;s plugged into your computer, you can toggle your keyboard between writing on your iPad and writing on your computer. You can also write on both at once, though I&rsquo;m not sure why you&rsquo;d want to do that. While not a multi-device keyboard like Logitech&rsquo;s K780 (which can toggle between multiple Bluetooth connections), it does provide the ability to easily use your desktop and portable device with the same keyboard. With some previous brands of this type of adapter, I&rsquo;d run into problems with a good number of my keys not working on an iOS device. The Scientific Handheld adapter registers every programmed key properly, including media keys. With the UHK I can even have an entirely separate layout I can switch to for iOS use, and everything just works. The compatibility list mentions that UHK&rsquo;s Mouse Mode doesn&rsquo;t work, but that&rsquo;s irrelevant for iPad usage. There&rsquo;s even a crazy command mode. You can open any text editor and press and hold the adapter&rsquo;s button and it will start talking to you. You get a command prompt where you can query, change settings, and even program macros for your keyboard. It also allows you to remap keys; while I can&rsquo;t have a hyper key on iOS, I can at&hellip;",
		"keywords": ["adapter","bluetooth","keyboard","mechanical","adapter","bluetooth","hacking","handheld","keyboard","logitech","mouse","scientific","ultimate","while","ability","adapter","allows","battery","between","beyond","brands","button","change","command","community","compatibility","computer","connections","crazy","design","desktop","device","doesn","easily","editor","either","entirely","escape","everything","extend","favorite","found","functionality","having","hyper","including","investment","irrelevant","issues","keyboard","keyboards","layout","limitations","little","looking","macros","mechanical","media","mentions","multi","multiple","needs","passthrough","perfectly","pinnacle","platforms","plugged","portability","portable","portion","press","problems","program","programmed","prompt","properly","query","recall","registers","remap","requires","rsquo","separate","serve","settings","showstopping","significant","sleekest","small","solutions","stick","switch","talking","toggle","toggles","tried","typing","ubiquitous","usage","where","while","wished","working","works","write","writing"]
	},{
		"title": "So you got Setapp... make the most of it",
		"url": "/2019/04/22/so-you-got-setapp-dot-dot-dot-make-the-most-of-it/",
		"tags": ["scripting","setapp","terminal"],
		"date": "Apr 22<span>nd</span>, 2019",
		"ts": "1555941840",
		"summary": "Let me start by saying that if you haven&rsquo;t checked out Setapp yet, you should. The number of quality apps available makes it ridiculous to not give it a try. Now, for those who are using Setapp, it&rsquo;s likely that you already own some of the apps on it. Every time you use the Setapp version of an app instead, you contribute part of the monthly subscription fee you&rsquo;re already paying to the developers of the apps you love. Plus, those versions are automatically updated and include any in-app purchases you would need to make separately in a version from another platform. It&rsquo;s worth it to make sure you&rsquo;re using the Setapp version, both for you and the devs you love. To that end, I&rsquo;ve written a quick Terminal script (Ruby, no dependencies, but see the next section if you&rsquo;re not a \"terminal\" person) which will tell you what apps you have that also have a Setapp version, and which of those already have both a \"regular\" and Setapp version installed. You can delete the original versions of those apps to make sure you&rsquo;re always running the Setapp version (be sure to back up your license codes, of course). Aside, if you&rsquo;re not using 1Password to store your license codes, I highly recommend it. Having them synced to all of your devices and automatically available after a new install is priceless. Plus, you can attach receipts and license files to each entry as appropriate. Here&rsquo;s the script you can run directly in Terminal (make it executable or run it with ). For those not already comfortable with Terminal, I&rsquo;ve made a quick Automator App version of the script that will write the results to a file on your Desktop called \"onsetapp.txt\". Just run it to find out what apps you could be using on Setapp instead. Again, if you&rsquo;re reading this even though you don&rsquo;t already have Setapp, go check it out",
		"keywords": ["scripting","again","aside","automator","desktop","example","having","password","setapp","solution","terminal","version","another","attach","automatically","available","called","check","checked","codes","comfortable","contribute","dependencies","developers","devices","directly","entry","executable","files","haven","highly","install","installed","license","likely","makes","monthly","onsetapp","original","output","paying","person","platform","priceless","purchases","quality","quick","reading","receipts","recommend","regular","results","ridiculous","rsquo","running","saying","script","section","separately","store","subscription","synced","terminal","updated","using","version","versions","worth","write","written"]
	},{
		"title": "Creating shortcuts for Mac symbols in HTML",
		"url": "/2019/04/19/creating-shortcuts-for-mac-symbols-in-html/",
		"tags": ["scripting"],
		"date": "Apr 19<span>th</span>, 2019",
		"ts": "1555700340",
		"summary": "I use a fairly complex build system for the Marked 2 help documents that get used on both the website and in the internal help. Among the many features I&rsquo;ve added over time is the ability to use named shortcuts for Mac symbols &mdash; Command, Shift, the Apple Menu, etc. &mdash; and have them replaced with HTML entities at compile time. Since it took a bit to put together the whole list, I thought I&rsquo;d share it for anyone who faces a similar task. What the script below does is look for tags (liquid/mustache-style) in the Markdown text that I use for the help files. It could be or or just about any key that has a symbol. I even added one for the menu on Marked&rsquo;s preview window. The concept is really simple: find anything surrounded by double curly brackets () and check to see if it matches anything in the symbols list. If it does, return the HTML entity, if not, just return the original string. It&rsquo;s written in Ruby, but it could easily be ported to Python, Node, or whatever your build system calls for. I&rsquo;m just putting it out there as an idea you can implement in whatever way is useful. Here&rsquo;s the snippet, I&rsquo;ll put some examples below. Now if you have a string like in your text and you run on it, you&rsquo;ll get back entitized text. which, in an HTML document displays as: ⌥⌘P or ⌫ or ⚙. Hope it&rsquo;s handy",
		"keywords": ["entities","symbols","among","apple","command","markdown","marked","python","regexp","replace","shift","since","string","ability","added","anyone","apple","below","brackets","brettterpstra","build","calls","check","class","clear","clover","complex","concept","curly","displays","document","documents","double","downcase","easily","eject","enter","entities","entitized","entity","examples","faces","fairly","features","figcaption","figure","files","fwddel","github","githubusercontent","gives","handy","height","highlight","highlighter","https","image","insertions","internal","language","liquid","loading","macsymbols","marked","match","matches","mdash","media","mustache","named","noscript","original","picture","plaintext","ported","preview","putting","replace","replaced","return","right","rouge","rsquo","script","share","shift","shortcuts","similar","simple","snippet","source","space","srcset","string","strip","style","surrounded","symbol","symbols","symbolsheader","system","thought","title","together","ttscoff","uploads","useful","website","whatever","whole","width","window","written"]
	},{
		"title": "Marked 2.5.32 with extra Bear",
		"url": "/2019/04/16/marked-2-dot-5-32-with-extra-bear/",
		"tags": ["appstore","macappstore","macos","marked","support","tagging"],
		"date": "Apr 16<span>th</span>, 2019",
		"ts": "1555419600",
		"summary": "Despite putting time into the replacement for nvALT, I also managed to get the latest update for Marked 2 out. My meds must be working. It&rsquo;s available now on Setapp, direct (Check for Updates), and Mac App Store. It has a longer-than-usual list of improvements and fixes, so this post might get lengthy. One area of focus was better support for Bear. If you want a true HTML preview with export options when using Bear, Marked is the perfect companion. Bear even offers a Note->Preview in Marked option. I get a lot of feedback from Bear users, so I put some extra time into polishing up compatibilities. Before I start talking too much about Bear, there&rsquo;s one issue to note. Bear writes its preview files out to a system temp folder that Marked can&rsquo;t permanently access from the sandboxed Mac App Store version, so users are constantly asked for permission. If you&rsquo;re using Bear with the Mac App Store version of Marked, I offer a free crossgrade to the unsandboxed direct version. If you use the Help->Report an Issue feature and just send me the top part of the report section (above the ), I&rsquo;ll consider that enough proof to provide you with a license. You can also contact me through the support forum. Anyway, this version of Marked takes care of a few Bear integration issues. First, when exporting a Bear preview to a PDF, the variable in headers and footers was using the UUID that Bear assigned to the note, which was an ungainly string of letters and numbers. That could definitely use some fixing. Because every Bear note typically starts with an H1 used as the note title, I added an option to Export preferences to \"Use first H1 as fallback title.\" This applies to more than just Bear, since typically the fallback title was the filename unless a \"title:\" line was provided in metadata. Now if you don&rsquo;t have metadata, you can have it automatically use the first H1 if one exists. It will still fall back to the source document&rsquo;s filename if neither title metadata or H1 exist in the document. If the preview is a Bear note, this feature also affects the window title and the filenames automatically assumed when exporting, so you get a file named after the title of the note instead of . I also fixed Marked&rsquo;s handling of relative image paths within the Bear TextBundle, so now images included directly in Bear notes will properly display in Marked and its various exports. In Bear, you create tags with Twitter-style&hellip;",
		"keywords": ["markdown","marked","anyway","because","before","check","comments","crash","crashes","custom","discount","export","facepalm","faster","first","images","katex","lastly","limit","markdown","marked","markedcustomstyles","mathjax","miscellaneous","multimarkdown","paddle","pandoc","preferences","preview","proofing","report","scrivener","setapp","speaking","store","style","textbundle","twitter","updates","above","accepts","access","accidental","accommodated","activated","activation","added","adjust","advanced","aesthetics","affects","ahead","alert","allow","annotations","another","applies","asked","assigned","assumed","automatically","available","avoids","beginning","between","break","calling","caused","causing","certain","check","comments","common","companion","compatibilities","compatibility","completely","consider","constantly","contact","contents","cover","create","creating","crossgrade","custom","customers","deactivate","dealing","definitely","delineate","detect","differentiating","direct","directly","display","document","easier","embedded","enough","equations","error","errors","exist","exists","export","exporting","exports","extra","fallback","faster","feature","features","feedback","filename","filenames","files","first","fixed","fixes","fixing","focus","folder","footers","formats","forum","generated","gracefully","handling","hashtags","headers","headlines","image","images","improved","improvements","improves","included","including","increasing","inline","installation","installed","installing","integration","intrusive","issues","latest","lengthy","letters","license","licenses","limits","longer","lsquo","machine","managed","mdash","metadata","missing","modes","modifications","mostly","named","needed","negative","neither","notations","notes","nothing","numbering","numbers","nvalt","offer","offers","offset","options","paths","permanently","permission","polishing","possible","preferences","preview","previewing","processor","proof","properly","putting","random","rather","recover","referenced","register","relative","rendering","renders","replacement","report","reporting","repository","requests"]
	},{
		"title": "sizes: better disk usage reporting in Terminal",
		"url": "/2019/04/15/sizes-better-disk-usage-reporting-in-terminal/",
		"tags": ["scripting","terminal"],
		"date": "Apr 15<span>th</span>, 2019",
		"ts": "1555333200",
		"summary": "I&rsquo;ve come up with a lot of ways to see what&rsquo;s taking up space in my directories from Terminal over the years. I&rsquo;ve finally built one that covers all the little niggles I&rsquo;ve had in the past. Let&rsquo;s start with the other ways you can do this. Since we&rsquo;re talking about disk usage, the obvious choice is , the \"disk usage\" command. To see the filesize of every file in the directory you can run . The switch tells it to output human readable sizes, so it looks like: This is pretty close to what I want, but it can&rsquo;t be sorted by size. Also, reports in blocks (512B per segment), so if you&rsquo;re interested in accurate readings on files under 4kb, it won&rsquo;t do it. You can also use to list all files along with their file sizes (and a whole bunch of other info). You can sort by size with (or for reverse order), and works here too to show human readable size formats. So that&rsquo;s closer to what I want, but there&rsquo;s a whole bunch of irrelevant info as well as the fact that isn&rsquo;t going to report the total size of directories (all the files they contain added together) the way will. I also have to mention , an ncurses utility that&rsquo;s excellent for exploring disk usage. It&rsquo;s overkill for what I want, but worth checking out (and available via Homebrew, ). You have no reason to recall this, but I&rsquo;ve tried to solve this in the past. I wrote a bash function called that would do the trick. It&rsquo;s super slow, though, and does things the hard way. So I decided to put and together with some of my own sorting and formatting to get fast filesize info. I call it . I have the script posted in this gist. Save that file in your path, name it , and make it executable (). To use it, just run . You can optionally pass it a directory, e.g. , and it will operate there. And for whatever reason, I added help to it, so will show you the obvious lack of other options. The script will output a listing of all of the files in the current directory with sizes in bytes, kilobytes, megabytes, etc., calculated to 2 decimal places. It includes hidden files and reports actual sizes of directories (without traversing them). Output is colorized, with colors ascending from blue to red based on file size, and filenames colorized to indicate regular files, directories, and hidden files. On any directory containing under 20GB it&rsquo;s quite fast. Large directories can take a while to calculate, but you&&hellip;",
		"keywords": ["usage","daisydisk","homebrew","installation","output","since","solution","terminal","usage","works","accurate","added","ascending","assume","available","based","block","blocks","bottom","built","bunch","bytes","calculated","called","checking","choice","close","closer","colorized","colors","command","contain","containing","contents","coreutils","covers","decided","decimal","decoding","dependencies","detects","directly","directories","directory","easily","enjoy","excellent","executable","exploring","extract","filename","filenames","files","filesize","finally","formats","formatting","function","going","hidden","human","humanized","includes","insufficiently","interested","irrelevant","kilobytes","listing","little","loading","looks","megabytes","mention","multiplies","ncurses","niggles","noted","obvious","optionally","options","output","overkill","passes","people","places","possible","posted","readable","reading","readings","recall","regex","regular","report","reported","reports","reverse","rsquo","script","segment","sizes","solve","sorted","sorting","space","starts","super","switch","taking","talking","tells","together","traversing","trick","tried","under","usage","using","utility","version","wanted","whatever","while","whole","works","worth","wrong","wrote","years"]
	},{
		"title": "PDFPen: The ultimate tool for PDFs",
		"url": "/2019/04/11/pdfpen-the-ultimate-tool-for-pdfs/",
		"tags": ["sponsor","tools"],
		"date": "Apr 11<span>th</span>, 2019",
		"ts": "1554989400",
		"summary": "Thanks to PDFPen for sponsoring BrettTerpstra.com this week! PDFpen is the ultimate tool for editing PDFs on the Mac, iPhone, and iPad. For a list of all the new stuff in PDFpen and PDFpenPro 10, check here",
		"keywords": ["pdfpen","smile","software","batch","brettterpstra","contents","convert","create","learn","library","pdfpen","pdfpen","pdfpenpro","precision","table","thanks","using","automatically","check","commonly","documents","editing","fillable","footers","forms","graphics","headers","iphone","paperless","smilesoftware","sponsoring","store","stuff","ultimate","websites"]
	},{
		"title": "Codename: nvUltra",
		"url": "/2019/04/10/codename-nvultra/",
		"tags": ["nvalt","search"],
		"date": "Apr 10<span>th</span>, 2019",
		"ts": "1554921180",
		"summary": "You&rsquo;ve been hearing from me for years about BitWriter, the nvALT replacement I was working on with David Halter. Well, I failed at my part, then we lost touch, and it never came to fruition. Now that my health is back to working state, I attempted to pick the project back up. Turned out David was MIA (hopefully ok), and the code I was left with no longer compiled on the latest operating systems. Seemed like it might be time to let go. Then I heard from Fletcher Penney. You know, the guy who created MultiMarkdown, and who develops my favorite Markdown editor, MultiMarkdown Composer. He was working on a similar project and invited me to join him on it. Now we have an app nearing beta stage that&rsquo;s better than any modal notes app you&rsquo;ve used. Code name: nvUltra. We need to wrap up some UI/UX work before we release the first round of betas, so I&rsquo;m not ready to put an official ETA on it. But it&rsquo;s close, and our goal is to start a beta test round in the next month or two. Sign up today for notifications, and the first round of beta testers will be taken from the email list. First in, first served. This app works a lot like nvALT (and Notational Velocity, naturally). You pop it up and start typing. Search or create a note in seconds. It has blazing fast and accurate full-text search, the ability to find related notes based on content, and very complete Markdown editing tools (complete with syntax highlighting and theme editing). The biggest difference is that it works with multiple folders and sub-folders. You pick a folder, it indexes it, and you can use it just like nvALT. But then you can open another folder, or create a new one and start editing. It allows you to create folders anywhere, maybe one on Dropbox or iCloud Drive that&rsquo;s shared, one on an encrypted disk that&rsquo;s private, one for work, one for home, one for every writing project. You&rsquo;re not limited to tags (though you can search by and sync with macOS tags within the app), and you can sort your notes into subfolders as well. We don&rsquo;t have an official name yet. We have some good ideas, but nothing that&rsquo;s struck us both as \"that&rsquo;s it!\" Have any suggestions? Feel free to brainstorm in the comments",
		"keywords": ["bitwriter","notational","velocity","bitwriter","composer","david","drive","dropbox","first","fletcher","halter","markdown","multimarkdown","notational","penney","search","seemed","turned","velocity","ability","access","accurate","allows","another","anywhere","attempted","based","before","betas","biggest","blazing","brainstorm","close","comments","compiled","content","create","created","develops","difference","editing","editor","email","encrypted","exciting","failed","favorite","first","folder","folders","fruition","health","heard","hearing","highlighting","hopefully","icloud","ideas","indexes","invited","latest","limited","longer","macos","maybe","modal","multiple","naturally","nearing","notes","nothing","notifications","nvalt","nvultra","official","operating","private","project","ready","related","release","replacement","round","rsquo","search","seconds","served","shared","similar","stage","struck","subfolders","suggestions","syntax","systems","taken","testers","theme","today","tools","touch","typing","within","working","works","writing","years"]
	},{
		"title": "HoudahSpot 5.0",
		"url": "/2019/04/04/houdahspot-5-dot-0/",
		"tags": ["appreview","macos","search","spotlight","tagging"],
		"date": "Apr 4<span>th</span>, 2019",
		"ts": "1554397200",
		"summary": "For those of us who have shifted from folder hierarchies to search as our primary method of \"filing,\" Spotlight has become a way of life. And where Spotlight falls short, HoudahSpot steps in and fills the gaps. I&rsquo;ve said it enough that it sounds cliché to me, but HoudahSpot really is steroids for Spotlight on macOS. Folding Text Preview &mdash; search results can focus on specific paragraphs that match Arranged Results &mdash; group search results by date, size, kind, or application Recent Attributes and Values &mdash; HoudahSpot remembers recently used search attributes and result columns, as well as things like file extensions, tags, and types Regular Expressions &mdash; filter search results by name, path, parent folders, etc. Faster File Tagging &mdash; with custom keyboard shortcuts, favorite and recent tags HoudahSpot can even work directly with Default Folder X (if you have it installed), sending results directly to open and save dialogs. HoudahSpot 5 is available now for $34 US ($52 for a family license). If you want to make more use of search in your daily computer usage, check it out",
		"keywords": ["houdah","houdahgeo","houdahspot","arranged","attributes","default","defaultfolderx","expressions","faster","folder","folding","houdahspot","preview","recent","regular","results","screenshot","spotlight","tagging","values","attributes","available","brettterpstra","check","class","clich","columns","computer","custom","daily","dialogs","directly","enough","extensions","falls","family","favorite","features","filing","fills","filter","focus","folder","folders","group","height","hierarchies","highlights","houdah","houdahspot","https","image","installed","keyboard","latest","ldquo","license","loading","macos","match","mdash","media","method","noscript","original","paragraphs","parent","picture","primary","rdquo","recent","recently","remembers","results","rsquo","search","sending","shifted","short","shortcuts","sounds","source","specific","srcset","stclairsoft","steps","steroids","title","types","uploads","usage","version","where","width"]
	},{
		"title": "MightyDeals: Mega Bundle of 130+ Fonts & 200+ Graphic Templates",
		"url": "/2019/04/04/mightydeals-mega-bundle-of-130-plus-fonts-and-200-plus-graphic-templates/",
		"tags": ["fonts","sponsor"],
		"date": "Apr 4<span>th</span>, 2019",
		"ts": "1554375600",
		"summary": "Thanks to MightyDeals for sponsoring BrettTerpstra.com this week! This ginormous Mega Bundle from Mighty Deals is overflowing with 138 typefaces and over 200 premium graphic templates! That&rsquo;s over 40 unique font families full of everything from handwritten to display to Slab Serif. Mix in OpenType features and an extended license and the creativity is limitless! 138 unique typefaces from 43 font families 200+ premium graphic templates Wide variety of styles: Brush, Calligraphy, Display, Sans Serif, Script, Serif, Slab Serif Multilingual support for the majority of the fonts included Endless uses: logos, T-shirts, posters, wedding invitations, signs, cards and so much more",
		"keywords": ["design","fonts","mightydeals","templates","brettterpstra","brush","bundle","calligraphy","deals","display","endless","highlights","mighty","mightydeals","multilingual","opentype","script","serif","thanks","cards","creativity","display","everything","extended","families","features","fonts","ginormous","graphic","handwritten","included","invitations","license","limitless","logos","overflowing","posters","premium","rsquo","shirts","signs","sponsoring","styles","support","templates","typefaces","unique","variety","wedding"]
	},{
		"title": "Using htaccess to provide better Open Graph images",
		"url": "/2019/04/02/using-htaccess-to-provide-better-open-graph-images/",
		"tags": ["facebook","service","tagging","tricks","twitter","webdesign"],
		"date": "Apr 2<span>nd</span>, 2019",
		"ts": "1554210000",
		"summary": "I joined David Sparks and Rosemary Orchard on episode 20 of the Automators podcast. It was a riot, and made me realize exactly how nerdy I am about automation and its peripheral nerdery. One of the things that came up was my htaccess trick for handling Open Graph metadata on my blog. I got a bunch of questions about that, so I&rsquo;m writing this up to explain. If you&rsquo;re unfamiliar with Open Graph, it&rsquo;s a protocol which allows you to use meta tags in HTML to explain to various services what a page/post is, what image should represent it, and other information about a page. When you share a URL on Twitter or Facebook and it shows an image, summary, author information, etc., Open Graph is what allows the creator to control what&rsquo;s shown. Facebook and Twitter each have their own specs for preferred image dimensions and minimum size. I won&rsquo;t go into all of those details right now, but if you&rsquo;re setting up a system for yourself you&rsquo;ll want to search the web for the latest information (it changes now and then). Different Open Graph tags target specific services, so I need different images for each service. My setup automatically generates all of the necessary sizes from a template I use, naming each one with a suffix for the particular service it&rsquo;s for. Sometimes, though, I don&rsquo;t have a certain size available, which is where the .htaccess trick will come in. Twitter doesn&rsquo;t have specific tags for width and height, so those only apply to the Facebook image. My dimension tags are created using a call to when the static site is generated. So what happens when a file with the appropriate suffix doesn&rsquo;t exist? The .htaccess has a cascade of fallbacks, so when the image specified is requested but doesn&rsquo;t exist, something gets served back. It checks to see if each requested filename exists, then rewrites the filename as the next option, repeating until finally it just falls back to serving the original image from my post. For example, my current Web Excursions header doesn&rsquo;t have a tw version. I actually added that size since I created that image. So while the HTML specifies as the Twitter image, when you put that in a browser, you&rsquo;ll actually be served the Facebook version: . Which is close enough in this case, each service will crop as needed. Having the right dimensions to begin with simply gives you control over how the image appears. By the way, this has the side effect&hellip;",
		"keywords": ["design","facebook","graph","htaccess","twitter","automators","david","different","excursions","facebook","graph","having","orchard","rosemary","sometimes","sparks","square","twitter","added","allows","appears","appending","apply","asked","author","automatically","automation","available","based","begin","boilerplate","browser","bunch","cascade","certain","changes","checks","close","contact","control","created","creator","details","different","dimension","dimensions","displays","doesn","easily","enough","episode","example","exist","exists","expected","explain","fallbacks","falls","filename","finally","generated","generates","gives","gracefully","handles","handling","happens","haven","header","height","helps","htaccess","image","images","information","joined","latest","letting","metadata","modify","naming","necessary","needed","needing","nerdery","nerdy","original","particular","people","peripheral","podcast","preferred","primary","protocol","questions","realize","repeating","retina","rewrites","right","rsquo","rules","search","seems","served","service","services","serving","setting","setup","share","sharing","shown","shows","simply","since","sizes","small","specific","specifically","specifies","specs","standard","static","suffix","suffixes","summary","system","target","template","templates","trick","unfamiliar","using","various","version","where","while","width","worth","writing"]
	},{
		"title": "Keeping track of all your projects' build systems",
		"url": "/2019/04/01/keeping-track-of-all-your-projects-build-systems/",
		"tags": ["developer","scripting","terminal"],
		"date": "Apr 1<span>st</span>, 2019",
		"ts": "1554123600",
		"summary": "I work on a lot of different coding projects. Websites, front end and back, Mac and iOS coding, Ruby gems, scripting, design projects. While I&rsquo;m working on a project, the build, deploy, and other development processes I set up become second nature. Once I&rsquo;ve moved to another project or 20, I&rsquo;ve learned it&rsquo;s really easy to forget how I had it all set up. Maybe I was using CodeKit, or maybe I had gulp-watch set up, maybe everything is in a Rakefile&hellip; As a result, I take notes whenever I set up Grunt or Gulp, add npm tasks, build out a rakefile, or just create some shell scripts to automate my processes. Just a reminder of what the process is and what tricks I&rsquo;ve been up to. The notes are saved in the root directory, and I add the notes to the project&rsquo;s git repo; they can help me save time explaining things to any collaborators, but mostly they&rsquo;re just there so that when I dig the project up a year later, I don&rsquo;t have to dig through all of the config files to remember what&rsquo;s what. To that end, I wrote a simple script to find these build notes and show me all or any given section of them. It relies on there being a file in the current directory with a name that starts with \"build\" and an extension of \".md\", \".txt\", or \".markdown\". I usually call mine \"buildnotes.md,\" but it will find anything matching those criteria. The sections of the notes are delineated by Markdown headings, level 2 or higher, with the heading being the title of the section. I split all of mine apart with h2s. For example, a short one from the little website I was working on yesterday: The script isn&rsquo;t terribly advanced. It expects there to only be one header level used to split sections. Anything before the first header is ignored. Sometimes I write more detailed notes, but the above project was pretty straightforward. I did, however, end up with config files from multiple package managers around from my discovery phase, so until I clean it up you couldn&rsquo;t just look at the directory and tell what package manager or build system to use. Ultimately, I just need enough info to know where to look for more details. If I know that I was compiling my css with gulp and compass, I know I&rsquo;m looking for a gulpfile.js and a sass folder to start editing the CSS. To use the tool, save the script to a file and make it executable (). I alias the script to , which makes it really easy to remember (I just ask the&hellip;",
		"keywords": ["build","development","grunt","codekit","deploy","grunt","markdown","maybe","rakefile","sometimes","websites","while","above","advanced","alias","aliases","another","apart","automate","avoid","before","build","buildnotes","characters","clean","coding","collaborators","colorized","compass","compiling","config","consistent","couldn","create","criteria","delineated","deploy","design","detailed","details","development","different","directory","discovery","editing","enough","entire","everything","example","executable","expects","explaining","extension","files","first","folder","forget","front","gulpfile","header","heading","headings","hellip","helpful","helps","higher","however","ignored","including","insensitive","keeping","later","learned","level","little","looking","makes","manager","managers","markdown","match","matching","maybe","mostly","moved","multiple","nature","needed","notes","output","package","phase","process","processes","project","projects","rakefile","relies","remember","reminder","rsquo","saved","script","scripting","scripts","second","section","sections","shell","short","silly","simple","sounds","specific","split","starts","stored","straightforward","system","tasks","terribly","through","title","tools","tracking","tricks","using","usually","version","wasting","watch","website","whenever","where","wherever","working","write","wrote","yesterday"]
	},{
		"title": "Web Excursions for March 29, 2019",
		"url": "/2019/03/29/web-excursions-for-march-29-2019/",
		"tags": ["bookmarks","plugin","recording","terminal"],
		"date": "Mar 29<span>th</span>, 2019",
		"ts": "1553864400",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Norsk Hydro will not pay ransom demand and will restore from backups Just remember that every time you hear about a company paying ransomware demands, it probably means they have outdated/nonexistent backups. I know it&rsquo;s more complex on a large scale IT network, but you really should back up (ooh, check out this week&rsquo;s sponsor, Backblaze :)). Grav - A Modern Flat-File CMS I&rsquo;m still pretty deep in Jekyll as my blogging platform right now, but I&rsquo;m reaching some limits. Assuming I stick with a flat-file CMS (as opposed to WordPress), this one that Rosemary Orchard turned me on to is a top contender. tmux-plugins/tmux-continuum This tmux plugin is awesome: continuous save of your tmux environment for automatic restore whenever tmux is started, even after a reboot. Load up the tpm plugin manager so you can install this and the requisite tmux-resurrect plugin to get going. asciinema - Record and share your terminal sessions, the right way I&rsquo;ve been seeing these terminal recordings in GitHub readmes and they&rsquo;re pretty awesome. Text-based session recordings from your terminal, optionally hosted for playback. Recordings can be paused so you can copy text right out of it. postlight/mercury-parser-api Mercury Parser is the API that services like Feedbin and Reeder use to give you full content articles in your feed. It&rsquo;s shutting down, but Postlight has open sourced the parser and the API. I&rsquo;ve been playing with a local install and it makes a great markdownifier. (I&rsquo;ll probably be updating Marky with it soon so I can switch over to https&hellip;) Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["hydro","norsk","assuming","backblaze","check","feedbin","github","hydro","jekyll","marky","mercury","modern","norsk","orchard","parser","postlight","record","recordings","reeder","rosemary","wordpress","affordably","articles","asciinema","automatic","awesome","backs","backups","based","blogging","brought","check","cloud","company","complex","computer","contender","content","continuous","continuum","demand","demands","entire","environment","everything","excursions","going","great","hellip","hosted","https","install","limits","local","makes","manager","markdownifier","mercury","network","nonexistent","opposed","optionally","outdated","parser","partnership","paused","paying","platform","playback","playing","plugin","plugins","postlight","ransom","ransomware","reaching","readmes","reboot","recordings","reliably","remember","requisite","restore","resurrect","right","rsquo","scale","securely","seeing","services","session","sessions","share","shutting","sourced","sponsor","started","stick","switch","terminal","today","turned","updating","whenever"]
	},{
		"title": "Backblaze Cloud Backup –the easiest way to back up all your data",
		"url": "/2019/03/28/backblaze-cloud-backup-the-easiest-way-to-back-up-all-your-data/",
		"tags": ["backup","cloud","sponsor"],
		"date": "Mar 28<span>th</span>, 2019",
		"ts": "1553778000",
		"summary": "Thanks to Backblaze for sponsoring BrettTerpstra.com this week. I&rsquo;ve been a user of both the Backblaze cloud backup and their B2 storage service for years, and it&rsquo;s the best solution I&rsquo;ve found for complementing my local Time Machine and drive clone backups. I&rsquo;ve even been through the restore process, which is the true test of a backup service, and they passed with flying colors. Great to have them this week! Don’t lose your work. Back up all your data with Backblaze Cloud Backup. It’s unlimited, unthrottled, uncomplicated, and at $6/month per computer, it’s a no-brainer. Backblaze natively backs up your music, movies, photos, and whatever you’re working on or editing for just $6/month. Backblaze continuously and securely backs up all the data on your computer and external hard drives. We keep things simple. The backup is automatic, so you don’t have to worry about remembering where your files are or picking and choosing which locations to back up. Backblaze does the work for you. Don’t want to back up a certain folder? Simply exclude it from your backup. Easy. Accessing files is easy. Get your files back via any web browser. Log in to your account, preview the files you want to download, and download them one at a time, or group them together to download a ZIP. Mobile access is easy with iOS and Android apps that let you browse your files and download them directly to your phone. Have a lot of data? Backblaze can FedEx you a flash key or USB hard drive with all your data on it. Don’t need the drive that they ship to you? Return it to Backblaze within 30 days for a refund. Want to archive some of your files off to B2 Cloud Storage? Backblaze recently launched a Save Files to B2 feature which allows you to copy your files your backup into B2 Cloud Storage ($0.005/GB). It’s a great way to save off chunks of data or create snapshots of your entire backup. For $6/month, Backblaze will give you peace of mind in knowing your files are backed up safely and securely. Stop putting it off. Start your free trial, and get your backup started today. Already backing up? Tell a friend or family member who might be in need. It’s so simple, they’ll thank you later",
		"keywords": ["backblaze","backup","cloud","accessing","android","backblaze","backup","brettterpstra","cloud","fedex","files","great","haves","machine","mobile","return","simply","storage","thanks","access","account","allows","archive","automatic","backblaze","backed","backing","backs","backup","backups","brainer","brett","brettterpstra","browse","browser","certain","choosing","chunks","class","clone","cloud","colors","complementing","computer","continuously","create","directly","download","drive","drives","editing","entire","external","family","feature","files","flash","flying","folder","found","friend","great","group","haves","header","height","https","image","knowing","landing","later","launched","loading","local","locations","media","member","movies","music","natively","nofollow","noscript","original","passed","peace","phone","photos","picking","picture","podcast","preview","process","putting","recently","refund","remembering","restore","rsquo","safely","securely","service","simple","snapshots","solution","source","sponsoring","srcset","started","storage","thank","through","title","today","together","trial","uncomplicated","unlimited","unthrottled","uploads","whatever","where","width","within","working","worry","years"]
	},{
		"title": "When you find a hair clipper worth writing about...",
		"url": "/2019/03/27/when-you-find-a-hair-clipper-worth-writing-about-dot-dot-dot/",
		"tags": ["hardware","productivity","shortcuts"],
		"date": "Mar 27<span>th</span>, 2019",
		"ts": "1553711760",
		"summary": "Just to be clear, this post is about a hair clipper called the Shortcut Pro. This is not about Shortcuts for iOS or any kind of automation. It&rsquo;s about a hair clipper. You have permission to feel whatever you need to about that. I mentioned the Remington Shortcut Pro in my \"Favorites of 2018\" post. I had only had it for a short while at that point. I knew I liked it, but didn&rsquo;t realize it was going to be a continuing love story. This review is about a product for keeping hair short coming from a person who keeps his hair very short. It&rsquo;s not for everyone. It&rsquo;s just for people who keep their hair short, and who like doing so for themselves. The clipper is a little puck, really, that fits into the palm of your hand. This makes it almost like using a comb: it&rsquo;s easy to use with either hand, and even easy to use on the back of your head while looking in a mirror-on-mirror situation and trying to convince your muscles to do the opposite of what you&rsquo;re seeing. Holding something in the palm of your hand versus gripping a stick seems like a small difference, but it&rsquo;s been a huge speed increase in my weekly shavings. The clipper blade is curved. I have a cowlick that actually grows in every direction. A swirl. Maybe all cowlicks are like that, but when I used to have enough hair to go to the barber, he was always amused by it. So anyway, this curved blade is the first tool I&rsquo;ve found that makes cutting that part a 2-pass job, rather than the 7-or-8-pass job that it took me with straight clippers. The curve wraps around all the contours of my skull. It&rsquo;s so fast. It&rsquo;s also fully waterproof. Not that I&rsquo;m shaving my head in the shower, but it makes it really easy to clean. Just run it under water and wipe it off with my finger, dry it, drop a bead of oil on it (I&rsquo;m going to make this thing last forever) and stick it in the drawer. The battery life on the thing is pretty incredible, too. Just to see how long it would take to wear out, I put off charging it after I got it. At the risk of eventually leaving my head half shaved while it recharged at some point, I went 3 months without plugging it in. It never died, I just eventually figured I should charge it up to be safe. So I&rsquo;ve charged it once in 6 months now. Granted, 15 minutes of use once a week shouldn&rsquo;t kill a battery too fast, but I&rsquo;m still impressed. Beats my last pair of cordless clippers ten-&hellip;",
		"keywords": ["product","remington","shortcut","amazon","anyway","beats","check","favorites","granted","holding","index","maybe","remington","shortcut","shortcuts","almost","amused","anyway","attachable","automation","barber","battery","beard","blade","called","charge","charged","charging","clean","clear","clipper","clippers","combs","comes","coming","compelled","continuing","contours","convince","cordless","cowlick","cowlicks","curated","curve","curved","cutting","difference","direction","doing","drawer","either","enough","eventually","everyone","feelings","figured","finger","first","forever","found","fully","going","gripping","growing","grows","guard","haircut","happen","haven","having","impressed","increase","incredible","internet","keeping","keeps","leading","leaving","length","liked","little","looking","makes","match","mentioned","minutes","mirror","muscles","opposite","people","permission","person","plugging","point","price","problem","product","pushed","rather","realize","recharged","record","reviews","rsquo","seeing","seems","separate","service","setting","shaved","shaving","shavings","short","shortened","shorter","shouldn","shower","shows","since","situation","skull","slides","small","speed","sport","stick","story","straight","summary","swirl","takes","tested","themselves","trimmer","trying","under","using","versus","water","waterproof","weekly","whatever","while","whole","worth","wraps"]
	},{
		"title": "Macstock 2019 is on the horizon",
		"url": "/2019/03/26/macstock-2019-is-on-the-horizon/",
		"tags": ["macstock","personal"],
		"date": "Mar 26<span>th</span>, 2019",
		"ts": "1553605200",
		"summary": "Hey, guess what? I&rsquo;m speaking at Macstock 2019 (and yes, see the end of the post for my special discount code!). It&rsquo;s coming up on July 27th and 28th this year, once again in Woodstock, IL. Which you obviously know is the town where Groundhog Day was filmed. Last year I spoke on tagging, which you know I love, but it&rsquo;s a hard sell and a tough talk to do (I discovered too late). This year, the theme of the conference is \"Create,\" and I pitched one I&rsquo;ll really love doing. I haven&rsquo;t finalized all the subtopics of this year&rsquo;s talk yet, but the subject is going to be automating and improving all kinds of writing on the Mac (and iOS). It&rsquo;s going to be fun. I even happen to know that &mdash; among the many folks I&rsquo;m looking forward to seeing &mdash; my friends David Sparks and Rosemary Orchard (of MPU/Automators fame) are going to be in town, with some live podcasting and a presentation from Rosemary that I&rsquo;m truly looking forward to. The Early Bird Sale for tickets is on now, with weekend passes going for $179US (regular price $249). Macstock grows every year, and I&rsquo;d love to see you there. I see this as the most viable replacement for the best parts of the Macworld expos of yore, so the more the merrier. Start thinking about making it to the midwest for a weekend of Mac and iOS fun this summer. You can use the code to get an additional $10 off the early bird price right now",
		"keywords": ["conference","woodstock","automators","create","david","groundhog","macstock","macworld","orchard","rosemary","sparks","woodstock","again","among","automating","coming","conference","discount","discovered","doing","expos","filmed","finalized","folks","friends","going","grows","guess","happen","haven","improving","kinds","looking","making","mdash","merrier","midwest","parts","passes","pitched","podcasting","presentation","price","regular","replacement","right","rsquo","seeing","speaking","special","spoke","subtopics","summer","tagging","theme","thinking","tickets","tough","truly","viable","weekend","where","writing"]
	},{
		"title": "Web Excursions for March 22, 2019",
		"url": "/2019/03/22/web-excursions-for-march-22-2019/",
		"tags": ["bookmarks","browser","developer","editor","music","source"],
		"date": "Mar 22<span>nd</span>, 2019",
		"ts": "1553262720",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. There are plenty of good reasons to do open source for free A look at the reasons why developers choose to open source their projects. Unlike design, this isn&rsquo;t spec work. My favorite argument here is that creating open source software is a way of paying for all the open source software that got you to where you are. Seems legit to me&hellip; Three Reasons Why the \"Nothing to Hide\" Argument is Flawed A great post in response to the “Why should I care? I have nothing to hide” argument that comes up when discussing digital privacy. Espresso — The Web Editor for Mac I somehow missed that Espresso was back. This used to be my favorite editor for HTML/CSS, and the new features are downright amazing. If you&rsquo;re looking for a dedicated editor for web development, check this out. It&rsquo;s not cheap ($79US right now), but worth it, in my opinion after trying it out for a few days. And for those on Setapp, you already have it! CodeKit Mentioning Espresso makes me want to also mention CodeKit. CodeKit, as its tagline states, is \"THE Mac App for Web Developers\". Basically a GUI for everything from minification and optimization to JavaScript linting and transpiling, as well as a fully-fledged \"LiveReload\" style server for seeing changes live in your web browser as you work in your preferred editor. generative-music/generative.fm: A platform for playing generative music in the browser. A node-based platform for playing generative music in your browser. See it in action at Generative.fm. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["design","development","source","argument","check","codekit","developers","editor","espresso","flawed","generative","javascript","livereload","mentioning","mindmeister","nothing","reasons","seems","setapp","unlike","action","amazing","argument","based","boosting","brainstorming","brettterpstra","brought","browser","changelog","changes","cheap","check","choose","class","codekitapp","collaborating","collaborative","comes","creating","dedicated","design","developers","development","digital","discussing","downright","editor","espressoapp","everything","excursions","favorite","features","flawed","fledged","fully","generative","github","great","height","hellip","https","image","ldquo","legit","linting","loading","looking","makes","mapping","media","mention","mindmeister","minification","missed","music","noscript","nothing","optimization","original","partnership","paying","picture","platform","playing","plenty","posts","preferred","privacy","productivity","projects","rdquo","reasons","response","right","rsquo","seeing","server","setapp","software","somehow","source","spreadprivacy","srcset","states","style","tagline","title","transpiling","trying","uploads","where","width","worth"]
	},{
		"title": "Working Smarter with MeisterTask",
		"url": "/2019/03/21/working-smarter-with-meistertask/",
		"tags": ["automator","sponsor"],
		"date": "Mar 21<span>st</span>, 2019",
		"ts": "1553166000",
		"summary": "Thanks to MeisterTask for sponsoring BrettTerpstra.com this week. I&rsquo;ve been using MeisterTask extensively&mdash;including integration with Slack and GitHub&mdash;for collaborative projects for quite a while now. I&rsquo;m happy to offer my endorsement! MeisterTask is a Kanban-based task manager that&rsquo;s all about working smarter instead of harder. While the interface is deliberately simple and sleek, a number of handy automation features hide below the surface, ready to bring your productivity to the next level: Automations: In MeisterTask, you can set up automatic actions that are triggered whenever a task is created in or moved to a specific section in your project. Want to notify a Slack channel about all new tasks? Or stop the time tracking when a task is completed? Everything can be automated with a few quick clicks to ensure that you work more consistently and efficiently. Integrations: To help you create the perfect workflow, MeisterTask comes readily integrated with dozens of popular tools such as Slack, Zendesk, Spark, MindMeister and Github. Thanks to Zapier and IFTTT, you can even connect projects with your smart kitchen appliances, if that&rsquo;s what you want. Predefined checklists: When you save a checklist, you can quickly load it into any new task you create. This simple trick is perfect for tasks that come up on a recurring basis and require the same steps, such as sending a weekly newsletter for instance. Custom fields: Sometimes, you want all tasks within a project to contain certain pieces of information. If you set up a project to track support tickets, you probably want each task to include things like the ticket number, the user&rsquo;s operating system, and the app version they&rsquo;re using. With MeisterTask, all these things can be defined as custom fields, which are automatically added to the task&rsquo;s description. Being web-based, MeisterTask is location and platform independent, making it a great choice for remote teams and all those who want to collaborate with external stakeholders. If you&rsquo;re looking for a simple yet powerful team task manager, head on over to MeisterTask and give it a try. You can use the code to get 15% off your first year with the annual pricing plan",
		"keywords": ["kanban","meisterlabs","meistertask","mindmeister","trello","automations","brettterpstra","custom","everything","github","github","ifttt","integrations","kanban","meistertask","mindmeister","predefined","slack","sometimes","spark","thanks","while","zapier","zendesk","actions","added","annual","appliances","automated","automatic","automatically","automation","based","basis","below","bring","certain","channel","checklist","checklists","choice","clicks","collaborate","collaborative","comes","completed","connect","consistently","contain","create","created","custom","defined","deliberately","description","dozens","efficiently","endorsement","extensively","external","features","fields","first","great","handy","happy","harder","including","independent","information","instance","integrated","integration","interface","kitchen","level","location","looking","making","manager","mdash","moved","newsletter","offer","operating","pieces","platform","popular","powerful","pricing","productivity","project","projects","quick","quickly","readily","ready","recurring","remote","rsquo","section","sending","simple","sleek","smart","smarter","specific","sponsoring","stakeholders","steps","support","surface","system","tasks","teams","ticket","tickets","tools","track","tracking","trick","triggered","using","version","weekly","whenever","while","within","workflow","working"]
	},{
		"title": "Finally, new columns for iTextEditors",
		"url": "/2019/03/19/finally-new-columns-for-itexteditors/",
		"tags": ["itexteditors","support"],
		"date": "Mar 19<span>th</span>, 2019",
		"ts": "1553012880",
		"summary": "I posted an update on iTextEditors yesterday, and got a great response from people adding to and updating the list. This inspired me to finally add a couple of new criteria (that didn&rsquo;t even exist when the original chart was created): Document Provider support and Split Screen support. I had previously started to compile a list of apps supporting these features with the help of a few field testers, but the list of apps has changed significantly since then and I need some help with updating. If you look at the list, you&rsquo;ll see most of the apps listed with a question mark in those columns. If you browse it and happen to know that an app does or does not support either feature, please let me know. And I&rsquo;ll tell you what, you don&rsquo;t even have to use the submission form in this case (though you&rsquo;re still welcome to, and absolutely should if you&rsquo;re submitting a new app). You can just let me know (via Twitter or the contact form) the name of the app and yes or no for one or both of those criteria",
		"keywords": ["document","editors","iphone","provider","document","provider","screen","split","thanks","twitter","adding","browse","changed","chart","columns","contact","couple","created","criteria","either","exist","feature","features","field","finally","great","happen","itexteditors","inspired","listed","original","people","posted","previously","response","rsquo","significantly","since","started","submission","submitting","support","supporting","testers","updating","welcome","yesterday"]
	},{
		"title": "The dwindling number of iOS text editors",
		"url": "/2019/03/18/the-dwindling-number-of-ios-text-editors/",
		"tags": ["editor","itexteditors"],
		"date": "Mar 18<span>th</span>, 2019",
		"ts": "1552914000",
		"summary": "Over the weekend I weeded out the dead apps on my iTextEditors comparison chart and was surprised to find that over 30 of the 90 editors on the list were no longer available. I figured a few would be gone, but a third of them had gone the way of the dinosaur1. Perhaps the cream has risen to the top and most people are settling on the leaders of the pack. Maybe there just isn&rsquo;t that much money to go around in the iOS text editor market. I was definitely sad to see apps like Writing Kit and Trunk Notes call it quits, while some of the others I knew had morphed into different applications (e.g. Daedalus->Ulysses). So I&rsquo;d like to ask for the crowd to help me make sure iTextEditors is up to date with your current favorite apps. Check the chart, and if you don&rsquo;t see yours (or any that you have on your mind at the time), please submit new forms for them. It will help keep this resource going even though Apple has ensured that I don&rsquo;t personally make any money off it&hellip; Thanks in advance, and I&rsquo;m looking forward to seeing what you&rsquo;ve got! P.S. please do use the submission form and don&rsquo;t just name apps in the comments or on Twitter2. I don&rsquo;t have the bandwidth to track down the details on every editor myself. Avoiding a Revelation 12:4 reference here&hellip;&nbsp;↩ I already know this will be commonly disregarded/ignored, but I had to try.&nbsp;↩",
		"keywords": ["editors","apple","avoiding","check","daedalus","maybe","notes","perhaps","revelation","thanks","trunk","twitter","ulysses","writing","affiliate","applications","available","backlink","bandwidth","biblehub","brettterpstra","chart","class","comments","commonly","comparison","cream","crowd","definitely","details","different","dinosaur","disregarded","editor","editors","endnotes","ensured","favorite","figured","fnref","footnote","footnotes","forms","going","hellip","https","itexteditors","ignored","iknow","itunes","killing","leaders","longer","looking","market","money","morphed","myself","noteref","others","people","personally","quits","resource","revelation","reversefootnote","risen","rsquo","seeing","settling","submission","surprised","third","track","weeded","weekend","while","wufoo"]
	},{
		"title": "TextExpander's new Visual Editor",
		"url": "/2019/03/14/textexpanders-new-visual-editor/",
		"tags": ["editor","snippet","sponsor","textexpander"],
		"date": "Mar 14<span>th</span>, 2019",
		"ts": "1552561200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander 6.5 is out with a great new visual editor for snippets! The new editor gives you visual access to fill-ins, dates and date math, nested snippets, and more. Snippets that used to look like now shows up as a tidy set of token fields that you can double click to edit. For those who get into scripting their snippets, automation is even easier with the new editor&rsquo;s JavaScript syntax highlighting. As always, the TextExpander snippets you use on your desktop or laptop work on your iPhone and iPad, too. And TextExpander Windows users now get offline editing support, and improved expansion. BrettTerpstra.com readers get 20% off their first year. Visit textexpander.com/podcast to learn more about TextExpander",
		"keywords": ["smile","snippet","textexpander","brettterpstra","javascript","snippets","textexpander","thanks","visit","windows","access","automation","click","dates","desktop","double","easier","editing","editor","expansion","fields","first","gives","great","highlighting","iphone","improved","laptop","learn","nested","offline","podcast","readers","rsquo","scripting","shows","snippets","sponsoring","support","syntax","textexpander","token","users","visual"]
	},{
		"title": "Get better stats for your writing with Marked 2",
		"url": "/2019/03/12/get-better-stats-for-your-writing-with-marked-2/",
		"tags": ["marked"],
		"date": "Mar 12<span>th</span>, 2019",
		"ts": "1552411620",
		"summary": "I&rsquo;ve put together a new screencast demonstrating some of the document statistics capabilities of Marked 2. In addition to being a great way to preview your Markdown documents as you work, Marked can go further to provide character and word counts, sentence and paragraph counts, various readability indexes, reading time, and even show progress toward your word target for the piece. Check it out! Be sure to check out some of the other Marked screencasts I&rsquo;ve posted. Intrigued but not currently a user? Check out Marked 2 at marked2app.com",
		"keywords": ["markdown","marked","writing","check","intrigued","markdown","marked","capabilities","character","check","counts","demonstrating","document","documents","great","indexes","marked","paragraph","piece","posted","preview","readability","reading","rsquo","screencast","screencasts","sentence","statistics","target","together","toward","various"]
	},{
		"title": "The ultimate guide to DuckDuckGo",
		"url": "/2019/03/07/the-ultimate-guide-to-duckduckgo/",
		"tags": ["answered","editor","flickr","fonts","google","keyboard","markdown","privacy","recipe","search","shortcuts","video","weather"],
		"date": "Mar 7<span>th</span>, 2019",
		"ts": "1551983160",
		"summary": "Disclosure: DuckDuckGo has sponsored this site in the past. This post is not paid for (or even authorized by) DuckDuckGo. By now I&rsquo;m sure you&rsquo;ve heard of DuckDuckGo around the web (and I&rsquo;ve been mentioning them for years). If you don&rsquo;t already have the scoop, it&rsquo;s the search engine that can serve as a complete replacement for Google (and Bing and whatever else you like), except it respects your privacy and security. And while Google does some cool tricks, DuckDuckGo does some even better ones. Let&rsquo;s start with the basics. To understand why you should be using a search engine like DuckDuckGo, read about the Filter Bubble and DuckDuckGo&rsquo;s Privacy statement. The biggest deal is that DuckDuckGo stops your searches from being aggregated and logged with personal identification information. This is a significant step in reducing the amount of profiling companies can do. You can also add a proxy site, or even combine DuckDuckGo with Tor for ultimate privacy. DuckDuckGo operates its own Tor Exit Enclave. DuckDuckGo has guides for adding the search engine to all of your browsers. Once you have it set as your default search engine, you&rsquo;ll be able to use the URL bar in Chrome, Firefox, Safari, and others to search DuckDuckGo directly, just like you were with the (probably) default Google search engine. There are a few settings you can change. These include theme and appearance settings and things like default safe search settings. You can also specify a region, which will then prioritize results from that region in your searches. Region search can be toggled on and off and even changed per search (see the dropdown at the top of any results page). You can also disable ads. DuckDuckGo doesn&rsquo;t monetize its users&rsquo; data, so it&rsquo;s essentially ad-supported. But if you want to disable them, you can do so under Settings->General->Advertisements. Just be sure to support DDG by sharing it with friends. The search syntax is very similar to Google&rsquo;s, so if you&rsquo;re familiar with that you won&rsquo;t need to learn much. Obviously you can just search a bunch of words, but there are a few additional syntaxes you can use to refine results. First, you can exclude words from the results by adding a minus () before the word. This doesn&rsquo;t ban the word, but de-prioritizes it in the search results. Conversely, you can use to increase the priority of a word. If you add a category at the end&hellip;",
		"keywords": ["duckduckgo","engine","google","search","ascii","advertisements","amazon","answers","archive","boolean","bubble","calculator","calendar","cheat","chrome","commons","conversely","creative","david","dictionary","disclosure","duckduckgo","ducky","emoji","enclave","encoding","feeling","figlet","filter","firefox","first","flickr","fonts","general","giphy","goliath","google","installation","instant","internet","keyboard","lifehacker","lipsum","lucky","media","netflix","personally","pirate","privacy","recipes","region","related","return","safari","search","searches","searching","settings","shortcuts","shorten","social","sometimes","specify","stackoverflow","stopwatch","syntax","times","translate","twitter","underground","using","weather","while","wikipedia","youtube","accept","account","adding","affects","aggregated","ahtmqri","allowing","almost","amount","answer","answered","anyway","anywhere","appear","appearance","arrows","authorized","automatically","available","background","backslash","basic","basics","before","begin","beginning","benefit","between","bigger","biggest","boolean","brettterpstra","browsers","bunch","button","calculator","calendar","calls","category","certain","chances","change","changed","character","characters","cheat","click","clicking","codes","coding","comic","commas","common","commonly","companies","complex","convert","coolest","countdown","cumbersome","default","descriptions","developers","different","directly","disable","doesn","domain","domains","double","dropdown","duckduckgo","easiest","embarrassingly","emoji","emoticons","encode","engine","entering","essentially","everything","exact","example","except","exclamation","expand","explain","explainxkcd","explanation","exploration","familiar","favorite","favorites","feature","figlet","first","flattered","focus","followed","fonts","format","fraction","friends","gotten","grass","groupings","guide","guides","handily","handle","handles","hands","handy","heard","hellip","highlight","highlighted","homepage","identification","identifier","image","images","including","increase","increasingly","individual","information","input","internal"]
	},{
		"title": "Amazon affiliates and automated contextual snippets in Jekyll",
		"url": "/2019/03/05/amazon-affiliates-and-automated-contextual-snippets-in-jekyll/",
		"tags": ["affiliate","amazon","blogging","jekyll","liquid","plugin","programming","snippet","tagging"],
		"date": "Mar 5<span>th</span>, 2019",
		"ts": "1551801600",
		"summary": "Whenever I link to an Amazon product on this blog, I use an affiliate link through the Amazon Affiliate program. They pay me a nominal amount for the referral and it doesn&rsquo;t cost my users anything. I don&rsquo;t always add a disclaimer for these links, but when I do I often mention that \"clicking this link helps support the site.\" It turns out &mdash; as pointed out to me by a reader (thanks Jean) &mdash; you&rsquo;re not supposed to do that. But there is a standard disclosure provided by Amazon that I&rsquo;ll be including on this site from now on. Here&rsquo;s the fun part of the post (and from here on out it&rsquo;s specifically for Jekyll bloggers): my Jekyll site will now automatically add the aforementioned disclaimer any time I use an Amazon affiliate link. This just takes a few steps, which I&rsquo;ll cover briefly. If you want to implement something like this on a Jekyll site and run into any issues with my explanation, I&rsquo;d be happy to offer more guidance if you want to contact me1. I imagine it would be easy enough on other sites, and I&rsquo;ve created WordPress plugins that do similar as well. I want the disclosure paragraph to automatically be included whenever I use an Amazon affiliate link, but not on posts where I don&rsquo;t. The first thing I did was add a Liquid filter that can simply return if any form of an affiliate link url is found in the post content. I added this to my own set of filters, but you can set up a new file in if you need to: This matches shortened links (), links with my affiliate tag in the query parameters (), and my storefront (). You&rsquo;ll note two of the patterns in the regular expression are for things specific to me: is my own affiliate tag, and is my storefront. (And hey, because I just linked it, the disclosure will now show up on this post. Neat.) You&rsquo;ll need to change those to your own tag and storefront, optionally removing the storefront match entirely if you don&rsquo;t have one. You could put the markup right into your article template, but I like to use includes because I actually use a bunch of different versions of this (I&rsquo;ll show a few examples at the end). In , I have this (again, you&rsquo;ll want to edit slightly to fit your own site): Just for reference, I use the following in my site styles. Obviously, personal taste. It passes the content of the post through the filter I defined at the beginning and captures the result to a variable. If the post content&hellip;",
		"keywords": ["automation","&#39;bash","&#39;bookmarks&#39;","&#39;podcasting&#39;","&#39;true&#39;","aaron","adding","affiliate","amazon","associates","between","brettterpstra","checks","detecting","examples","excursions","irelan","jekyll","links","liquid","myliquidfilters","program","services","template","whenever","wordpress","action","added","adding","advertising","affiliate","affiliated","aforementioned","again","amazon","amount","apply","article","associates","automatically","background","backlink","because","beginning","bloggers","bookmarks","border","brettterpstra","briefly","bunch","capture","captures","certain","change","checklist","class","classes","clicking","conditional","conditionally","conditions","contact","contains","content","context","cover","created","createifwriting","custom","david","defined","designed","detecting","different","directory","disclaim","disclaimer","disclosure","doesn","doing","dotted","efefef","elsewhere","endcapture","endif","endnotes","enough","entirely","example","examples","excursions","explanation","expression","extra","false","filter","filters","first","fixed","fnref","footnote","footnotes","found","guidance","hacking","happen","happy","having","headers","height","hellip","helps","highlight","highlighter","https","icons","image","imagine","important","included","includes","including","index","input","instant","issues","italic","jekyllamazon","katie","language","ldquo","likely","linked","linking","links","loading","lsquo","markup","match","matches","mdash","media","mention","module","nominal","noscript","noteref","offer","often","optionally","original","padding","pages","paragraph","parameters","participant","passes","patterns","people","personal","picture","plaintext","plugin","plugins","podcasting","point","pointed","pointing","posts","product","program","query","radius","rdquo","reader","referral","regex","register","regular","remembering","removing","return","reversefootnote","right","rouge","rsquo","rules","saved","search","series","setup","share","shell","shelltricks","shortened","similar","simply","sites","skipping","slightly","snippet"]
	},{
		"title": "Your security and privacy: next steps",
		"url": "/2019/03/01/your-security-and-privacy-next-steps/",
		"tags": ["comments","privacy"],
		"date": "Mar 1<span>st</span>, 2019",
		"ts": "1551467100",
		"summary": "As I mentioned previously, I&rsquo;m working to make this site as respectful of privacy as it can possibly be. To that end, it was pointed out to me by a reader (thanks @maclm) that the comment system I&rsquo;ve been using, Disqus, is actually pretty bad for privacy and tracking. Hilton Lipschitz wrote about this back in 2018, and I&rsquo;m just slow to catch up, apparently. Since most people reply to me on Twitter anyway, I don&rsquo;t have such lively discussions on the blog that I&rsquo;m willing to make a tradeoff on this. After a little searching, I found RemarkBox, a comment system that doesn&rsquo;t track you or store private information not necessary to its functionality. It was built by a solo developer as an alternative to Disqus. I&rsquo;ll be testing it out for a while. One feature of RemarkBox is that you can comment without logging in. You&rsquo;ll get an email, and if you verify it by clicking the link, you can change your display name and link your comments in the future. It will store your username and email, and your IP address for abuse prevention, but privately and will never sell your info to a third party. I&rsquo;m also removing Carbon ads from the site. There&rsquo;s not a high enough click-through rate to justify the audience data collection they&rsquo;re doing. I&rsquo;ll rely only on sponsors and reader support to keep this site running. And some affiliate links, sans data collection, which I&rsquo;ll be writing more about shortly. So no Google, no Facebook, no private data collection by Disqus or advertising services. I feel better, how about you? You can help me test out the new comment system by telling me what you think of it down below&hellip; :)1. I try to never use emoticons on my blog&mdash;they always feel like a cheap way to do something I could more effectively do in prose&mdash;but this time it just seemed appropriate. I do feel dirty, though.&nbsp;↩",
		"keywords": ["carbon","cookies","disqus","tracking","carbon","disqus","facebook","google","hilton","lipschitz","remarkbox","since","twitter","abuse","address","advertising","affiliate","anyway","apparently","audience","backlink","below","brettterpstra","built","catch","change","cheap","class","click","clicking","collection","comment","comments","developer","dirty","discussions","display","disqus","doesn","doing","effectively","email","emoticons","endnotes","enough","feature","finally","fnref","footnote","footnotes","found","functionality","height","hellip","hiltmon","https","image","information","justify","links","little","lively","loading","logging","maclm","mdash","media","mentioned","necessary","noscript","noteref","original","party","people","picture","pointed","policy","possibly","prevention","previously","privacy","private","privately","prose","reader","remarkbox","removing","reply","respectful","reversefootnote","rsquo","running","searching","security","seemed","services","shortly","source","sponsors","sponsorship","srcset","sslheader","store","support","system","telling","testing","thanks","think","third","through","title","track","tracking","tradeoff","ttscoff","twitter","uploads","username","using","verify","while","width","willing","working","writing","wrote"]
	},{
		"title": "Marked 2.5.31",
		"url": "/2019/02/27/marked-2-dot-5-31/",
		"tags": ["marked"],
		"date": "Feb 27<span>th</span>, 2019",
		"ts": "1551286860",
		"summary": "Marked 2.5.31 is available via automatic update, the Mac App Store, and Setapp. It&rsquo;s all fixes this time around, but I took care of a bunch of little bugs. If you happened to grab the automatic update for the direct version during a brief window where I put out an accidentally-sandboxed version (symptoms include being asked to register again, custom processor permission errors, and a loss of preferences), please download from the website and overwrite the app in your Applications folder. Everything will be fine moving forward! Marked 2.5.31 Header text without footer text causes lines to split across pages in paginated pdf export Invisibles (section headers, synopses, comments) in Fountain script changing pagination behavior More GitHub styling issues (paragraph padding, table cell padding) More Dark Mode compatibility issues Close button on detailed statistics sheet disappears in Dark Mode RTL detection JavaScript in HTML export when RTL detection disabled FontAwesome included in HTML export when not using Leanpub interpreter Syntax Highlighting JavaScript included when highlighting is deselected in export options",
		"keywords": ["markdown","store","applications","close","everything","fixes","fontawesome","fountain","github","header","highlighting","invisibles","javascript","leanpub","marked","setapp","store","syntax","accidentally","across","again","asked","automatic","available","behavior","brief","bunch","button","causes","changing","channel","choice","comments","compatibility","custom","deselected","detailed","detection","direct","disabled","disappears","download","enjoy","errors","export","fixes","folder","footer","happened","headers","highlighting","included","interpreter","issues","little","moving","options","overwrite","padding","pages","paginated","pagination","paragraph","permission","preferences","processor","register","rsquo","sailing","sandboxed","script","section","sheet","smoother","split","statistics","styling","symptoms","synopses","table","using","version","website","where","window"]
	},{
		"title": "Web Excursions for February 26, 2019",
		"url": "/2019/02/26/web-excursions-for-february-26-2019/",
		"tags": ["bookmarks","security"],
		"date": "Feb 26<span>th</span>, 2019",
		"ts": "1551211860",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. iPad Diaries: Using a Mac from iOS, Part 1 - Finder Folders, Siri Shortcuts, and App Windows with Keyboard Maestro A lot of great tips and tricks from Federico Viticci on creating a tight workflow between Mac and iOS. Of special note to me is the bit about FileExplorer, which I&rsquo;ve come to love since discovering it in this article. As a side note, Dr. Drang has a small gripe with FileExplorer vs. FileBrowser. Matomo: #1 Secure Open Web Analytics Platform I recently wrote about security and privacy changes on this site, and talked about needing a replacement for Google Analytics on Marked2App.com. Alex pointed out Matomo in the comments and it&rsquo;s exactly what I needed. Security Checklist Pointed out to me by Adam Wood, this is a complete (yet approachable) checklist for staying safe on the internet, as a continuation of the privacy themes I&rsquo;ve been bringing up lately. Laziness Does Not Exist I wish I&rsquo;d had more teachers who understood mental health the way Devon Price does. As someone who suffers from ADHD and BPD, I often feel \"lazy\" and consider my procrastination a moral failing. That needs to stop. Brett&rsquo;s Top Picks on Amazon If you&rsquo;re looking for gifts or just want to splurge on yourself, I&rsquo;ve compiled an Amazon storefront filled with 70 Top Picks from Systematic (returning from hiatus shortly, if you were wondering&hellip;). Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["google","health","mental","amazon","analytics","backblaze","brett","check","checklist","devon","diaries","drang","exist","federico","filebrowser","fileexplorer","finder","folders","google","keyboard","laziness","maestro","marked","matomo","picks","platform","pointed","price","secure","security","shortcuts","systematic","using","viticci","windows","affordably","approachable","article","backs","between","bringing","brought","changes","checklist","cloud","comments","compiled","computer","consider","continuation","creating","discovering","entire","everything","excursions","failing","filled","gifts","great","gripe","health","hellip","hiatus","internet","looking","mental","moral","needed","needing","needs","often","partnership","pointed","privacy","procrastination","recently","reliably","replacement","returning","rsquo","securely","security","shortly","since","small","special","splurge","staying","storefront","suffers","talked","teachers","themes","tight","today","tricks","wondering","workflow","wrote"]
	},{
		"title": "Your security and privacy",
		"url": "/2019/02/21/your-security-and-privacy/",
		"tags": ["browser","google","privacy","security","server"],
		"date": "Feb 21<span>st</span>, 2019",
		"ts": "1550771520",
		"summary": "I&rsquo;ve made a few changes to my sites to be more in line with my own thoughts on privacy and security. When I&rsquo;m using the internet, I use ad blockers, a VPN, and secure DNS on all of my devices, yet I&rsquo;ve still been running websites that collect unnecessary data for Google and which don&rsquo;t provide standard encryption. That&rsquo;s changed, and more changes are coming. It took me too long, but I finally have both BrettTerpstra.com and Marked2App.com switched over to SSL, and both now force https:// access. I definitely considered it a priority on Marked&rsquo;s site because that one initiates commercial transactions. I&rsquo;ll admit that the final incentive to switch both sites over was the recent push among web browsers to call out insecure sites in the url bar, which is embarrassing enough to prompt real action. Good on you, browsers. While all credit card transactions on Marked2App.com have always taken place through Paddle&rsquo;s secure server, it still promotes significantly more confidence to have the origin not show Not Secure in the url bar. Even after the advent of Let&rsquo;s Encrypt, which offers free SSL certificates for everyone, I had issues implementing SSL with my current MAMP setup on a macOS system. I ended up switching both sites over to a shared host that had Let&rsquo;s Encrypt built in and made it a much easier process to add the certificates. Then a simple .htaccess rule forces every request to switch to https. Most of the headache at that point was just revising all of my deploy setups; setting up private key SSH, git and git hooks, and various back end scripts that needed fixing. Side note, I&rsquo;ve also added TOS and Privacy statements to Marked2App.com. Thanks to George Browning from Zengobi for assistance with that. I&rsquo;ve dealt with most of the issues for users caused by the changes in the server environment and the URL itself. Nothing major, but if you notice anything broken here or on marked2app.com, please let me know. I&rsquo;d love to get Marky switched over to SSL soon, but I have to figure out how to do it and maintain the delicate combination of python, ruby, node, and PHP scripts that it relies on, which makes switching to a shared server environment a pain. The only reason I&rsquo;ve been able to run it thus far is that I have full control over the server and can deal with security issues myself. I&rsquo;ll get it there, and it&rsquo;ll be nice to avoid all of the insecure&hellip;",
		"keywords": ["analytics","google","encryption","analytics","brave","brettterpstra","browning","carbon","cloudflare","death","easydns","encrypt","encryption","facebook","fathom","george","ghostery","google","marked","marky","nordvpn","nothing","opendns","paddle","passenger","privacy","secure","small","thanks","twitter","while","zengobi","access","account","action","added","admit","advent","allowing","almost","among","analytics","areas","audience","avoid","aware","because","before","behavior","blocker","blockers","bookmarklets","broken","browser","browsers","built","buttons","capable","caused","certificates","changed","changes","closer","collect","collecting","collection","combination","coming","commercial","confidence","considered","contact","continue","control","credit","custom","dealt","debatable","decision","definitely","deleted","delicate","demographic","deploy","devices","difference","directly","displays","ditched","doing","easier","either","embarrassing","encryption","ended","enough","entirely","environment","events","everyone","extensive","figure","finally","fixing","force","forces","fully","grand","great","handle","happy","haven","headache","helping","hooks","htaccess","https","hypocrisy","implementing","incentive","included","information","initiates","insecure","instance","interested","internet","invading","invasive","issues","itself","location","longer","macos","maintain","major","makes","marked","meantime","mentioned","myself","needed","offers","operated","origin","pages","pitching","point","prefer","priority","privacy","private","process","promotes","prompt","python","reader","readers","recent","recommend","recommendations","relies","replacement","reporting","revising","rewriting","rsquo","running","scheme","scripts","secure","security","sense","server","setting","setup","setups","share","shared","sidebar","significantly","simple","sites","small","speak","standard","statements","statistics","suggestions","support","switch","switched","switching","system","taken","testing","think","thoughts","through","tracker","trackers","tracking","transactions"]
	},{
		"title": "Web Excursions: DIY Photo Edition",
		"url": "/2019/02/19/web-excursions-diy-photo-edition/",
		"tags": ["bookmarks"],
		"date": "Feb 19<span>th</span>, 2019",
		"ts": "1550592000",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. I&rsquo;ve been building out my video lighting setup lately. In addition to purchasing a few items, I&rsquo;ve been researching DIY solutions to save (a significant amount of) money. Here are some of my favorite solutions that I&rsquo;ve found thus far. I often close the comments on the web excursions posts, but if you have some to add to this list, I&rsquo;m leaving them open on this one! DIY photography studio Tips for various lighting scenarios (small, medium, large objects), with some DIY gems. DIY Reliable, Cheap, Easy-to Use Universal White Balance Reference A DIY white balance card that&rsquo;s so cheap it&rsquo;s practically disposable. The easiest of all the builds, and one you might even have all the materials for already. DIY Studio Lights This is the most involved build in this bunch, and I haven&rsquo;t pulled it off yet, but the results look amazing. Adjustable brightness and temperature, diffusion, and 180&deg; coverage. DIY Bounce Board & Interview Lighting There are a gazillion different tutorials on DIY bounce boards, but it&rsquo;s all the same concept. A white board and a foil board. It&rsquo;s not rocket science, but it&rsquo;s an indispensible part of a lighting setup for both photo and video. DIY Ring Light A fairly simple build and a valuable addition to your lighting rig. I purchased a ring light with adjustable color temperature, which I appreciate, but for most purposes this version would be significantly cheaper and cover all the bases. Cheap Under-Cabinet Lights Reimagined as Photography Lighting The project link for this one is 404, but you can see enough in the build photos to understand the simple concept behind this one. Directional lighting using cheap under-cabinet lights from the hardware store and a bit of foam core. Soft Box Build A more involved build, but a nice soft box with track light mounting",
		"keywords": ["lighting","photography","studio","adjustable","balance","board","bounce","build","cabinet","cheap","check","directional","interview","light","lighting","lights","photography","reimagined","reliable","setapp","studio","under","universal","white","access","adjustable","amazing","amount","appreciate","balance","bases","behind","board","boards","bounce","brightness","brought","build","building","builds","bunch","cabinet","cheap","cheaper","close","color","comments","concept","cover","coverage","different","diffusion","disposable","easiest","enough","excursions","fairly","favorite","found","gazillion","hardware","haven","hundreds","indispensible","involved","items","leaving","light","lighting","lights","materials","medium","money","monthly","mounting","objects","often","partnership","photo","photography","photos","posts","project","pulled","purchased","purchasing","researching","results","rocket","rsquo","scenarios","science","setup","significant","significantly","simple","small","solutions","store","studio","subscription","temperature","today","track","tutorials","under","understand","using","valuable","various","version","video","white"]
	},{
		"title": "Work efficiently with TextExpander",
		"url": "/2019/02/14/work-efficiently-with-textexpander/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Feb 14<span>th</span>, 2019",
		"ts": "1550149200",
		"summary": "Happy Valentine&rsquo;s Day, and a big thanks to TextExpander for sponsoring BrettTerpstra.com this week! Copy and paste is an inefficient way to keep track of the things you type over and over. TextExpander makes you more productive by taking care of all those words and phrases for you, putting them at the tip of your fingers with short abbreviations. TextExpander works in all your apps so you can use it everywhere, like your favorite email app, text editor, Microsoft Word and Excel, Adobe Illustrator and InDesign, and Apple&rsquo;s Pages. All of your snippets are everywhere, on all of your devices. TextExpander updates new and edited snippets between your Mac, iPhone, iPad, and Windows PC instantly. Spend less time typing and more time doing what you really want. TextExpander even offers free snippet groups for job recruiters, freelancers, airport codes, brand names, and more at the TextExpander website. BrettTerpstra.com readers get 20% off their first year: visit textexpander.com/podcast to learn more about TextExpander",
		"keywords": ["smile","textexpander","adobe","apple","brettterpstra","excel","happy","illustrator","indesign","microsoft","pages","spend","teams","textexpander","valentine","windows","abbreviations","airport","alone","between","brand","brettterpstra","class","codes","company","coworkers","devices","doing","edited","editor","email","entire","everywhere","favorite","fingers","first","freelancers","groups","height","https","iphone","image","inefficient","instantly","learn","loading","makes","media","names","nofollow","noscript","offers","original","paste","phrases","picture","podcast","productive","putting","readers","recruiters","rsquo","share","short","snippet","snippets","source","sponsoring","srcset","strong","taking","textexpander","thanks","title","track","typing","updates","uploads","visit","website","width","words","works"]
	},{
		"title": "On blogging, ethics, and thin skin",
		"url": "/2019/02/13/on-blogging-ethics-and-thin-skin/",
		"tags": ["blogging","comments","personal","writing"],
		"date": "Feb 13<span>th</span>, 2019",
		"ts": "1550082660",
		"summary": "I&rsquo;ve written for a variety of publications over my career. TUAW, Macworld, MacStories, and Lifehacker, to name a few. The vast majority of my writing happens right here in my own little world, though. On my personal blog(s), I&rsquo;ve had the opportunity to build an audience that&rsquo;s here just for me. My regular readers know me, my sense of humor, and my style of writing. Hopefully you trust me, because I&rsquo;ve worked hard for that. Even when my readers can&rsquo;t see it, I blog with a code of ethics that I internalized early on. I don&rsquo;t take money for reviews, I clearly state when posts are sponsored, if I use a review code or accept a review unit for a product and continue using it, I purchase it. I&rsquo;m open and honest, often vulnerable, and am generally rewarded for it. It&rsquo;s a pleasure writing for all of you. When you write on bigger sites, you usually become just one of many bylines. In most cases, you don&rsquo;t have the wiggle room afforded by reputation, and there are typically more eyeballs on everything you write. Basic math says that means more rude people, as small a segment as they may be. The comments are often unforgiving. My first post that wasn&rsquo;t on my own blog was on TUAW (The Unofficial Apple Weblog) back in the early 2000s. It got an irate comment. I think it was over a grammatical error that led a commenter to declare that I was an \"idiot who shouldn&rsquo;t be allowed to write\" for a large publication. It hit me hard; I lost a bit of sleep over that one. So I developed much thicker skin over the years. I learned that in the din of the larger blogs people have outsized reactions because they don&rsquo;t think anyone notices a rational one. And the people who leave scathing personal attacks in comments are people who really want to be noticed. These days I can take a correction and say thank you, even if it&rsquo;s presented as a personal attack. I can handle someone who disagrees, no matter how vociferously they feel the need to state it. There&rsquo;s one type of comment that still gets me though: one that impugns my integrity. I got a comment on one of the bigger blogs recently that accused me &mdash; in an irate and self-righteous tone &mdash; of writing a paid advertisement for an app I was reviewing. If you read my posts here, you know that I don&rsquo;t write negative reviews. If I don&rsquo;t like something, I generally ignore it, preferring to focus my writing energy on things I&hellip;",
		"keywords": ["comments","criticism","apple","basic","bloggers","hopefully","instagramming","lastly","lifehacker","macstories","macworld","people","reader","stick","tinder","unofficial","weblog","accept","accusation","accused","advertisement","agree","allowed","anyone","appendix","approach","assholes","attack","attacks","audience","audiences","because","behavior","bigger","bloggers","blogging","bloggingethics","blogs","brettterpstra","build","bylines","career","changes","chest","class","clearly","comment","commenter","commenters","comments","continue","correction","criticism","declare","developed","disagrees","doesn","emotionally","energy","error","ethical","ethics","everything","everywhere","exposure","express","eyeballs","fickle","first","focus","generally","going","grammatical","handle","hands","happens","height","honest","https","humor","idiot","ignore","image","impugns","inevitable","influencers","influencing","integrity","internalized","irate","kindly","larger","ldquo","learn","learned","leave","listening","little","loading","loudest","mdash","media","misstep","money","mostly","motivation","negative","noscript","noticed","notices","offensive","offering","often","original","outsized","overt","people","person","personal","picture","point","points","posts","preferring","prepared","presented","product","profiles","prove","publication","publications","rational","rdquo","reactions","readers","recently","regular","reiterating","remember","reputation","required","reviewing","reviews","rewarded","right","righteous","risks","rsquo","scathing","segment","sense","shouldn","significantly","simply","sites","sleep","small","sometimes","source","speaks","sponsored","srcset","stated","statement","style","summarize","thank","thick","thicker","think","title","trashed","truly","typically","under","understand","unforgiving","unfortunately","uploads","urging","using","usually","variety","vital","vociferously","vulnerable","whole","width","wiggle","women","worked","world","worse","worthwhile","write","writing","written","years"]
	},{
		"title": "Web Excursions for February 12, 2019",
		"url": "/2019/02/12/web-excursions-for-february-12-2019/",
		"tags": ["bookmarks","macos"],
		"date": "Feb 12<span>th</span>, 2019",
		"ts": "1549990140",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. A wide variety of topics this week. I wouldn&rsquo;t say \"scattered,\" just not thematic. Ok, a little scattered&hellip; Late to the Mac Daniel Jalkut is a popular fellow in the Mac coding community, and a bit of a personal hero to me. I enjoyed his backstory, originally written for the 512 Pixels members-only newsletter. myNoise on the App Store This is a great sound generator for work or sleep. Use sliders to set tone levels and then turn on the automation to have it shift over time for random soundtracks to fit your mood. Nicely done with web, Mac, and Windows versions as well. Carbonize for Mac Carbonize, now available as a native Mac app, generates great-looking images from your code snippets, perfect for presentations. Debugging React Like a Champ with VSCode The debugger in VS Code is outstanding, and capabilities like this are what keep me going back to trying it. ‎Visualist I haven&rsquo;t had a chance to test this out yet, but I love the idea of it and look forward to the excuse to try it. It&rsquo;s a lot like Clarify was on the Mac, allowing you to turn images into step-by-step instructions quickly and easily. I have high hopes",
		"keywords": ["daniel","jalkut","mynoise","vscode","carbonize","champ","check","clarify","daniel","debugging","jalkut","nicely","noisemachines","pixels","react","setapp","store","vscode","visualist","windows","access","allowing","apple","automation","available","backstory","bitsplitting","brettterpstra","brought","capabilities","carbonize","champ","chance","clarify","class","coding","community","dangercove","debugger","debugging","easily","enjoyed","excursions","excuse","fellow","generates","generator","going","great","hackernoon","haven","height","hellip","hopes","https","hundreds","image","images","impossible","instructions","itunes","ldquo","levels","little","loading","looking","media","members","membership","misunderstand","monthly","mynoise","mynoise","native","newsletter","noscript","original","originally","partnership","personal","picture","pixels","popular","presentations","quickly","random","rdquo","react","rsquo","scattered","setapp","shift","sleep","sleepingdragontonegenerator","sliders","snippets","sound","soundtracks","source","srcset","subscription","thematic","title","today","topics","trying","uploads","variety","versions","visualist","vscode","width","wouldn","written"]
	},{
		"title": "Hook: connect everything",
		"url": "/2019/02/08/hook-connect-everything/",
		"tags": ["appreview","hookmark","macos","productivity"],
		"date": "Feb 8<span>th</span>, 2019",
		"ts": "1549654560",
		"summary": "I&rsquo;m really excited about Hook, the latest app from Luc Beaudoin (creator of MySleepButton). It makes it possible to link together documents, photos, notes, todo items, web pages and more. Instant access to every part of the project you&rsquo;re working on from any file in that project. I wrote more about it over at Lifehacker, so I&rsquo;ll point you there for more",
		"keywords": ["beaudoin","cognitive","productivity","beaudoin","instant","lifehacker","mysleepbutton","access","creator","documents","excited","items","latest","makes","notes","pages","photos","point","possible","project","rsquo","together","working","wrote"]
	},{
		"title": "Retrobatch: node-based image processing",
		"url": "/2019/02/06/retrobatch-node-based-image-processing/",
		"tags": ["appreview","design","macos","photography"],
		"date": "Feb 6<span>th</span>, 2019",
		"ts": "1549468800",
		"summary": "I mentioned Retrobatch a while back when it first went into public beta. After using it for a while now, I wanted to let you know that it&rsquo;s worth grabbing and getting into. I&rsquo;m pretty sure that if you&rsquo;re one of the people it&rsquo;s designed for, you&rsquo;ll be happy to pay for it. Retrobatch is a node-based image processor from Flying Meat, the creator of the acclaimed image editing app Acorn. It makes it easy to automate multi-step image processing, including scaling, resizing, cropping, converting, watermarking, metadata, and even things like color adjustment and PSD layer generation. You drag the steps together in a sequence on your workspace and save the result to run on any number of images at once. I&rsquo;ll note that the interface can get a bit frustrating when you get too many nodes in an area and the auto-connecting lines start misbehaving. I think that this is an area that will improve over the next few releases. Be sure to give yourself plenty of space to add in new node paths as you work. Beyond that, working in Retrobatch is quite pleasurable. Update: I stupidly missed that you can turn off auto-snapping entirely in Preferences and draw connections with a CTRL-drag. That completely solves the above issue for me. Forget I said anything, unless you also missed that and have the same problem in which case, you&rsquo;re welcome. As one example, I use Retrobatch to prepare my header images from this blog to be used in various social media sharing platforms. I start with a template for the header design with markers showing me where square images will crop, the sizes I&rsquo;ll need to match for Facebook open graph images, etc. Once I&rsquo;ve finished designing in the template, I output a single JPEG or PNG file and run it through my \"OpenGraph\" Retrobatch sequence: I won&rsquo;t share the template and Retrobatch file here as it&rsquo;s pretty specific to my needs, but I&rsquo;d be more than happy to offer them as examples to anyone who asks. Like I said, if the above example reminds you of any image processing you do on a regular basis, you should definitely check out Retrobatch. It won&rsquo;t take long to see all of the possibilities it offers! Retrobatch has a standard version for $29.99 US, and a Pro version for $49.99",
		"keywords": ["acorn","flying","image","processing","retrobatch","acorn","beyond","create","facebook","flying","forget","imageoptim","opengraph","preferences","process","retrobatch","twitter","above","acclaimed","anyone","automate","based","basis","cards","check","color","completely","connecting","connections","converting","creator","cropping","definitely","design","designed","designing","editing","entirely","example","examples","finished","first","frustrating","generation","getting","grabbing","graph","happy","header","image","images","improve","including","interface","layer","makes","markers","match","media","mentioned","metadata","misbehaving","missed","multi","needs","nodes","offer","offers","output","paths","people","platforms","pleasurable","plenty","possibilities","prepare","problem","processing","processor","public","regular","releases","reminds","resize","resizing","rsquo","scaling","sequence","share","sharing","showing","single","sizes","snapping","social","solves","space","specific","square","standard","steps","stupidly","template","think","through","together","using","various","version","versions","wanted","watermarking","welcome","where","while","working","workspace","worth"]
	},{
		"title": "The addictive hobby of customizing mechanical keyboards",
		"url": "/2019/02/05/the-addictive-hobby-of-customizing-mechanical-keyboards/",
		"tags": ["keyboard"],
		"date": "Feb 5<span>th</span>, 2019",
		"ts": "1549390260",
		"summary": "Since that one time that I wrote a review of the Ultimate Hacking Keyboard for you nerds, I&rsquo;ve only come to love my UHK more. I&rsquo;m officially a mechanical keyboard guy at this point. Much like the right band can ease me into a whole genre of music I hadn&rsquo;t previously appreciated, it&rsquo;s turned me on to all kinds of mechanical keyboards and related pursuits I just couldn&rsquo;t get into before. I love my UHK enough that I decided to show it some custom keycap love. I had a custom set of translucent black, side-printed keys that I&rsquo;d picked up from Massdrop for my Ergodox keyboard. So I swapped those in. I had a set of red keys for &mdash; I don&rsquo;t remember what, and replaced the IJKL keys (which are arrow keys on my UHK) and the Caps Lock key (my Hyper key) for fun. But those weren&rsquo;t side printed and the font was ugly. And so began the journey. I went through a few vendors before I got to Max Keyboard. Turns out it was the same company that provided my original set of side-printed caps from that Massdrop drop. They offer a custom keycap set with a little picker where you can customize the plastic and printed text color of every key and get the whole set in the mail for $40 (or $20 for blank keycaps). For many keyboards this would be enough for a great custom keycap set, but among the problems I ran into was that the UHK has a unique layout for modifiers on the right. The Return, Shift, and Control (as well as Backspace) on the right side are all non-standard widths, so the custom key set didn&rsquo;t give me full coverage. Because I&rsquo;d messed up with purple text on carbon grey keys for the bottom modifier row, which turned out to be unreadable, I just ordered a second set with new colors on everything but the left modifiers, which covered my right shift key and gave me a few more options for the rest of the keys. Even then, I needed an extra function key, a non-standard-width pipe key, and a few other anomalies. With great hope I entered those requirements in the comment box of my order and, lo and behold, they accommodated every request at no extra charge. In the same order I discovered that you can also order single keys with custom artwork side or top printed on any color keycap. I used that to get my own Return symbol on a purple key, and am eagerly awaiting shipment of my custom Backspace key and a Hyper key with a rocket ship symbol. I&rsquo;m sure you&rsquo;ll see pictures of those on Twitter or&hellip;",
		"keywords": ["custom","keyboard","keycaps","pimoroni","anyway","arduino","backspace","because","bettertouchtool","control","ergodox","hacking","hyper","instagram","keyboard","keyboards","keybow","massdrop","maxkeyboardheader","mechanicalkeyboards","pimoroni","raspberry","return","shift","since","space","turns","twitter","ultimate","unfortunately","zkauloawdqvo","accommodated","actions","allow","alternate","among","angle","anomalies","another","apparently","appreciated","arrow","artwork","aside","assign","awaiting","awesome","backlink","beast","before","began","behold","black","blank","bottom","brettterpstra","carbon","chain","change","charge","chart","check","cherry","class","codes","color","colors","columns","combining","comment","company","config","couldn","coverage","covered","custom","customize","customized","customizing","customkeys","customuhk","cycling","decided","discovered","double","eagerly","easiest","elsewhere","endnotes","enough","entered","everything","extra","files","first","fnref","folivora","folks","footnote","footnotes","found","function","functions","genre","going","great","hacking","happy","hardcore","having","height","hellip","highly","https","image","instagram","journey","keyboard","keyboards","keybow","keycap","keycaps","kinds","launches","layout","leads","level","light","little","loading","making","manually","maxkeyboard","maybe","mdash","mechanical","media","messed","micro","modifier","modifiers","multiple","music","needed","needs","nerds","nerdy","noscript","noteref","offer","officially","options","ordered","orders","original","overly","paragraph","performs","picked","picker","picture","pictures","pimoroni","pixel","plastic","point","press","previously","printed","problems","products","program","project","pullquote","purple","pursuits","recommend","reddit","referral","related","remember","replaced","representing","response","reversefootnote","right","rocket","rsquo","running","screwdriver","second","sending","sequence","sequences","service","shift","shipment","shortcuts","single","solderless","source","spudger","srcset","standard"]
	},{
		"title": "Brainstorming: how I start a project",
		"url": "/2019/02/04/brainstorming-how-i-start-a-project/",
		"tags": ["answered","brainstorming","developer","icons","macos","marked","mindmapping","productivity","solutions","training"],
		"date": "Feb 4<span>th</span>, 2019",
		"ts": "1549296000",
		"summary": "I think brainstorming is one of my favorite activities. While some of my brainstorming leads to making cool things, I have piles of mind maps for ideas I&rsquo;ve never started working on, probably never will, and that doesn&rsquo;t bother me at all. I enjoy the process, and I love having the trove of inspiration. I use mind maps for planning out writing projects, making decisions, even sharing ideas. I once submitted a mind map instead of the requested \"time boxing\" when I worked a corporate job and it ended up being sent up the chain and I received compliments from the top on the \"ingenious presentation.\" But what I most often find myself mind mapping is ideas for software or other projects I want to tackle. I&rsquo;m not a project manager by any stretch of the imagination. I do have a working system for brainstorming, though, and I&rsquo;m happy to share it with you. What follows isn&rsquo;t a professional study on brainstorming, it&rsquo;s simply the method that has arisen from a couple decades of doing this. It&rsquo;s a starting point for all of my brainstorms. Every project has its own needs and the framework adjusts based on the context, but it always starts with the same basics. I prefer brainstorming in a mind map because the process is not at all sequential for me, and the way I develop a mind map works with that. I might be thinking about a feature I&rsquo;d like for an app, but at the same time pondering questions I have about an implementation of something else entirely. With a mind map I can start pouring those thoughts out in any order, organizing them on the fly, and constantly freeing up more space for new ideas. A lot of times a finer point or possible solution to an earlier thought comes up while I&rsquo;m brainstorming an ostensibly separate part of the project, and a mind map makes it easy to drop it where it needs to go. I&rsquo;ll mention my favorite apps for mind mapping before I get rolling. The app I use most often is iThoughtsX , available on Mac and iOS. iThoughtsX offers all of the things I like: great keyboard navigation, map balancing an auto-coloring, images, icons, notes, task management, search and filter, presentation mode, great Markdown export, and easy integration with Marked 2 (among many other features). On iOS you&rsquo;ll find it in the App Store , and on Mac you can find it available for direct purchase from toketaWare as well as through Setapp (in addition to the Mac App Store ). MindMeister is my&hellip;",
		"keywords": ["ithoughtsx","mindmeister","mindnode","barriers","filling","ideas","knowing","markdown","marked","meisterlabs","meistertask","mindmeister","mindnode","omnifocus","problem","projects","questions","reviewing","sections","setapp","sometimes","store","system","think","tools","using","while","action","activities","added","adding","adjusts","among","answer","answered","appreciation","arisen","arrow","aside","attributes","attribution","available","balancing","barrier","barriers","based","basics","because","becomes","before","biggest","board","bother","boxing","brainstorm","brainstorming","brainstorms","brief","calling","capabilities","central","chain","checkmark","child","choose","collaborating","collaboration","collected","coloring","comes","coming","companion","comparing","compendium","competition","completed","complications","compliments","confident","consider","constantly","contain","contender","context","continually","continues","convert","coolest","corporate","couple","crazy","create","decades","decision","decisions","delight","dependent","describes","description","destination","detail","details","develop","direct","doesn","doing","doling","earlier","easier","easiest","easily","either","ended","enjoy","entirely","everything","exist","expand","expanded","export","failed","favorite","feasible","feature","featured","features","filled","filter","finer","first","flags","follows","framework","freeing","general","generally","going","great","green","happens","happy","haven","haves","having","history","hunger","ithoughtsx","icons","ideas","images","imagination","implementation","individual","inevitably","ingenious","inspiration","integration","issues","items","kanban","keyboard","label","labels","later","leading","leads","learn","legal","level","likely","links","major","makes","making","management","manager","mapping","marked","master","mdash","mention","method","modes","multi","myself","navigation","needs","nodes","notes","obsolete","obvious","offers","often","optional","options","organizing","origin","original","ostensibly","outline","overarching","parts","people"]
	},{
		"title": "Web Excursions for January 30, 2019",
		"url": "/2019/01/30/web-excursions-for-january-30-2019/",
		"tags": ["bookmarks"],
		"date": "Jan 30<span>th</span>, 2019",
		"ts": "1548861180",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Temi - Audio to Text Transcription Service Not the most affordable audio transcription service (10&cent;/min), but well-reviewed and very solid in my testing. There&rsquo;s also an iOS app for recording meetings and lectures and getting timestamped transcripts within 10 minutes. Reader View Basically a clone of Safari&rsquo;s Reader View for Chrome. Works really well. Tip: you can select some text on the page before opening it to specify exactly what area to use, just in case the site&rsquo;s design isn&rsquo;t conducive to stripping out ads and other clutter. Parsers An interesting Chrome extension that lets you create web scrapers with point and click to specify components of a page, then download results as a CSV after scraping multiple pages. Use it on 10 pages without signup, 1000 with registration, and even more with the premium plan. Why cold weather doesn&rsquo;t mean climate change is fake Hopefully the majority of my readers can read the headline and not need further explanation, but just in case… my current temp of -49°F here in Minnesota does not negate the undeniable trend of global temperature rise. In fact, they&rsquo;re probably closely related. WeCroak Memento Mori. This iOS app sends you notifications reminding you that eventually you&rsquo;re going to die, and then offers you a random quote on death (and/or life, as the two are fairly entwined). My dark sense of humor and I find this delightful",
		"keywords": ["humor","scraper","transcription","audio","chrome","cleanmymac","hopefully","memento","minnesota","parsers","reader","safari","service","transcription","wecroak","works","absolute","affordable","apple","audio","before","border","brettterpstra","brought","change","chrome","class","click","climate","clone","closely","clutter","colder","components","conducive","create","death","delightful","design","detail","display","doesn","download","ecabifbgmdmgdllomnfinbmaellmclnh","entwined","environment","eventually","excursions","explanation","extension","fairly","getting","global","going","google","headline","height","hidden","https","humor","image","impactradius","interesting","itunes","lectures","loading","macpaw","media","meetings","minutes","multiple","nationalgeographic","negate","noscript","notifications","offers","opening","original","pages","parsers","partnership","picture","point","polar","position","premium","quote","random","reader","readers","recording","registration","related","reminding","results","reviewed","rsquo","scrapers","scraping","sends","sense","service","signup","solid","source","specify","speed","srcset","stripping","style","temperature","testing","timestamped","title","tools","transcription","transcripts","trend","undeniable","uploads","visibility","vortex","warming","weather","webstore","wecroak","width","winters","within"]
	},{
		"title": "Save time with Chrome custom search engines",
		"url": "/2019/01/29/save-time-with-chrome-custom-search-engines/",
		"tags": ["browser","chrome","productivity","search","webdesign"],
		"date": "Jan 29<span>th</span>, 2019",
		"ts": "1548783540",
		"summary": "While Firefox has made very impressive strides, I still use Chrome as my primary browser. It&rsquo;s due in no small part to the Workona extension, but that&rsquo;s beside the point of this post. I wanted to talk about one of my favorite little productivity tips for Chrome that doesn&rsquo;t require any extensions or hacks. Custom search engines allow you to type an abbreviation, hit tab, then type a query to jump straight to the search results on just about any site that has a search tool (so just about any site). Here&rsquo;s a step-by-step for adding a time-saving search. As an example, I&rsquo;ll show how to add a search for instantly finding the best literary quotes about a topic using the GoodReads quote search. Start by going to the site you&rsquo;d like to get the results from and running a search (any search). Copy the URL that&rsquo;s generated after the results are shown. Save that. It will look like: Open Chrome preferences (use ⌘-comma like an adult). Scroll down to the Search Engine section and click on Manage Search Engines. You&rsquo;ll notice that Chrome has already saved a lot of searches you&rsquo;ve run in the past. You can click the dots on the right side of any of these to edit the keyword to something short and access your previously-used searches conveniently. To add your own custom search, click the Add button next to the Other search engines header. Give your search a title (this will show up in the toolbar as \"Search in title\"). In this case I used \"GoodReads Quotes.\" Choose the keyword that you&rsquo;ll type to initiate the search. I used \"quote.\" Now paste in the search url you copied in step 1, and change the portion of it that contains the search you ran originally to . That will be replaced with the text you enter in the URL bar at the time you call the custom search engine. In this case: Now when you jump to the URL bar (again, use Cmd-L instead of clicking like an animal), you can just type \"quote authoritarian\" to search for quotes from your favorite writers. “A reliable way to make people believe in falsehoods is frequent repetition, because familiarity is not easily distinguished from truth. Authoritarian institutions and marketers have always known this fact.” &mdash; Daniel Kahneman, Thinking, Fast and Slow I use the Adobe Stock Photos site quite a bit, so I created a custom search for to run those quickly. As I mentiond, I freqently use to&hellip;",
		"keywords": ["chrome","google","custom","engines","search","adobe","authoritarian","choose","chrome","custom","daniel","duckduckgo","engine","engines","epoch","ffffff","firefox","goodreads","google","kahneman","macstories","marked","notes","photos","quotes","scroll","search","setting","stock","thinking","while","workona","abbreviation","access","adding","addsearchengine","adobe","adult","again","allow","animal","animated","authoritarian","automatically","backspace","because","believe","below","beside","blockquote","brettterpstra","browser","browsers","bunch","button","cancel","caption","change","class","click","clicking","comma","comments","commit","contains","conveniently","converter","copied","create","created","custom","customsearch","customsearchheader","death","default","details","distinguished","doesn","duckduckgo","easily","editsearchengine","engine","engines","enter","epoch","epochconverter","example","executes","extension","extensions","extra","falsehoods","familiarity","favorite","figure","finding","forums","frame","freqently","frequent","generated","going","goodreads","hacks","header","height","hellip","highlight","highlighter","https","image","impressive","instantly","institutions","keyword","keywords","language","ldquo","literary","little","loading","macstories","managesearchengines","marked","markedapp","marketers","mdash","meant","media","mentiond","noscript","notes","online","original","originally","paste","people","picture","plaintext","point","portion","posts","preferences","previously","primary","productivity","query","quickly","quote","quotes","rdquo","recommend","reliable","repetition","replaced","restore","results","right","rouge","rsquo","running","saved","saving","search","searchbar","searches","section","setting","settings","short","shown","simple","sites","small","sorted","source","space","specific","srcset","stock","straight","strides","strong","support","tabindex","title","toolbar","topic","truth","ttscoff","typed","typing","uploads","using","wanted","welcome","width","workona","writers"]
	},{
		"title": "Web Excursions for January 22, 2019",
		"url": "/2019/01/22/web-excursions-for-january-22-2019/",
		"tags": ["bookmarks","webdesign"],
		"date": "Jan 22<span>nd</span>, 2019",
		"ts": "1548171060",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. We&rsquo;ll call this the \"A\" edition. It wasn&rsquo;t intentional, but everything seems to start with the letter A with the exception of the first one, which arguably could be filed under Analytics&hellip; Minimal Google Analytics Snippet While this site has moved entirely from GA to Fathom, this is a great tool for those who want to include Google Analytics without importing the full library. Works with React and Vue.js. Autumn - macOS window manager for JavaScript hackers An amazingly slick, hackable window manager with a full JavaScript API and built-in IDE. If you&rsquo;re familiar with Hammerspoon, think of this as a polished GUI alternative with all the built-in tools you&rsquo;d need to hack elegantly (in JavaScript instead of Lua). I&rsquo;m having a few issues with responsiveness in the demo, but I&rsquo;m excited about the possibilities. Amber: fake video solved. The future of video fakes (aka deepfakes) is terrifying. A verification and authentication system is going to be more and more essential as we move forward. Amber makes a good stab at solving the challenge. Anupya/dadjoke-cli It&rsquo;s a CLI for dad jokes. I have nothing more to add, other than this is going to be a login function for me now. My new . anime.js - JavaScript animation engine A really nice library and complete API for JavaScript/CSS animations. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["analytics","animation","javascript","macos","manager","window","amber","analytics","anupya","autumn","backblaze","check","fathom","google","hammerspoon","javascript","minimal","react","snippet","while","works","affordably","amazingly","animation","animations","anime","arguably","authentication","backs","brought","built","challenge","cloud","computer","dadjoke","deepfakes","edition","elegantly","engine","entire","entirely","essential","everything","exception","excited","excursions","fakes","familiar","filed","first","function","going","great","hackable","hackers","having","hellip","importing","intentional","issues","jokes","letter","library","login","macos","makes","manager","moved","nothing","partnership","polished","possibilities","reliably","responsiveness","rsquo","securely","seems","slick","solved","solving","system","terrifying","think","today","tools","under","verification","video","window"]
	},{
		"title": "You won't believe what Marked 2 will do to its status bar and 11 bugfixes that will clickbait SEO headline",
		"url": "/2019/01/16/marked-2-dot-5-dot-30/",
		"tags": ["markdown","marked","status","writing"],
		"date": "Jan 16<span>th</span>, 2019",
		"ts": "1547657580",
		"summary": "Oh good, that headline worked as planned. I used an odd number as recommended by clickbait experts, and you clicked. The system works. No, this post does not contain a quiz that will tell you what species of dolphin is your spirit animal, but it does contain news of 11 bugfixes and the status bar thing is pretty cool, so it was more hyperbolic than dishonest. Anyway, the latest version of Marked 2 (2.5.30) is available on all channels now (Mac App Store, direct, and Setapp). I&rsquo;ve been holding off posting about it until the MAS review finished, and I&rsquo;m pleased to announce that after 3 weeks, it finally has. One of the new features in this release is the ability to hide the status bar. This works in both windowed and full screen modes. Use Preview->Show Status Bar to toggle it on and off (or use the shortcut Ctrl-/). When hidden, hovering over the lower part of the screen will reveal it and allow clicking on any of its buttons. This feature has been repeatedly requested over the years, and while not one that I considered high priority, I found an easy way to pull it off and decided, why not? I&rsquo;ve also added a URL handler method for \"defaults\". This allows the user to create urls that will toggle preferences. It&rsquo;s not a front-facing feature or one that will be useful to most people, but it will allow me to create URLs in the help system that toggle existing preferences and possibly some future esoteric preferences that might not be part of the Preferences interface. This was inspired by some other apps, including Curio. The URL handler also opens up some scripting possibilities that Marked&rsquo;s current lack of AppleScript support makes inaccessible. Switching the processor from MultiMarkdown to GFM, for example, can be done with a URL call to , or switch syntax highlighting and MathJax off with one call to . More to come. There was this long-running glitch where turning the custom processors on and off using the indicator lights in the status bar of the preview required multiple clicks to get it to stick. That&rsquo;s fixed. Finally. If you work with Markdown and haven&rsquo;t picked up Marked 2 yet, now&rsquo;s a great time. I mean, you&rsquo;re late to the party, but we&rsquo;ve been waiting patiently for you. I even have a coupon for you so we can get the party started: will get you 20% off the direct sale version. Grab the Marked 2.5.30 update via the Mac App Store, Setapp, or the automatic updater in the direct&hellip;",
		"keywords": ["handler","marked","store","anyway","applescript","check","chromeless","crash","criticmarkup","curio","custom","finally","fixed","github","handler","hardened","imfriendswithttscoff","issues","markdown","marked","mathjax","mojave","multimarkdown","preferences","preview","print","regex","setapp","status","store","switching","updates","ability","added","alert","allow","allows","animal","animated","announce","annoyance","automatic","available","banner","blank","blocks","brettterpstra","bugfixes","buttons","caption","changelog","channels","checkout","chromeless","class","click","clickbait","clicked","clicking","clicks","comment","considered","contain","content","continuous","coupon","create","custom","decided","decoded","defaults","direct","discount","dishonest","dolphin","element","entities","esoteric","example","experts","export","exporting","facing","feature","features","fenced","figure","finally","finished","first","fixed","forget","found","frame","front","glitch","great","handler","haven","having","headline","height","hidden","highlighter","highlighting","highlights","holding","hover","hovering","https","hyperbolic","image","inaccessible","includemathjax","including","indicator","inside","inspired","interface","issues","language","latest","ldquo","lights","loading","lower","makes","marked","markedicon","markedstatusbar","media","method","missing","modes","multiple","noscript","opens","original","paddle","party","patiently","people","picked","picture","plaintext","planned","pleased","possibilities","possibly","posting","preferences","preview","priority","processor","processors","query","rdquo","recommended","release","rendering","repeatedly","required","reveal","rouge","rsquo","running","runtime","screen","scripting","search","setting","shortcut","slashes","source","space","species","spirit","srcset","started","status","stick","style","support","surrounding","switch","syntax","syntaxhighlight","system","tabindex","title","toggle","toggling","turning","unreadable","updater","uploads","useful","using","version","waiting","weeks","where","while"]
	},{
		"title": "Stuff I've made (and actually use)",
		"url": "/2019/01/15/stuff-ive-made-and-actually-use/",
		"tags": ["editor","markdown","marked","nvalt","personal","productivity","scripting","search","searchlink","service","shell","shortcuts","sublimetext","terminal","textexpander","tools","where","writing","xcode"],
		"date": "Jan 15<span>th</span>, 2019",
		"ts": "1547564100",
		"summary": "I&rsquo;ve published over 100 projects over the years. In posts here, as projects, on GitHub, sometimes just zip files to Twitter. A lot of them I create out of curiosity, then let them go. I want to take a quick stock of the other kind, projects that filled a need so well for me that I not only maintain them, I use them daily. While I&rsquo;m looking to satisfy my own curiosity, I&rsquo;ll just go ahead and highlight some of them. This is definitely not a \"Best of 2018\" list. These projects are almost all older than last year, though almost all of them saw updates over the course of the year. Out of all of my projects, only a few of them are full-fledged apps. This section is going to list my favorites of those (and likely the only ones that have survived multiple OS versions), as well as my more fleshed-out Services (a.k.a. Quick Actions, these days). Marked 2 Marked isn&rsquo;t just my favorite app to work on these days, it&rsquo;s my favorite tool to use when I&rsquo;m writing Markdown of any kind. But you probably knew that. SearchLink SearchLink is my favorite Service. It makes creating web links while you&rsquo;re writing as simple as hitting a keyboard shortcut. No jumping to the browser, searching, copying, and jumping back. I seriously wouldn&rsquo;t want to write without it. nvALT You probably know this one. While I struggle to get a replacement off the ground, I&rsquo;ve kept nvALT running on the latest operating systems (and will for the foreseeable future). I don&rsquo;t know where I&rsquo;d be without it. MarkdownEditing While I turned over development of this Sublime Text package for Markdown writing, this was originally my project and I still use it every day. I&rsquo;m using it (and SearchLink, Marked, and nvALT) right now as I write this. Marky Marky the Markdownifier isn&rsquo;t perfect. There&rsquo;s a lot I&rsquo;d like to fix on it. But 90% of the time it makes it a simple task to turn web articles into Markdown, whether I just want to make things more readable in the browser or archive them in a text format. TextExpander Tools I&rsquo;ve built a lot of TextExpander snippets over the years. I use TextExpander literally every time I type a sentence, and some of my favorites from my more complex snippets are available here. Markdown Service Tools The cleverly named collection of macOS Services for writing Markdown. From adding bold and emphasis to gathering a Markdown list of all your Safari/Chrome&hellip;",
		"keywords": ["alias","script","shell","acorn","actions","because","chrome","composer","doing","github","imagealpha","keybindings","markdown","markdownediting","markdownifier","marked","marky","multi","multimarkdown","quick","safari","searchlink","service","services","shortcuts","sublime","taskpaper","terminal","textexpander","together","tools","twitter","where","while","working","xcode","access","adding","agnostic","ahead","alias","aliases","allows","almost","anymore","archive","articles","automatically","available","bindings","browser","built","bunch","catalogs","cleverly","collection","coming","command","commands","complex","config","constantly","copying","create","creating","curiosity","custom","daily","defined","definitely","depth","detect","development","distracted","doing","editing","editor","editscript","emphasis","entire","everybody","everything","exploits","fairly","favorite","favorites","files","filled","fledged","fleshed","folder","foreseeable","format","function","fuzzy","gathering","getting","going","ground","handle","handy","hardly","highlight","hitting","iterm","incorporate","interface","invoked","items","jumping","keyboard","latest","likely","links","literally","little","looking","macos","maintain","maintenance","makes","management","managers","markdown","mentioned","modifications","morphed","mostly","multiple","myself","named","newscript","notes","nvalt","often","older","opens","operating","originally","package","picking","playgrounds","posts","press","priority","project","projects","proves","published","quick","quickly","readable","ready","reiki","relevant","remembering","repeats","replacement","return","right","rsquo","running","satisfy","screens","scripts","search","searching","section","sentence","series","seriously","services","shell","shells","short","shortcut","shortcuts","simple","simpler","snippets","sometimes","sourced","specific","spend","starting","stock","struggle","stuff","survived","syntax","system","systems","tangential","todos","tools","track","tracking","transparently","trick","tricks","turned","updates","useful"]
	},{
		"title": "Web Excursions for January 14, 2019",
		"url": "/2019/01/14/web-excursions-for-january-14-2019/",
		"tags": ["bookmarks","tools"],
		"date": "Jan 14<span>th</span>, 2019",
		"ts": "1547474400",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. How to make a Raspberry Pi AirPlay Receiver Handy tutorial for converting a Raspberry Pi into an Airplay receiver. It can&rsquo;t handle Airplay 2 (yet) but this is a nice way to add your favorite speakers to your wireless setup without a now-extinct Airport Express. btrekkie/WrapAsYouType: Sublime Text plugin This little Sublime plugin takes some setup, but its functionality is really handy: automatically hard wrapping lines as you type in things like comment blocks, continuing comment markers as needed. Simple enough, but I love this one. dPage - Publish Web Pages on the Decentralized Internet If you&rsquo;re interested in exploring and building a presence on Blockstack, the decentralized internet, here&rsquo;s a great tool for publishing. Page Tools A handy Chrome extension for developers that lets you add your own scripts and tools to the web inspector. Need a button to automate adding a list of items to the DOM? This&rsquo;ll do it. remove.bg This is a surprisingly effective free web app (with API) for removing backgrounds from images. Does an outstanding job with hair, the bane of manual background removal",
		"keywords": ["airplay","airplay","airport","blockstack","check","chrome","decentralized","express","handy","internet","pages","publish","raspberry","receiver","setapp","simple","sublime","tools","wrapasyoutype","access","adding","automate","automatically","background","backgrounds","blocks","brought","btrekkie","building","button","comment","continuing","converting","dpage","decentralized","developers","effective","enough","excursions","exploring","extension","extinct","favorite","functionality","great","handle","handy","hundreds","images","inspector","interested","internet","items","little","manual","markers","monthly","needed","partnership","plugin","presence","publishing","receiver","removal","remove","removing","rsquo","scripts","setup","speakers","subscription","surprisingly","takes","today","tools","tutorial","wireless","wrapping"]
	},{
		"title": "PDFpen: Get the ultimate tool for editing PDFs",
		"url": "/2019/01/10/pdfpen-get-the-ultimate-tool-for-editing-pdfs/",
		"tags": ["sponsor"],
		"date": "Jan 10<span>th</span>, 2019",
		"ts": "1547121600",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! Go paperless with scanning and OCR Markup and highlight PDFs Search and redact sensitive info, such as account numbers Correct text in PDFs without the originals Insert, remove, and re-order pages Move and adjust images Record and playback audio annotations Or, grab PDFpenPro to do even more, such as",
		"keywords": ["brettterpstra","contents","convert","create","learn","markup","pdfpen","pdfpenpro","record","search","table","thanks","using","account","adjust","annotations","audio","automatically","document","editing","fillable","forms","highlight","images","numbers","originals","pages","paperless","permissions","playback","redact","remove","scanning","sensitive","sponsoring","ultimate","websites"]
	},{
		"title": "Brett's Favorites 2018",
		"url": "/2019/01/03/bretts-favorites-2018/",
		"tags": ["design","keyboard","setapp","solutions","support"],
		"date": "Jan 3<span>rd</span>, 2019",
		"ts": "1546534200",
		"summary": "Welcome to another year of my \"best of\" lists. I&rsquo;m throwing it all into one post this year, so the list is a little shorter than years past. I have my reasons. So here are some of my favorite apps, tools, and physical objects from 2018. My core productivity/utility set hasn&rsquo;t changed much, still consisting of ever-useful and always dependable tools like OmniFocus, TaskPaper, BetterTouchTool, PopClip, Dropzone, a bit more Keyboard Maestro than before, Bartender, TextExpander, and a few others that I already talk about all the time. A few new ones worth mentioning: Affinity Designer / Affinity Photo The design/photo editing solutions from Affinity are my favorite new software of 2018. Complete replacements for Illustrator and Photoshop, available for both desktop and iPad. CleanMyMac X CleanMyMac1 remains my favorite maintenance app for macOS. This year&rsquo;s addition of Malware detection and cleanup seals the deal for me. Setapp I realized that most of my favorite apps for 2018 were coming from Setapp, so I&rsquo;m going to save a little time and just send you there. For $10/month (with family and team plans available), there&rsquo;s just too much good stuff on Setapp to ignore it. Here&rsquo;s an incomplete list of the apps on Setapp that I use regularly: ‎Focos A powerful camera app. It hasn&rsquo;t completely replaced the default camera app for me, but when I want more control, it&rsquo;s top notch. Hydra A great app for HDR and low-light photography. Uses 60fps capture to quickly gather a range of exposures and automatically composite them. ‎Never Alone: Ki Edition on the App Store Recommended to me by David Sparks, this game is beautiful, challenging, and even informative. Excellent gameplay and graphics on any iOS device. ‎holedown I 100% blame John Voorhees for this one. I had to delete it off my phone because the Screen Time stats were horrifying. But if you&rsquo;re looking for an addictive game with excellent design and gameplay, and one you can pick up any time, this is it. There&rsquo;s a fair chance it will ruin your life. ‎TapMeasure Apple&rsquo;s Measure app is nice, but I find TapMeasure a delight to use for AR measuring. ‎magicplan And along the same lines as TapMeasure, this AR app lets you build floorplans by quickly scanning the corners of rooms and attaching them together. Want to measure the square footage of your entire house? Get this one. Medisafe This app has prevented&hellip;",
		"keywords": ["gifts","software","aeropress","affinity","alone","another","apple","bwwgde","bartender","bettertouchtool","bluetooth","brett","browser","capto","check","chrome","cleanmymac","clearmounts","clipper","coderunner","combo","compact","david","designer","diskstation","dropzone","edition","excellent","expected","fellow","firefox","flashlight","flume","focos","forecast","forklift","games","gearlight","gifox","gives","gloves","great","gruber","hacking","haircut","harbinger","headphones","holder","hopefully","hydra","iconjar","illustrator","inexpensive","infinity","keyboard","kissel","lantern","lanterns","lifting","little","mackeeper","maestro","magnet","magnetic","malware","marked","measure","medisafe","meistertask","mindmeister","miscellaneous","noteplan","online","oittm","omnifocus","oxyjw","padded","permute","phone","photo","photography","photoshop","physical","popclip","prismo","qitwjs","recommended","remington","renamer","rulers","sapykl","sfvlzb","screen","screens","series","seriously","setapp","shortcut","sleep","sparks","store","support","syxdht","synology","tracking","tactical","tapmeasure","taskpaper","teacode","terpstra","textexpander","thanks","trideer","tweezerman","typeface","ukgtkytfs","ultimate","ulysses","voorhees","watch","wedge","weight","welcome","whenever","wireless","wobble","workona","wraps","wrist","yummy","ability","addictive","aeropress","affiliate","affinity","again","aging","alone","amazing","angles","another","apple","applications","aptonic","attach","attaching","audience","audiences","automatically","available","awesome","backlink","bathroom","beard","beautiful","because","before","blade","blame","bluetooth","board","brand","bretts","brettterpstra","bright","browser","browsers","build","camera","campaign","camping","capture","carry","challenging","chance","changed","charging","class","cleanmymac","cleanup","clickid","clipper","clippers","coffeehouses","collaborative","coming","compatible","completely","composite","confused","consisting","content","control","corners","curvature","dealing","default","delight","dependable","design","designer","desktop"]
	},{
		"title": "Twenty Nineteen",
		"url": "/2019/01/02/twenty-nineteen/",
		"tags": ["blogging","health","marked","mentalhealth","overtired","personal","podcasting","support","systematic","writing"],
		"date": "Jan 2<span>nd</span>, 2019",
		"ts": "1546460040",
		"summary": "It&rsquo;s harder than you might think to find a date-based stock photo with a tone anything less than \"jubilant excitement.\" All I wanted was 2019 in a shade of \"cautious optimism,\" but no. It&rsquo;s all fireworks and sunrises. This one will have to do. Welcome to 2019. Since I&rsquo;m not doing a great job of blogging over the last month, I thought I&rsquo;d at least get a status update out. Much as Overtired often starts with the \"Mental Health Corner,\" my instinct is to let you know what&rsquo;s going on in my brain before getting to other topics. I&rsquo;ve been dealing with mental health issues more than usual lately, mostly surrounding my ADHD. The meds don&rsquo;t seem to be working for me anymore, but I&rsquo;m not convinced my focus issue isn&rsquo;t more related to depression than ADHD. To top that off, I just found out that my psychiatrist is moving on, leaving me with the terrifying options of going back to the clinic that originally stripped me of all my stimulant meds, or joining a waiting list at a different hospital with no guarantees I won&rsquo;t get the same treatment. Depressing thoughts, either way, and the fear of the outcome has kept me from making the phone calls. I&rsquo;m really bad at making phone calls to begin with. Some mental block that makes it really hard to pick up the phone. I&rsquo;m trying to convince myself that even if I lose my meds, they haven&rsquo;t been effective lately anyway. But I know very well from all-too-recent experiences that they&rsquo;re far better than nothing. I&rsquo;ve been compensating by using a full-spectrum lamp to combat SAD, exercising regularly, meditating, quitting alcohol completely, and regulating diet. Hopefully all works out well in the end. So, whatever is going on right now, be it ADHD symptoms or depression, med-related or lifestyle, I&rsquo;m finding it impossible to tackle more than one thing at once. Thus, as the work that feeds me has been priority, things like writing, blogging, podcasting, even working on new coding projects have temporarily slowed down. That in itself is a source of stress for me. I&rsquo;ve spent over a decade building up my blog readership, software customers, podcast audience, and the trust and interest of those who follow me. Ceasing content production is not something I have any interest in doing, and failing to produce leads to nagging stress about all the things I&rsquo;m not doing. Systematic has been on an unannounced hiatus for a while&hellip;",
		"keywords": ["health","mental","apple","bitwriter","brain","carrying","ceasing","corner","depressing","development","github","health","hopefully","looking","marked","mental","music","overtired","since","smile","stuff","systematic","thanks","welcome","while","ability","admit","again","alcohol","another","anymore","anyway","approach","audience","based","before","begin","block","blogging","brain","broke","building","built","bunch","burnt","calls","cancer","capabilities","cautious","chromeless","clinic","coding","combat","comes","compensating","competition","completely","constant","constantly","content","continue","continued","continues","convertible","convince","convinced","created","customer","customers","dealing","decade","decent","delight","delightful","depressing","depression","development","different","doing","ecology","effective","either","endeavors","enjoying","episode","everyone","except","excited","excitement","exciting","exercising","experiences","export","failing","favorite","featured","feeds","feminism","finding","fireworks","first","fixed","fixes","focus","found","frustrating","fulfilling","getting","girlfriend","going","great","ground","guarantees","harder","haven","having","health","hellip","hiatus","highly","hopefully","hopes","horrible","hospital","ideally","impossible","income","indentation","instinct","interest","interviews","issues","itself","joining","jubilant","launching","leads","leaving","lifestyle","little","looking","maintain","makes","making","market","marriage","meant","meditating","mental","mostly","moving","multiple","myself","nagging","nailed","nailing","needing","needs","nothing","official","often","optimism","options","originally","outcome","overall","overwhelmed","pausing","pending","people","phone","photo","plenty","podcast","podcasting","point","popped","portion","possible","potential","practice","priority","produce","production","projects","proud","psychiatrist","public","publication","quitting","readership","recent","regular","regularly","regulating","related","relationship","renewed","right","rsquo","scheduling","screen"]
	},{
		"title": "Get the most from your PDFs with PDFpen",
		"url": "/2018/12/13/get-the-most-from-your-pdfs-with-pdfpen/",
		"tags": ["sponsor"],
		"date": "Dec 13<span>th</span>, 2018",
		"ts": "1544702400",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! PDFpen is the ultimate tool for editing PDFs. The latest versions of PDFpen and PDFpenPro include support for Dark Mode on Mojave, as well as smoother scrolling, faster thumbnail drawing, and increased maximum zoom. Go paperless with scanning and OCR Markup and highlight PDFs Search and redact sensitive info, such as account numbers Correct text in PDFs without the originals Insert, remove, and re-order pages Move and adjust images Record and playback audio annotations Or, grab PDFpenPro to do even more, such as: Learn more about PDFpen and PDFpenPro at smilesoftware.com/podcast",
		"keywords": ["pdfpen","smile","brettterpstra","contents","convert","create","learn","markup","mojave","pdfpen","pdfpenpro","record","search","table","thanks","using","account","adjust","annotations","audio","automatically","document","drawing","editing","faster","fillable","forms","highlight","images","increased","latest","maximum","numbers","originals","pages","paperless","permissions","playback","podcast","redact","remove","scanning","scrolling","sensitive","smilesoftware","smoother","sponsoring","support","thumbnail","ultimate","versions","websites"]
	},{
		"title": "Web Excursions for December 06, 2018",
		"url": "/2018/12/06/web-excursions-for-december-06-2018/",
		"tags": ["bookmarks"],
		"date": "Dec 6<span>th</span>, 2018",
		"ts": "1544110140",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Wes Bos I&rsquo;d just like to point to Wes Bos and his awesome video tutorials. I&rsquo;ve been through the JavaScript 30 and am currently taking his React for Beginners course and finding it a blazingly fast way to get into and understand React. Thanks Wes! Keep a Changelog What, why, and best practices for maintaining changelogs. It&rsquo;s geared toward open source projects, but these are basic principles that all software releases should incorporate. As a side note, I think I&rsquo;ve done a great job with Marked&rsquo;s release notes. Some (most) of my other projects, not so much. Writing Workflows An in-depth look at developing writing workflows. I&rsquo;m honored to point out that my SearchLink project is heavily featured in chapter 4. The naughty ways retailers track you online A great report from the team at Ghostery on all of the trackers and tools that retailers are using to collect and quantify your online shopping habits, including some tips for maintaining your privacy this holiday season. Siri may one day help you with name pronunciation Apple has filed a patent for a name pronunciation system. I don&rsquo;t see this as a \"help you pronounce\" tool as a potential fix for Siri&rsquo;s ability to recognize and pronounce names in everyday use. I&rsquo;m quite certain I&rsquo;m not the only one who&rsquo;s had to adopt bizarre phonetic pronunciations of friend&rsquo;s names to get Siri to comply, so here&rsquo;s hoping this makes it into production. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["javascript","privacy","tutorial","apple","beginners","changelog","check","ghostery","javascript","marked","mindmeister","react","searchlink","thanks","workflows","writing","ability","adopt","awesome","basic","bizarre","blazingly","boosting","brainstorming","brought","certain","changelogs","chapter","collaborating","collaborative","collect","depth","developing","everyday","excursions","featured","filed","finding","friend","geared","great","habits","heavily","holiday","honored","hoping","including","incorporate","maintaining","makes","mapping","names","naughty","notes","online","partnership","patent","phonetic","point","potential","practices","principles","privacy","production","productivity","project","projects","pronounce","pronunciation","pronunciations","quantify","recognize","release","releases","report","retailers","rsquo","season","shopping","software","source","system","taking","think","through","tools","toward","track","trackers","tutorials","understand","using","video","workflows","writing"]
	},{
		"title": "Creativity and Distraction",
		"url": "/2018/12/04/creativity-and-distraction/",
		"tags": ["answered","design","distraction","personal","reading","sleep"],
		"date": "Dec 4<span>th</span>, 2018",
		"ts": "1543937820",
		"summary": "Some of you may recall a publication created by Aaron Mahnke (now better known for Lore) called Read & Trust. It was a zine-style collection of works by a group of trusted bloggers. I was flattered to be included in it, and wrote a few pieces for it over the course of a year. The publication no longer exists, but I got permission from Aaron to re-publish some of my work there. I enjoyed writing this piece on finding a creative spark when faced with a blank page or a tough problem, so I thought I&rsquo;d share it here. I hope you find it useful. By Brett Terpstra, originally published in Read & Trust magazine. You may or may not consider yourself creative. You might not be a designer, a painter, a philosopher&hellip; but you solve problems every day, and that takes creativity. So what do you do when you need to be creative but can&rsquo;t find the spark? It&rsquo;s the equivalent of staring at a blank sheet of paper, and anybody who&rsquo;s ever had to write anything knows what that feels like. Creativity is the ability to approach a problem and solve it in a new way. That problem may be a storyline you&rsquo;re working on, a repair that needs to be made on your house, taking over a small country or anything in your day that gives you pause. Creativity is our means of removing roadblocks from our daily lives. You do it all the time; coming up with answers that you didn&rsquo;t have the minute before. When there&rsquo;s pressure to do it, though, your conscious mind often shuts down. That&rsquo;s ok, though, because what we commonly call creativity actually starts in the subconscious. It&rsquo;s always working on the problem, even when you&rsquo;re asleep, and you just need to back up and let the ideas surface. There are no purely original ideas. Every creative thought since the dawn of man has been inspired by something. Often by something unrelated, but the spark of an idea never comes out of an empty mind. When you need ideas of your own, surround yourself with everyone else&rsquo;s. Don&rsquo;t think about the problem, your subconscious mind will take care of that. Just absorb as many ideas as you can, whether it&rsquo;s reading articles on the web or walking around town. When I worked as a designer, it was commonly suggested that when I hit a block on a design I should go watch a movie. I think that falls short, though; a movie is too passive for me to really do anything other than watch. Personally, I need to be actively engaged in&hellip;",
		"keywords": ["creativity","readandtrust","aaron","brett","conversations","creativity","distraction","github","mahnke","morpheus","often","personally","sleeping","sometimes","surfing","terpstra","ability","absorb","active","actively","admit","almost","answer","answers","anybody","anywhere","appearance","approach","articles","asleep","baffling","barricade","because","before","begin","between","blank","block","bloggers","blogs","cabin","called","cannot","chance","collection","comes","coming","commonly","connections","conscious","consider","country","created","creating","creations","creative","creativity","daily","design","designer","designs","details","developer","difficult","digging","distractions","effort","elements","empty","engaged","enjoyed","eventually","everyday","everyone","evolving","exhausted","exists","expect","experience","faced","falls","favorite","feels","finding","fired","first","flattered","found","friends","frustrated","generated","getting","gives","group","growing","hellip","helpful","hiding","hindrance","hours","house","ideas","included","initial","inspired","intelligent","interesting","isolation","knows","lakefront","letting","lives","longer","looking","looming","magazine","minute","mistake","movie","myself","ndash","needs","neural","nurture","often","options","original","originally","painter","paper","passionate","passive","pause","people","permission","philosopher","piece","pieces","point","pressure","problem","problems","process","programming","publication","publish","published","purely","randomly","reading","recall","removing","repair","roadblocks","rsquo","serious","share","sheet","short","shuts","sifting","since","sleep","small","smartest","solution","solve","solved","spark","staring","starting","starts","stick","storyline","strengths","strikes","studied","study","style","subconscious","suggested","surface","surround","takes","taking","talking","think","thinking","thought","through","together","tough","trusted","understand","unknowingly","unrelated","useful","walking","wander","watch","wealth","where"]
	},{
		"title": "Lucky Charms, a light color scheme for Sublime Text",
		"url": "/2018/11/15/lucky-charms-a-light-color-scheme-for-sublime-text/",
		"tags": ["design","sublimetext","themes"],
		"date": "Nov 15<span>th</span>, 2018",
		"ts": "1542291960",
		"summary": "I&rsquo;ve always used dark color schemes for coding. I never use dark themes for writing, and I&rsquo;m not a fan of Dark Mode in Mojave, but for some reason I&rsquo;ve always gravitated to light-on-dark for coding. I decided to try a change, and I&rsquo;ve been quite happy with the results. I&rsquo;m still using Sublime Text. As much as I dig many things about VSCode, I haven&rsquo;t been able to dedicate myself to it and leave behind the comfortable environment I&rsquo;ve built in Sublime. So this color scheme is for Sublime Text. I also wrote this theme in the old PLIST format from TextMate which even TextMate doesn&rsquo;t use anymore. Lack of necessity is the only reason I haven&rsquo;t converted it to JSON, but feel free to submit a pull request. I created Lucky Charms based on some of the ideas I loved from the original Espresso editor light theme. Part of my draw to dark themes is the contrast it offers for highlighted syntax. Lucky Charms aims to close that gap for me. It uses transparency and background colors to highlight function names and property keys with blue moons, regular expressions with yellow stars, and strings with green clovers (colors I mean, no emoji involved). Grab the theme on GitHub. I haven&rsquo;t added it to Package Control, but you can just copy the tmTheme file into and open the Sublime Text->Preferences->Color Scheme&hellip; menu to use it. I&rsquo;ve really only tested it with shell, css, javascript, and ruby files at this point. If you like it and want to expand it for any scopes, please feel free to submit updates (pull requests preferred)! As always, I&rsquo;m open to all criticism, but if your complaints are about light themes in general, consider ",
		"keywords": ["color","editor","scheme","charms","color","control","espresso","github","lucky","mojave","plist","package","preferences","scheme","sublime","textmate","vscode","added","anymore","background","based","behind","built","change","close","clovers","coding","color","colors","comfortable","complaints","consider","contrast","converted","created","criticism","decided","dedicate","doesn","editor","emoji","environment","expand","expressions","files","format","function","general","gravitated","green","happy","haven","hellip","highlight","highlighted","ideas","involved","javascript","leave","light","loved","moons","myself","names","necessity","offers","original","point","preferred","property","regular","requests","results","rsquo","scheme","schemes","scopes","screenshot","shell","stars","strings","syntax","tested","theme","themes","tmtheme","transparency","updates","using","writing","wrote","yellow"]
	},{
		"title": "PDFpen and PDFpenPro, the ultimate tools for PDF editing",
		"url": "/2018/11/08/pdfpen-and-pdfpenpro-the-ultimate-tools-for-pdf-editing/",
		"tags": ["sponsor"],
		"date": "Nov 8<span>th</span>, 2018",
		"ts": "1541678400",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! PDFpen is the ultimate tool for editing PDFs. The latest features in version 10.2​ include support for dark mode on Mojave as well as smoother scrolling, faster thumbnail drawing, and increased maximum zoom. Go paperless with scanning and OCR Markup and highlight PDFs Search and redact sensitive info, such as account numbers Correct text in PDFs without the originals Insert, remove, and re-order pages Move and adjust images Record and playback audio annotations",
		"keywords": ["pdfpen","smile","software","brettterpstra","contents","convert","create","learn","markup","mojave","pdfpen","pdfpenpro","record","search","table","thanks","using","account","adjust","annotations","audio","automatically","brettterpstra","class","document","drawing","editing","faster","features","fillable","forms","height","highlight","https","image","images","increased","latest","loading","magic","maximum","media","nofollow","noscript","numbers","original","originals","pages","paperless","permissions","picture","playback","podcast","redact","remove","scanning","scrolling","sensitive","smilesoftware","smoother","source","sponsoring","srcset","support","thumbnail","title","ultimate","uploads","version","websites","width"]
	},{
		"title": "Shell Tricks: instant wildcard directory search",
		"url": "/2018/11/07/shell-tricks-instant-wildcard-directory-search/",
		"tags": ["search","source","terminal"],
		"date": "Nov 7<span>th</span>, 2018",
		"ts": "1541613720",
		"summary": "Here&rsquo;s a handy trick I use at the command line to quickly find filenames matching simple wildcard patterns in nested folders. It&rsquo;s called because that&rsquo;s essentially what it does: grep a list of filenames and return matches. This function uses The Silver Searcher (), which can be installed via Homebrew (). It could easily be modified to work with or other replacement (or itself, with the right options). Copy the function below into your (or wherever you source functions from at login). Source the file to test it out (e.g. ). By default it recurses 3 levels deep into folders. You can modify this in the last line by changing the number after the flag. You&rsquo;ll note that when it creates the search term, it substitutes basic \"\" and \"?\" wildcards for actual regular expressions. It also escapes \".\" to search for a literal period. Spaces are converted to \".\" searches, meaning any number of characters can exist between the arguments. Thus: In the first example you can see that the \"?\" wildcard only allowed one random character between \"d\" and \"rty\", so the file containing \"dirty\" was returned. In the second example the search was converted to \"d.*rty\", so any file with containing a \"d\" and then an \"rty\" at any point after is matched. It&rsquo;s a great shortcut to find files you know the name of, and in iTerm you can then just Command-Click a result to open it in the appropriate editor. You can also use it in another command like . I hope you find it as useful as I do",
		"keywords": ["command","click","command","dependencies","filetype","homebrew","installation","limit","searcher","silver","source","spaces","wildcards","allowed","allows","another","arguments","basic","because","below","between","called","changing","character","characters","command","containing","converted","creates","default","dirty","easily","editor","escapes","essentially","example","exist","expressions","extension","filenames","files","filetype","first","folders","function","functions","great","handy","iterm","installed","itself","levels","limit","literal","login","matched","matches","matching","meaning","modified","modify","nested","options","patterns","point","query","quickly","random","recurses","regular","replacement","return","returned","right","rsquo","search","searches","second","shortcut","simple","source","substitutes","substitution","trick","useful","wherever","wildcard","wildcards"]
	},{
		"title": "Web Excursions for November 06, 2018",
		"url": "/2018/11/06/web-excursions-for-november-06-2018/",
		"tags": ["bookmarks"],
		"date": "Nov 6<span>th</span>, 2018",
		"ts": "1541512800",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Keeping Chrome Light on Its Feet I&rsquo;ve mentioned Workona before, and it remains my favorite tab/window/workspace management solution for Chrome. The developers recently solved the problem of potentially increased CPU usage when you had too many tabs/workspaces open, and now it&rsquo;s not only the most convenient tab manager, it&rsquo;s the fastest way to work with a TON of windows and tabs. Here’s How Much Bots Drive Conversation During News Events About 60 percent of Twitter activity related to the caravan late last week was driven by bots, according to a new tool aimed at news organizations. sharkdp/fd: A simple, fast and user-friendly alternative to &lsquo;find&rsquo; A handy (and simpler) alternative to &lsquo;find&rsquo; in your Terminal. ncdu - NCurses Disk Usage A really nice NCurses-based disk utilization CLI that gives you a navigable file tree with file sizes and paths. Drill down to find the disk hogs. sharkdp/bat A cat(1) clone that offers paging, colorization, and line numbering as standard options. Just and go",
		"keywords": ["chrome","check","chrome","conversation","drill","drive","events","keeping","light","ncurses","setapp","terminal","twitter","usage","workona","access","activity","aimed","alias","based","before","blockquote","brettterpstra","brought","caravan","chrome","class","clone","colorization","convenient","conversation","developers","drive","driven","events","excursions","fastest","favorite","friendly","github","gives","handy","height","highlighter","https","hundreds","image","increased","keeping","language","light","loading","lsquo","management","manager","media","medium","mentioned","monthly","navigable","noscript","numbering","offers","options","organizations","original","paging","partnership","paths","percent","picture","plaintext","potentially","problem","qmorgan","recently","related","remains","rouge","rsquo","setapp","sharkdp","shows","simple","simpler","sizes","solution","solved","source","srcset","standard","story","subscription","title","today","uploads","usage","utilization","width","window","windows","wired","workona","workspace","workspaces","yorhel"]
	},{
		"title": "The Marked 2 NaNoShaNoWriMo Sale",
		"url": "/2018/11/05/the-marked-2-nanoshanowrimo-sale/",
		"tags": ["fountain","markdown","marked","writing"],
		"date": "Nov 5<span>th</span>, 2018",
		"ts": "1541422800",
		"summary": "It&rsquo;s No-Shave November and National Novel Writing Month. I figured as long as we&rsquo;re letting our body hair grow while toiling over literary masterpieces, I should probably make sure everyone has the best possible writing tools. During November, Marked 2 will be 30% off ($9.99). No coupon needed, and the price applies to both the Mac App Store and Direct versions. Go get it while it&rsquo;s hot! Even if you&rsquo;re not joining me in the Marked sale, do check out No-Shave November and help support cancer awareness and research. Whether you&rsquo;re shaving or not, if you&rsquo;re writing there&rsquo;s good cause to get into Markdown. Here&rsquo;s the number one reason: it&rsquo;s just text. You don&rsquo;t have to learn a darn thing. If you&rsquo;re most concerned about getting words on the page, using a text editor that relieves you of any considerations about formatting, images, and fonts means you focus on getting your ideas out. Markdown is just plain text, you already know how to write it. You can learn more to add images, links, text emphasis, tables, etc., but for 99% of novel-writing, you don&rsquo;t need those things anyway. Marked can show you beautifully formatted versions of what you&rsquo;re writing without you needing to touch a font palette at all. So pick a text editor, get Marked, and get to writing. (Additionally, using Markdown and Marked 2 means you&rsquo;re definitely not using a typewriter, so there&rsquo;s zero chance for males of catching that beard you&rsquo;re growing on a carriage return.) The latest update (version 2.5.27) just went out. Since I last blogged about it, there have been several releases, including a plethora of improvements and fixes, so here are some highlights: The URL Handler can add new Custom Styles directly from files. See StyleStealer, my recent bookmarklet for turning any web page into a Marked custom style. A full set of Mojave Dark Mode improvements (including fixing the black-on-black “Report Issue” window) Improvements for \"Multi Column\" mode (choose Multi-Column from the Style menu) Multi-column theme page numbers Multi-column theme document progress indicator New Status bar icons Offer suggestions for Use Alternate marks when highlighting (with default Plain English Campaign word list items only) Highland/Fountain improvements Handle Highland-specific text directives Allow Highland files to be Markdown instead of Fountain Option to process any&hellip;",
		"keywords": ["nanowrimo","additionally","allow","alternate","block","campaign","collapsing","column","custom","direct","english","fixed","fixes","fountain","handle","handler","handling","highland","improvements","markdown","marked","mindnode","mojave","multi","national","novel","offer","report","shave","since","status","store","style","stylestealer","styles","writer","writing","advantage","anyway","applies","available","awareness","backtick","beard","beautifully","black","blocks","blogged","bookmark","bookmarklet","brettterpstra","cancer","carriage","catching","cause","caused","chance","check","choose","class","column","considerations","coupon","crashes","custom","default","definitely","directives","directly","display","document","editor","emphasis","errors","everyone","extension","fenced","figured","files","first","fixes","fixing","focus","fonts","formats","formatted","formatting","getting","growing","handles","height","highlight","highlighted","highlighting","highlights","https","icons","ideas","image","images","improved","improvements","including","index","indicator","inline","inside","integration","items","joining","language","latest","ldquo","learn","letting","linked","links","literary","loading","lover","males","markdown","marked","marks","masterpieces","media","nanoshowrimo","nanowrimo","needed","needing","noscript","novel","numbers","original","package","palette","picture","plethora","possible","preference","price","pricing","process","rdquo","recent","releases","relieves","rendered","research","return","rsquo","search","sections","several","shave","shaving","single","source","specific","srcset","strong","style","stylestealer","suggestions","support","syntax","tables","theme","title","toiling","tools","touch","turning","typewriter","uploads","using","various","version","versions","while","width","window","words","write","writer","writing"]
	},{
		"title": "The future of the TabLinks Safari Extension",
		"url": "/2018/11/04/the-future-of-the-tablinks-safari-extension/",
		"tags": ["browser","extension","safari","service","tablinks","webdesign"],
		"date": "Nov 4<span>th</span>, 2018",
		"ts": "1541350260",
		"summary": "A long time ago I wrote an extension for Safari called TabLinks. It simply generated Markdown lists of links to all the currently opened tabs. It&rsquo;s been updated a few times over the years, but recent changes to Apple&rsquo;s handling of Safari extensions has discouraged me from further updates. I didn&rsquo;t realize how many people used and relied on the extension until it was suddenly no longer available. Since the release of macOS Mojave, Apple now requires that extensions be released as apps through the Mac App Store, codesigned and approved by Apple. I could do this, but it&rsquo;s a lot of extra effort and it&rsquo;s a pretty simple extension for all that work. So, what I&rsquo;m proposing is moving the functionality outside of Safari. There&rsquo;s already a Service in the Markdown Service Tools that grabs all of the open Safari tabs and inserts a list of them into your text editor. The only thing that TabLinks really added to that was templating, allowing the format of the list to be customizable. If I expanded that Service to allow templating and the storing of templates in persistent preferences, I think it would cover the needs of those who used TabLinks. What I&rsquo;m curious about, and putting forth as a question to be answered in the comments is: are there other aspects of TabLinks that you use and would miss? Are there additional features you&rsquo;d like to add",
		"keywords": ["extension","safari","apple","brett","markdown","mojave","safari","service","since","store","tablinks","tools","added","allow","allowing","answered","approved","aspects","available","called","changes","codesigned","comments","cover","curious","customizable","discouraged","editor","effort","expanded","extension","extensions","extra","features","format","forth","functionality","generated","grabs","handling","inserts","links","lists","longer","macos","moving","needs","nerdery","opened","outside","people","persistent","preferences","proposing","putting","realize","recent","release","released","relied","requires","rsquo","simple","simply","storing","suddenly","templates","templating","think","through","times","updated","updates","wrote","years"]
	},{
		"title": "Web Excursions for November 01, 2018",
		"url": "/2018/11/01/web-excursions-for-november-01-2018/",
		"tags": ["bookmarks","music"],
		"date": "Nov 1<span>st</span>, 2018",
		"ts": "1541083200",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Exposing China&rsquo;s Digital Dystopian Dictatorship Another disturbing look at the surveillance state cum digital dictatorship in China. Three Inspiring Role Models Embrace Modern Media To Close The STEM Gender Gap The fact that interest in STEM among young girls starts waning by the age of 6 is a serious issue to me. Anything that starts turning that tide is a step we need to take. ‎Silenz on the Mac App Store A cool little macOS utility for people who listen to music on their headphones. When an external sound passing a set threshhold occurs, it will pause your music and amplify the sound through your input device (all customizeable) basically making sure that when someone starts talking to you, you don&rsquo;t have to pause your music and ask them to repeat themselves. DesignBase A well-curated directory of free resources for designers, including plenty of icons, stock photos, and UI mockup kits for Sketch, Photoshop, and more. Gladys Project I&rsquo;ve been feeling guilty about how much of my privacy I think I&rsquo;ve given up by having Amazon echos around my house, so this Raspberry Pi-based, open-source home assistant has piqued my interest. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["assistant","design","amazon","another","check","china","close","designbase","dictatorship","digital","dystopian","embrace","exposing","gender","gladys","inspiring","media","mindmeister","models","modern","photoshop","project","raspberry","silenz","sketch","store","among","amplify","amyblankson","apple","assistant","based","boosting","brainstorming","brettterpstra","brought","class","closing","collaborating","collaborative","curated","customizeable","designbase","designers","device","dictatorship","digital","directory","disturbing","eviswn","echos","excursions","external","feeling","felixjoy","forbes","girls","gladysproject","guilty","having","headphones","height","house","https","icons","image","including","input","interest","itunes","listen","little","loading","macos","making","mapping","media","mindmeister","mockup","models","modern","music","noscript","occurs","original","partnership","passing","pause","people","photos","picture","piqued","plenty","privacy","productivity","repeat","resources","rsquo","serious","silenz","sites","software","sound","source","srcset","starts","stock","surveillance","talking","themselves","think","threshhold","through","title","turning","uploads","utility","waning","watch","width","young","youtube"]
	},{
		"title": "Cammeleon: privacy made simple",
		"url": "/2018/10/25/cammeleon-privacy-made-simple/",
		"tags": ["sponsor"],
		"date": "Oct 25<span>th</span>, 2018",
		"ts": "1540477440",
		"summary": "Thanks to Cammeleon for sponsoring BrettTerpstra.com this week! Cammeleon is an app that gives you the worry-free ability to send and share photos hidden in plain sight, private and encrypted. As photos have become an extension of the way we communicate on a daily basis, we feel it is a necessity to ensure that everyone has the tools at their disposal to maintain their privacy. Cammeleon is an app that seamlessly allows you to hide your pictures on your phone and other devices. It uses state-of-the-art technology to hide one picture inside another picture, allowing you to send the picture (with the other picture hidden inside) via your favorite messaging apps. To view the hidden picture, the recipient simply needs to open it with their instance of Cammeleon. It’s that simple. Right now we’re running an IndieGogo campaign to help support the development of the next version. The upcoming features include even more security, fingerprint and facial recognition, updated encryption, and improved integration with existing messaging apps. Backing the campaign means you’ll be the first to receive the latest and greatest, and access to private versions you can run on your own servers. Check out the campaign here",
		"keywords": ["cammeleon","photo","privacy","security","&#39;nofollow&#39;","backing","brettterpstra","cammeleon","check","indiegogo","right","thanks","ability","access","allowing","allows","another","backers","basis","brettterpstra","cammeleon","campaign","class","daily","development","devices","disposal","encrypted","encryption","everyone","extension","facial","favorite","features","fingerprint","first","gives","greatest","hidden","highlight","highlighter","https","improved","indiegogo","inside","instance","integration","language","latest","loading","maintain","media","messaging","necessity","needs","nofollow","noscript","original","phone","photos","picture","pictures","plaintext","privacy","private","projects","receive","recipient","recognition","rouge","running","seamlessly","security","servers","share","sight","simple","simply","source","sponsoring","srcset","support","technology","title","tools","upcoming","updated","uploads","version","versions","width","worry"]
	},{
		"title": "PopMaker 0.3",
		"url": "/2018/10/22/popmaker-0-dot-3/",
		"tags": ["macos","popclip","popmaker"],
		"date": "Oct 22<span>nd</span>, 2018",
		"ts": "1540213200",
		"summary": "I&rsquo;m releasing a minor update to PopMaker, my little tool for creating custom PopClip extensions. I hadn&rsquo;t realized that the icon feature had broken, but since I was in there fixing that I made a few other tweaks, mostly layout and error handling. Also, dark mode, for some reason. PopMaker v0.3 Download PopMaker v0.3 A Mac application for generating customizable PopClip extensions Published 05/12/14. Updated 10/21/18. Changelog Donate &bull; More info&hellip",
		"keywords": ["pilot","productivity","utilities","changelog","donate","download","happy","popclip","popclipping","popmaker","published","updated","broken","creating","custom","customizable","error","extensions","feature","fixing","generating","handling","hellip","layout","little","minor","mostly","realized","releasing","rsquo","since","tweaks"]
	},{
		"title": "The new, improved StyleStealer for Marked 2",
		"url": "/2018/10/18/the-new-improved-stylestealer-for-marked-2/",
		"tags": ["bookmarklet","browser","javascript","marked","scripting"],
		"date": "Oct 18<span>th</span>, 2018",
		"ts": "1539879120",
		"summary": "I&rsquo;ve updated the StyleStealer bookmarklet that I published a while ago. In addition to a bit more accurate styling, it can now add styles directly to Marked 2 (2.5.11 or newer) without requiring any file saving or manual adding in Marked&rsquo;s preferences. This tool is great if you&rsquo;re on online writer who wants to see how their work will appear on the destination blog or publication. It&rsquo;s also great if you like to Markdownify articles and be able to read them later with their original look. (What it&rsquo;s not great for is stealing other people&rsquo;s work and using it to publish your own. Let&rsquo;s not do that.) (If you already have StyleStealer installed, it&rsquo;s already updated. Congratulations.) To add it to Safari or Firefox, just drag the button below to your bookmarks/favorites bar. In the latest version of Chrome, you can no longer drag in-page links to the bookmarks bar. This now requires: (StyleStealer may work in additional browsers, these are the ones I&rsquo;ve tested.) If your Chromium browser doesn&rsquo;t allow bookmarklets (like Arc), download the styleStealer extension version and follow the instructions here. Note that the bookmarklet is designed for desktop use, because it uses Marked 2&rsquo;s url handler it won&rsquo;t be of much use on mobile browsers. Click the bookmarklet The browser enters inspection mode and a blue bar appears across the top of the page. Hovering over elements will outline the closest container elements, and show their selector at the top of the screen Click a container that holds the entire article but not any sidebars or excess cruft Note: The outline may disappear when you&rsquo;re over a paragraph, but the best bet for getting the right section is actually to just click the first paragraph of text in the article/post Enter a name for the style (defaults to the site name) when prompted Click the \"Add to Marked\" link that appears The style will appear in Marked&rsquo;s style picker, as well as in the Preferences->Style->Custom CSS list where you can use the \"-\" button to remove it. When you name the style, it gets written to a file called name.css in Marked&rsquo;s application support directory. Using the same name again will overwrite the file, which means if the bookmarklet failed to match the style you can try again and update the existing style. If you have a preview window open and that style selected, Marked will even update the preview&hellip;",
		"keywords": ["cascading","custom","marked","sheets","style","address","bookmark","change","chrome","chromium","click","congratulations","custom","enter","firefox","hovering","installation","markdownify","marked","preferences","right","safari","style","stylestealer","usage","using","accurate","across","adding","address","again","allow","appear","appears","article","articles","because","below","bookmark","bookmarklet","bookmarklets","bookmarks","browser","browsers","build","button","called","choose","click","closest","contact","container","copied","cruft","defaults","designed","desktop","destination","directly","directory","disappear","doesn","download","duplicate","easier","elements","encoded","enters","entire","eventually","extension","failed","favorites","field","filename","first","getting","great","handler","hellip","holds","hopefully","inspection","installed","instructions","later","latest","links","local","longer","makes","manual","match","method","mobile","newer","online","original","outline","overwrite","paragraph","parameter","paste","people","picker","preferences","preview","prompted","publication","publish","published","remove","requires","requiring","right","rsquo","saving","screen","section","selected","selector","share","sharing","sidebars","stealing","string","style","stylestealer","styles","styling","support","technical","tested","updated","using","version","wants","where","while","window","worked","writer","written"]
	},{
		"title": "Web Excursions for October 15, 2018",
		"url": "/2018/10/15/web-excursions-for-october-15-2018/",
		"tags": ["bookmarks","desktop"],
		"date": "Oct 15<span>th</span>, 2018",
		"ts": "1539615480",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Leave no dark corner Aside from me being enamored with the visual presentation of this story, this is a chilling look inside China&rsquo;s \"Sesame Credit\" system. If you&rsquo;re not already familiar with what&rsquo;s happening there, you should definitely read up. variadico/noti A simple CLI to monitor any command and trigger a notification on completion. Works with macOS notifications, HipChat, Pushbullet, Pushover, Slack and more. Free My Desktop I wrote about some tricks for automating desktop cleanup before screencasting, but this new (free) app from Valentino Urbano makes it a one-click process to hide your desktop icons, dock, and menu bar. 12 Customizations for the Mojave macOS Login Window Bet there&rsquo;s at least one in here you didn&rsquo;t know&hellip; How to Take Photos and Scan Documents with Continuity Camera in Mojave Josh Centers over at TidBITS offers a great overview of using your iPhone with the new Continuity Camera feature in Mojave to take photos and scan documents on your Mac",
		"keywords": ["desktop","macos","notifications","sesame","aside","camera","centers","china","cleanmymac","continuity","credit","customizations","desktop","documents","hipchat","leave","login","mojave","photos","pushbullet","pushover","sesame","slack","tidbits","urbano","valentino","window","works","automating","before","brought","chilling","cleanup","click","command","corner","definitely","desktop","documents","enamored","excursions","familiar","feature","great","happening","hellip","iphone","icons","inside","macos","makes","monitor","notification","notifications","offers","overview","partnership","photos","presentation","process","rsquo","screencasting","simple","speed","story","system","tools","tricks","trigger","using","variadico","visual","wrote"]
	},{
		"title": "Communicate Smarter with TextExpander",
		"url": "/2018/10/11/communicate-smarter-with-textexpander/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Oct 11<span>th</span>, 2018",
		"ts": "1539255600",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Create snippets for things you type &mdash; or copy and paste &mdash; all the time. Summon these snippets in any app on Mac, Windows, iPhone, and iPad using an abbreviation, or search for them using a hotkey while you&rsquo;re typing. Then, power up your whole team by sharing snippets. Visit TextExpander.com/podcast for 20% off your first year. Also check out these great resources: Beat Writer&rsquo;s Block: 7 Sources of Words to Inspire Top Distraction Free Writing Apps: Get Focused and Write! Meaningful Manager Communications: Professional Development Top Time-Saving Tips and Shortcuts for Freelancers 4 Easy Steps to More Accurate Time-Tracking",
		"keywords": ["smile","textexpander","accurate","block","brettterpstra","communications","create","development","distraction","focused","freelancers","inspire","manager","meaningful","personalize","professional","saving","shortcuts","sources","steps","summon","textexpander","textexpandersticker","thanks","tracking","visit","windows","words","write","writer","writing","abbreviation","accurate","addresses","answers","block","brettterpstra","check","class","common","communications","constantly","development","directions","distraction","email","entry","fields","first","focused","freelancers","great","height","helps","hotkey","https","iphone","image","inspire","ldquo","loading","manager","mdash","meaningful","media","nofollow","noscript","original","paste","picture","podcast","professional","proposals","questions","rdquo","regularly","requests","resources","responses","rsquo","saving","search","sharing","short","shortcuts","smarter","snippets","source","sources","sponsoring","srcset","steps","textexpander","title","today","tracking","typing","uploads","using","website","while","whole","width","words","write","writers","writing"]
	},{
		"title": "My new favorite sleep headphones",
		"url": "/2018/10/09/my-new-favorite-sleep-headphones/",
		"tags": ["bluetooth","hardware","sleep"],
		"date": "Oct 9<span>th</span>, 2018",
		"ts": "1539103980",
		"summary": "As you may have seen in the past, I&rsquo;m a fan of sleep headphones. Headphones specifically designed for wearing in bed, usually with flat speakers and soft bands. In the past I&rsquo;ve always come back to SleepPhones, but the last pair I bought (the Bluetooth ones) broke quickly. So my search began again, and it&rsquo;s time for another quick (soft) hardware review. After trying a few different types, I found I liked the kind with a combo eye mask. It took a few tries to get it right, though. Some models make up for thicker speakers by thickening the padding around them, resulting in enough lift to change the angle of my neck. Hated those. Some models didn&rsquo;t get either the headphones or the eye mask quite right, like old TV/VCR combos where neither component was up to par and you couldn&rsquo;t swap out either. Then I found a generic set that checked all the boxes for me. It&rsquo;s sold by multiple vendors under different names, but the pair I got was from Topoint. They cost $25, so not too bad in the grand scheme of available options. They&rsquo;re thick enough to completely block light, but not enough to shift my neck position against a feather pillow. They&rsquo;re tall enough to surround my nose and block off light from the bottom, and quite comfortable on the face. The speakers are thicker and harder than what you find in SleepPhones, but they&rsquo;re well padded and I&rsquo;ve had zero earaches since I started using them a couple weeks ago. The control placement is decent. They&rsquo;re located on your cheek when wearing them, and not super easy to use blind (i.e. wearing the sleep mask). I don&rsquo;t push a lot of buttons on any sleep headphones, though, and it hasn&rsquo;t bothered me. Having tried a few bluetooth sleep headphones, one thing that I really like about these is the charging cable tucks into the side and extends for connection. On some models you actually have to disconnect and pull out the whole bluetooth module and plug it in. These are the easiest to charge I&rsquo;ve tried thus far, and the battery can last for a week at a time with nightly use. I&rsquo;m currently working my way through the audio version of Artemis. It&rsquo;s read by Rosario Dawson, who rocks it, and it gets a bit too exciting to fall asleep to. So I usually end up switching to something about Norse mythology or overly-detailed histories of rock and roll when I&rsquo;m ready to actually turn on the sleep timer. All in all, I&rsquo;ve&hellip;",
		"keywords": ["audio","headphones","podcast","sleeping","artemis","bluetooth","dawson","hated","having","headphones","norse","rosario","sleepphones","topoint","again","against","angle","another","asleep","audio","available","bands","battery","began","blind","block","bluetooth","bothered","bottom","bought","boxes","broke","buttons","cable","change","charge","charging","check","checked","cheek","combo","combos","comfortable","complaints","completely","control","couldn","couple","decent","designed","detailed","different","earaches","easiest","either","enough","exciting","extends","feather","found","generic","grand","harder","hardware","headphones","histories","hours","light","liked","listening","located","market","models","module","multiple","mythology","names","neither","nightly","nighttime","options","overly","padded","padding","pillow","placement","position","quality","quick","quickly","ready","resulting","right","rocks","rsquo","scheme","search","shift","since","sleep","sound","speakers","specifically","started","super","surround","switching","thick","thickening","thicker","through","timer","tried","tries","trying","tucks","types","under","using","usually","vendors","version","wearing","weeks","where","whole","working"]
	},{
		"title": "Shell Tricks: Toggling Dark Mode from Terminal",
		"url": "/2018/09/26/shell-tricks-toggling-dark-mode-from-terminal/",
		"tags": ["applescript","macos","scripting","terminal"],
		"date": "Sep 26<span>th</span>, 2018",
		"ts": "1537975980",
		"summary": "If you&rsquo;ve upgraded to Mojave, you&rsquo;ve probably tried out Dark Mode. Maybe you love it. I got over the whole idea years ago, back when you had to run hacks just to change the menu bar background. I like my light interface. I&rsquo;m not grumpy about it, but it means I have to test any UIs I create in both modes now, so obviously that needs some automation. You can use the read value of \"dark mode\" as a condition (negated boolean) to create a toggle, turning it off if it&rsquo;s on, on if it&rsquo;s off. With these examples you can include a Dark Mode switcher in a script, an automated test, an Alfred/Launchbar action, a Keyboard Maestro shortcut, or create a Script Editor applet for a double-clickable mode switcher. I&rsquo;m assuming normal citizens won&rsquo;t have a need to toggle between the two modes frequently, but for those who do, enjoy",
		"keywords": ["mojave","alfred","applescript","editor","events","keyboard","launchbar","maestro","maybe","mojave","script","system","action","alias","applet","assuming","automated","automation","background","between","boolean","change","citizens","clickable","condensed","create","double","enjoy","examples","grumpy","hacks","interface","light","liner","modes","needs","negated","normal","rsquo","script","shell","shortcut","switcher","toggle","toggled","tried","turning","upgraded","value","whole","years"]
	},{
		"title": "Web Excursions for September 21, 2018",
		"url": "/2018/09/21/web-excursions-for-september-21-2018/",
		"tags": ["bookmarks","macos"],
		"date": "Sep 21<span>st</span>, 2018",
		"ts": "1537558860",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Botwiki Botwiki offers a large catalog of bots for Twitter, Facebook, Reddit, Slack, and more, as well as resources for building your own. The best FTP Clients for Mac Compared BinaryNights, creator of ForkLift, did a comprehensive speed test of all of the major FTP clients for Mac. Taking into account that this was performed by the developer of one of the apps, it&rsquo;s worth it as they go into solid detail about the testing procedure and parameters, and the results are (presumably) verifiable. And, as I would have guessed, in most cases every client except for Cyberduck performed pretty closely, but with some surprises in handling multiple-file transfers. beorg A plain text task manager for iOS with agenda, tasks and an outliner. I use TaskPaper formatting for my todo lists, but if you prefer something closer to Emacs Org Mode, this app will suit you nicely. From the same developer as Trunk Notes, a personal wiki app I have great respect for. Timing: the best automatic Mac time tracker for productive professionals and freelancers My favorite automatic time tracker for Mac has updated with MailPlane, Bear, Dash, and Opera, as well as a ton of improvements. Here are the full release notes. Linux 4.19-rc4 released, an apology, and a maintainership note - Linus Torvalds As you may know, the creator of Linux is a legendary asshole. As far as I know, this is Linus&rsquo;s first humble recognition of that. I hope that \"I need to take a break to get help on how to behave differently\" is a sincere statement backed by action",
		"keywords": ["linus","linux","timing","binarynights","botwiki","cleanmymac","clients","compared","cyberduck","emacs","facebook","forklift","linus","linux","mailplane","notes","opera","reddit","slack","taking","taskpaper","timing","torvalds","trunk","twitter","account","action","agenda","apology","asshole","automatic","backed","behave","beorg","break","brought","building","catalog","client","clients","closely","closer","comprehensive","creator","detail","developer","differently","except","excursions","favorite","first","formatting","freelancers","great","guessed","handling","humble","improvements","legendary","lists","maintainership","major","manager","multiple","nicely","notes","offers","outliner","parameters","partnership","performed","personal","prefer","presumably","procedure","productive","professionals","recognition","release","released","resources","results","rsquo","sincere","solid","speed","statement","surprises","tasks","testing","tools","tracker","transfers","updated","verifiable","worth"]
	},{
		"title": "Vettery: A hiring marketplace built for developers",
		"url": "/2018/09/20/vettery-a-hiring-marketplace-built-for-developers/",
		"tags": ["sponsor"],
		"date": "Sep 20<span>th</span>, 2018",
		"ts": "1537444800",
		"summary": "Thanks to Vettery for sponsoring BrettTerpstra.com this week! Are Mondays starting to feel like a drag? Did someone ask you to reset a random password? Beg you to connect them to the printer? Or perhaps your code just isn’t getting enough love, and you’re tackling the same bugs over and over, only to find&hellip;more of the same bugs. If you’re feeling less hurrah and a lot more blah, maybe it’s time for a big career change. Make Monday something to celebrate. Vettery is an online hiring marketplace that connects top developers, product managers, and user experience designers with inspiring companies. Once you&rsquo;re accepted to Vettery, companies contact you directly and request interviews. Vettery’s matching algorithm showcases your profile to hiring managers looking for someone with your skills, experience, and preferences. Plus, they’re pretty selective about who’s on the marketplace. They partner with over 8,000 Fortune 500 firms, VC-backed startups, and companies that don’t just set the bar for innovation—but those that regularly exceed it. Searching for a new job can be a pain, but it doesn’t have to be. Say goodbye to random headhunters, weird LinkedIn messages, and offers that are so off-base that you’d think recruiters meant to send their inquiry to someone completely different. And even if you’re feeling comfortable in your current job, no sweat! Vettery is low-commitment for passive job-seekers, so it’s a great way to see what’s out there. (After all, you never know what the future holds, and interview requests are a nice confidence boost!) Let your dream job find you. Plus, if you land a job through Vettery, they’ll hook you up with a $500 signing bonus. (Seriously.)",
		"keywords": ["hiring","vettery","brettterpstra","fortune","linkedin","monday","mondays","searching","seriously","thanks","vettery","accepted","algorithm","backed","bonus","boost","brettterpstra","campaign","career","celebrate","change","class","comfortable","commitment","companies","completely","confidence","connect","connects","contact","content","designers","developers","different","directly","doesn","dream","drive","enough","exceed","experience","feeling","firms","getting","goodbye","great","grouped","headhunters","height","hellip","hiring","holds","https","hurrah","image","innovation","inquiry","inspiring","interview","interviews","loading","looking","managers","marketplace","matching","maybe","meant","media","medium","messages","newsletter","nofollow","noscript","offers","online","original","partner","passive","password","perhaps","picture","preferences","printer","product","profile","random","recruiters","regularly","requests","reset","rsquo","seekers","selective","showcases","signing","skills","source","sponsoring","srcset","starting","startups","sweat","tackling","think","through","title","today","uploads","vettery","weird","width"]
	},{
		"title": "The \"noisy neighbor\" approach to meditation",
		"url": "/2018/09/19/the-noisy-neighbor-approach-to-meditation/",
		"tags": ["mentalhealth","personal"],
		"date": "Sep 19<span>th</span>, 2018",
		"ts": "1537381800",
		"summary": "I don&rsquo;t claim to be good at meditation, but I&rsquo;ve come to understand the benefits of it, especially for someone with ADHD. I&rsquo;m also probably bad enough at it that I wouldn&rsquo;t dream of telling anyone how to do it. That said, I figured something out today that I think is worth sharing; maybe it will be of use to others, especially ADHD folks with a meditation practice. A common thread through just about every meditation style that I&rsquo;ve been exposed to is letting thoughts go. Letting them exist, acknowledging them, and then letting them pass. I&rsquo;ve always viewed it as a front to back process, and taken that literally. My conscious thoughts exist in my frontal lobes, and I&rsquo;m trying to clear those out, visualizing the thoughts passing to the sides or to the back of my brain. This morning my yoga instructor misspoke and suggested letting conscious thoughts stay in the foreground instead of the background. I knew it was a slip-up, but, as is my way, I immediately wanted to know what would happen if I looked at it backwards. Magic, that&rsquo;s what. The front of my brain is always awash with thoughts. A constant buzzing. It&rsquo;s probably common to more than just ADHD sufferers, but it&rsquo;s something I&rsquo;ve accepted I&rsquo;ll always need to deal with. Today I found that I can acknowledge individual thoughts, but rather than consciously try to let them go, I can let them stay. Right there in the front, instead moving my focus to the background. I became aware of all the buzzing in my frontal lobes, but from the outside of it, separated from it. It became just a noise, not individual thoughts I needed to process. I visualized it as a noisy neighbor to my empty chamber, and one that I could ask to quiet down, or simply begin to tune out. As a sleep aid I&rsquo;ve often visualized my brain like a radio tuned to static. Let the static override conscious thoughts, and then slowly turn down the volume. It&rsquo;s generally worked, and this little exercise had the same effect, but with a mindfully awake result. Like I said, I&rsquo;m no expert. This reverse in my visualization is a surprise to me, but it&rsquo;s probably actually what I was supposed to be doing all along. Or at least another way of getting there. It just struck me that maybe others for whom meditation seems like an uphill battle might benefit. Feel free to use the comments to share your own experiences, or just to tell me I&rsquo;m unqualified&hellip;",
		"keywords": ["meditation","mindfulness","letting","magic","right","today","accepted","acknowledging","another","anyone","awake","aware","awash","background","backwards","battle","became","begin","benefit","benefits","brain","buzzing","chamber","claim","clear","comments","common","conscious","consciously","constant","doing","dream","empty","enough","especially","exercise","exist","experiences","expert","exposed","figured","focus","folks","foreground","found","front","frontal","generally","getting","happen","individual","instructor","letting","literally","little","lobes","looked","maybe","meditation","mindfully","misspoke","morning","moving","needed","neighbor","noise","noisy","often","opining","others","outside","override","passing","practice","process","publicly","quiet","radio","rather","reverse","rsquo","seems","separated","share","sharing","sides","simply","sleep","slowly","static","struck","stuff","style","sufferers","suggested","supposed","surprise","taken","telling","think","thoughts","thread","through","today","trying","tuned","understand","unqualified","uphill","viewed","visualization","visualized","visualizing","volume","wanted","worked","worth","wouldn"]
	},{
		"title": "PDFpen: edit PDFs with ease",
		"url": "/2018/09/13/pdfpen-edit-pdfs-with-ease/",
		"tags": ["sponsor"],
		"date": "Sep 13<span>th</span>, 2018",
		"ts": "1536836400",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! Go paperless with scanning and OCR Markup and highlight PDFs Search and redact sensitive info, such as account numbers and email addresses Correct text in PDFs without the originals Insert, remove, and re-order pages Move and adjust images Record and play back audio annotations Or, grab PDFpenPro to do even more, such as: Check out what&rsquo;s new in Version 10 (complete with animated GIFs). Learn more about PDFpen and PDFpenPro at smilesoftware.com/podcast",
		"keywords": ["document","format","pdfpen","portable","smile","brettterpstra","check","contents","convert","create","learn","markup","pdfpen","pdfpenpro","record","search","table","thanks","using","version","account","addresses","adjust","animated","annotations","audio","automatically","document","editing","email","fillable","forms","highlight","images","numbers","originals","pages","paperless","permissions","podcast","redact","remove","rsquo","scanning","sensitive","smilesoftware","sponsoring","ultimate","websites"]
	},{
		"title": "Web Excursions for September 11, 2018",
		"url": "/2018/09/11/web-excursions-for-september-11-2018/",
		"tags": ["bookmarks","fonts"],
		"date": "Sep 11<span>th</span>, 2018",
		"ts": "1536682200",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Font Flipper - Find Free Fonts If you&rsquo;ve ever trolled through Google&rsquo;s web fonts collection, you know how tedious it can be to pull the best font out of the large collection. Font Flipper turns it into Tinder&hellip; upload an image and add text, choose what types of fonts you want to view, and then start swiping right and left to build up a favorites list, ready to download. Nifty. LicketyLink A really slick service for sharing files. Sign up with a password and get a link to which you can add multiple files and share with someone else to download. I have no idea what the security is like, so I&rsquo;m not using it for anything sensitive, but if you want to share one or more large files with someone, this is great. The Best Ways to Use 3D Touch on Your iPhone In case you missed it, I&rsquo;ve been writing for Lifehacker as of recently (another reason posting has slowed down here lately, but I&rsquo;m working to balance that back out). I thought this post on the myriad ways you can use 3D Touch on iPhones worth sharing. Now that 3D Touch looks likely to be removed, I&rsquo;m taking as much advantage of it as I can. I don&rsquo;t care what anyone says, it is (was) a useful innovation. MacSparky Field Guides David Sparks is moving all of his content from Vimeo and iBooks to his own Teachable site. If you haven&rsquo;t checked out the macOS tips series that I did with him, you can find 60 Mac Tips Volume 1 and Volume 2 on the new site, along with his guides for Hazel, Workflow, and more. Workona I keep talking about this Chrome extension in various places, but it really has revolutionized my browsing/tab habits. A tab manager/session manager in one, and definitely worth checking out. It might even convince non-Chrome users to switch&hellip",
		"keywords": ["design","filesharing","fonts","manager","touch","check","chrome","david","field","flipper","fonts","google","guides","hazel","licketylink","lifehacker","macsparky","nifty","setapp","sparks","teachable","tinder","touch","vimeo","volume","workflow","workona","access","advantage","another","anyone","balance","brought","browsing","build","checked","checking","choose","collection","content","convince","definitely","download","excursions","extension","favorites","files","fonts","great","guides","habits","haven","hellip","hundreds","ibooks","iphone","iphones","image","innovation","likely","looks","macos","manager","missed","monthly","moving","multiple","myriad","partnership","password","places","posting","ready","recently","removed","revolutionized","right","rsquo","security","sensitive","series","service","session","share","sharing","slick","slowed","subscription","swiping","switch","taking","talking","tedious","thought","through","today","trolled","turns","types","upload","useful","users","using","various","working","worth","writing"]
	},{
		"title": "CleanMyMac X",
		"url": "/2018/09/06/cleanmymac-x/",
		"tags": ["appreview","macos"],
		"date": "Sep 6<span>th</span>, 2018",
		"ts": "1536244800",
		"summary": "MacPaw has released a new version of their excellent macOS cleanup and optimization tool: CleanMyMac X. I wrote it up for Lifehacker so I won&rsquo;t go into full detail here, but there are some cool new features I&rsquo;d like to highlight: Updated Safety Database ensures no important files get trashed Malware detection and removal Clean, Optimize, and Protect are now all part of the Smart Scan, one click to rule them all Assistant and Booster modules offer tips and tools for speeding up and underperforming Mac It also sports a beautiful UI and is definitely worth a look. Available now via Setapp, or a one-time purchase of $89 (with a half-price upgrade option). There&rsquo;s also a new subscription option ($39/yearly) which gives you full access to major updates. And this week only, all of these prices are 30% off! There&rsquo;s a free trial available, so no reason not to go try it out",
		"keywords": ["cleanmymac","macpaw","utilities","assistant","available","booster","clean","cleanmymac","database","lifehacker","macpaw","malware","optimize","protect","safety","setapp","smart","updated","access","available","beautiful","cleanup","click","definitely","detail","detection","ensures","excellent","features","files","gives","highlight","important","macos","major","modules","offer","optimization","price","prices","released","removal","rsquo","speeding","sports","subscription","tools","trashed","trial","underperforming","updates","upgrade","version","worth","wrote","yearly"]
	},{
		"title": "I wrote a review of the Ultimate Hacking Keyboard for you nerds",
		"url": "/2018/08/17/i-wrote-a-review-of-the-ultimate-hacking-keyboard-for-you-nerds/",
		"tags": ["hacks","hardware","hyper","keyboard","macos","reading","shortcuts","writing"],
		"date": "Aug 17<span>th</span>, 2018",
		"ts": "1534534320",
		"summary": "This is a post about keyboards. Well, about one keyboard, but we&rsquo;ll probably go through a bunch to get there. It&rsquo;s going to be long, and some of my less Tinder-profile-worthy personality traits will probably become obvious, but we can get there together. There are two types of people who will want to continue past this point. First, those interested in mechanical keyboards to the extent that they care what other people think about them. Second, those who enjoy reading about other people&rsquo;s nerd stuff. Maybe specifically about keyboards, but it&rsquo;s likely that this person enjoys reading anything decidedly nerdy. Either because they&rsquo;re nerdy, too, and it makes them feel better to know they&rsquo;re not alone, or they&rsquo;re so normal &mdash; and fine with that &mdash; that it amuses them to see other people go off the deep end.1 It&rsquo;s ok. Everyone loves Sheldon. Everyone is welcome. The first keyboard I can remember liking to the extent that I would talk about it was the diNovo Edge. That was around 2001. Up until then keyboards had just been a tool, not something I noticed or cared about. I went through a few iterations of the Edge, eventually ditching them because Logitech makes horrible drivers for Mac. Oh, and they required drivers on a Mac. And dongles. For years since then I&rsquo;ve always come back to my aluminum Apple bluetooth keyboard. I don&rsquo;t even use the latest one, the Magic Keyboard, but the one that still had a workable arrow key cluster.2 Not for lack of curiosity, and certainly not for lack of trying: I have a Das Keyboard, a Matias Laptop Pro,3 a Matias Tactile Pro, an ErgoDox,4 a couple old diNovo Edges, and a few others, mechanical and non, just laying around, moping, and hoping that I&rsquo;ll put them up for sale to someone who&rsquo;ll actually use them. I have piles of keycaps, a couple switch testers, and a fancy key puller. I&rsquo;ve spent hundreds of dollars (probably over a thousand over the years) trying to find a keyboard that made me feel more powerful than I did on my trusty Apple aluminum keyboard. Even the ones that got really close still had deal-breakers for me. I have a litany of reasons why every fancy keyboard I try might fail to make it into the \"primary keyboard\" spot. The foremost thing that always kills my momentum is that moving any key in the modifier cluster (Cmd, Opt, Ctrl, Fn) too far from where my muscle memory has known them to be for years inhibits my&hellip;",
		"keywords": ["hacking","keyboard","mechanical","ultimate","admittedly","aluminum","apple","arrow","because","below","bettertouchtool","brown","browns","capslock","cherry","closing","colemak","command","customizations","duplicated","dvorak","edges","either","ergodox","everyone","first","function","gently","hacking","hardwire","hyper","judging","karabiner","keyboard","laptop","lastly","layers","logitech","mvhwsr","macbook","macstock","maestro","magic","massdrop","matias","maybe","mouse","moved","numeric","okotjf","occasionally","origin","qwerty","replaces","second","sheldon","shift","short","smart","sometimes","space","story","switcher","switching","tactile","teensy","tinder","trackpad","turns","ultimate","updated","while","ability","above","accidentally","accord","accurate","accurately","activated","added","admit","again","allows","allthekeys","alone","aluminum","amount","amuses","angle","annoying","annoyingly","another","answer","anyone","anyway","apart","apparently","arduous","arrangement","arrow","article","assign","assigned","atomicobject","attach","attempts","available","avoid","awkward","backed","backers","backlink","backtick","barely","batteries","beast","beats","became","because","becomes","becoming","before","begin","between","bindings","bluetooth","bottom","bracket","break","breakers","breakfast","brettterpstra","brings","broke","browsing","built","bunch","button","buttons","buzzy","callouses","cared","certain","certainly","chance","changed","character","class","click","clicky","close","closes","closing","cluster","combination","combo","comes","comfortable","coming","committed","complaint","completely","compound","compromised","computer","concede","concerns","confusing","confusion","considered","consistency","contacted","continue","control","controls","corners","couldn","couple","cover","create","created","creativity","crippling","crowdfunded","curiosity","cursor","customizations","dammit","daunting","decidedly","decisions","default","defaults","definitely","dependency","desperate","determined","developed","dinovo","diagrams","different","distinct","ditching","doesn"]
	},{
		"title": "Marked 2 updates: Highland 2 and more",
		"url": "/2018/08/14/marked-2-updates-highland-2-and-more/",
		"tags": ["marked","support"],
		"date": "Aug 14<span>th</span>, 2018",
		"ts": "1534255380",
		"summary": "I&rsquo;ve kept my promise of shipping smaller updates to Marked 2 more frequently. Marked is now at 2.5.21, so here&rsquo;s a rundown of what&rsquo;s new in the last 5 updates. First, a bunch of fixes. I&rsquo;m fixing every day. Improved support for Highland 2 and Fountain text. Marked can once again open Highland files natively and update automatically on save. Improved support for MarsEdit, and Marked can now open MindNode files regardless of whether you save them in Single or Package format. A new option that will really only pertain to coders: \"Only syntax highlight when language is specified.\" This mimics the behavior of some other platforms, and only applies to fenced code blocks. All indented code blocks will still get syntax highlighting. If you enable this option under Preferences->Style, a fenced code block with a(ny) language specified will get syntax highlighting, e.g. If the opening fence doesn&rsquo;t have alphanumeric characters after it (and no language is specified using Markdown Extra syntax), the code will be ignored when highlighting. I also updated the internal MathJax library, and Leanpub syntax will now work in every document if it&rsquo;s enabled (Preferences->Apps). Previously it was only rendered if the current document was \"Book.txt\". Please enjoy the latest updates with my regards. If you&rsquo;re updating through the automatic updater (Marked->Check for Updates), read all the way through the release notes, it&rsquo;ll be worth it. Trust me. To get Marked 2, visit marked2app.com and grab the free trial! (Also available on Setapp and the Mac App Store)",
		"keywords": ["highland","marsedit","mindnode","check","extra","first","fountain","highland","improved","leanpub","markdown","marked","marsedit","mathjax","mindnode","package","pandoc","preferences","previously","setapp","single","store","style","updates","again","alphanumeric","applies","automatic","automatically","available","behavior","block","blocks","built","bunch","characters","coders","document","doesn","enabled","enjoy","fence","fenced","files","fixes","fixing","footnotes","format","highlight","highlighting","hover","ignored","indented","internal","language","latest","library","marked","mimics","natively","notes","opening","pertain","platforms","preview","processors","promise","regardless","release","rendered","rsquo","rundown","shipping","smaller","support","syntax","through","trial","under","updated","updater","updates","updating","using","visit","worth"]
	},{
		"title": "Yet more new keybindings for macOS",
		"url": "/2018/08/13/yet-more-new-keybindings-for-macos/",
		"tags": ["keybindings","macos","shortcuts"],
		"date": "Aug 13<span>th</span>, 2018",
		"ts": "1534181040",
		"summary": "I&rsquo;ve added a few new shortcuts to my astounding1 collection of macOS keybindings. You can check them all out on the project page (and, if needed, figure out what the heck I&rsquo;m talking about), but here&rsquo;s what&rsquo;s new. First, a simple command that&rsquo;s just for convenience: shift-space to move forward one character without inserting a space or deleting anything that&rsquo;s selected. It&rsquo;s exactly the same as hitting the right arrow key or pressing ⌃f. I just wanted the convenience of having it in a handier location when typing. You might hate it, especially if you often linger on the shift key when hitting space, because it will lead to unexpected behavior when you&rsquo;re using one of the most ingrained keys in your muscle memory (the spacebar). As a solution to the lingering shift, if you&rsquo;re not already using your hyper key with the spacebar for something else, it might make a better option (setting the binding to . Mine&rsquo;s been the shortcut for Dash for long enough that it would take too much getting used to. Second, some shortcuts for changing programmer-style casing in a string. These will only be useful for people who regularly want to convert from snake_case to camelCase or vice versa. I often find myself needing to do this outside of an editor with built-in case conversion, so I made a couple of quick shortcuts. These are all multi-stroke, mostly because I&rsquo;m running out of keys these days. Ctrl-Option-c starts them, then the second key chooses the function. The first one is snakecase to camelCase. If you place your caret (edit cursor) before the underscore in \"snakecase\" and hit , it will delete the underscore and capitalize the next character, giving you \"snakeCase\". It deletes the character following the caret indiscriminately, so it also works with a hyphen, or a space, or possibly a character you didn&rsquo;t actually mean to delete (if your caret is in the wrong place). It just replaces the need to delete, select, and then re-type the first character as uppercase. The second one converts to snakecase by an inverse method, inserting an underscore and lowercasing the next character. Put the caret between the \"lC\" in \"camelCase\" and hit and you&rsquo;ll get \"camelcase\". That&rsquo;s it. As always the project page and GitHub repo are updated with the new bindings. Sure, some might say horrifying. Or unwieldy. So be it.&nbsp;↩",
		"keywords": ["keyboard","first","github","keybindings","second","added","arrow","astounding","backlink","because","before","behavior","between","binding","bindings","brettterpstra","built","camel","camelcase","capitalize","caret","casing","changing","character","check","chooses","class","collection","command","convenience","conversion","convert","converts","couple","cursor","deletes","deleting","editor","elements","endnotes","enough","especially","figure","first","fnref","footnote","footnotes","function","getting","github","giving","handier","having","highlighter","hitting","horrifying","hyper","hyphen","indiscriminately","ingrained","inserting","instructions","inverse","karabiner","keybindings","language","ldquo","linger","lingering","location","lowercasing","macos","memory","method","mostly","multi","muscle","myself","needed","needing","noteref","often","outside","people","plaintext","possibly","pressing","programmer","project","projects","quick","rdquo","regularly","replaces","reversefootnote","right","rouge","rsquo","running","second","selected","setting","shift","shortcut","shortcuts","simple","snake","snakecase","solution","space","spacebar","starts","string","stroke","style","talking","ttscoff","typing","underscore","unexpected","unwieldy","updated","uppercase","useful","using","versa","wanted","works","wrong"]
	},{
		"title": "TextExpander, Communicate Smarter!",
		"url": "/2018/08/09/textexpander-communicate-smarter/",
		"tags": ["email","personal","snippet","sponsor","textexpander"],
		"date": "Aug 9<span>th</span>, 2018",
		"ts": "1533819600",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! FYI: I usually require that my advertisers write their own posts for these, but I&rsquo;m going to break from the norm this week and write some of my own tricks into this sponsored post. I&rsquo;m a huge fan of TextExpander and I&rsquo;d use it every day even if Smile weren&rsquo;t a sponsor of so many of the things I do. TextExpander helps you communicate smarter, faster, and more consistently. These posts often mention the ways that TextExpander can help teams and businesses, but it&rsquo;s just as amazing for personal use. Anything you type (or copy and paste) all the time is something TextExpander could be saving you time on. For example, you probably type one or more of your own email addresses all the time, right? Add a snippet for each email address and assign shortcuts like and to each one to instantly insert your address with just a couple of keystrokes. Trust me, it saves a ton of time, from filling in login screens to sharing your email in DMs. While you&rsquo;re at it, add a few for your various email signoffs and signatures. For example, I use 1 to insert \"- Brett\" (my standard signoff). inserts a more business-like signature with my contact info. And variants like \"-tx\" inserts \"Thanks! Brett,\" and so on.2 You can even use built-in date tools to insert the current date, or the date in 3 days, or any version of it in any format you need in a snippet. As a personal example, I use it every time I schedule a guest on Systematic to share show details and requirements via email, and again to insert a show notes outline in nvALT when I start recording, complete with fill-ins for episode number, guest name, sponsor info, and other variables. Summon these snippets in any app on Mac, Windows, iPhone, and iPad using an abbreviation. Once you have a lot of snippets, you&rsquo;ll appreciate tools like the hotkey search with shortcuts for inserting results, and friendly reminders when you type something you could have (should have) used an existing snippet for. Personalize your responses using fill-in fields like \"Dear name\". When you trigger the snippet, it will ask you to fill in the name, making each snippet flexible and personalized. If you are in a group environment, you can power up your whole team by sharing snippets with everyone. Check out some great examples on the TextExpander site for things like article frameworks for writers, cover letters and job&hellip;",
		"keywords": ["productivity","smile","textexpander","brett","brettterpstra","check","personalize","smile","sublime","summon","systematic","textexpander","thanks","typing","visit","while","windows","xcode","abbreviation","address","addresses","advertisers","again","amazing","answers","applications","appreciate","article","assign","assignment","backlink","break","brettterpstra","built","business","businesses","class","coding","common","computer","consistently","contact","couple","cover","customer","details","directions","edition","email","endnotes","entry","environment","episode","everyone","example","examples","expansion","faster","fields","filling","first","flexible","fnref","footnote","footnotes","format","frameworks","freelance","friendly","going","great","group","guest","height","helps","highlighter","hotkey","https","hunters","iphone","image","improve","inserting","inserts","instantly","keystrokes","language","ldquo","letter","letters","likely","loading","login","longer","making","media","mention","muscle","nature","nofollow","noscript","noteref","notes","nvalt","often","operator","original","outline","paste","pasting","personal","personalized","picture","plaintext","podcast","posts","proposals","questions","rdquo","recording","remains","reminders","requests","responses","results","reversefootnote","right","rouge","rsquo","samples","saves","saving","schedule","screens","search","second","share","sharing","shortcuts","signature","signatures","signoff","signoffs","smarter","snippet","snippets","source","sponsor","sponsored","sponsoring","srcset","standard","support","teams","textexpander","themselves","title","tools","tricks","trigger","uploads","using","usually","variables","variants","various","version","weren","whole","width","working","write","writer","writers","writing"]
	},{
		"title": "Web Excursions for August 07, 2018",
		"url": "/2018/08/07/web-excursions-for-august-07-2018/",
		"tags": ["bookmarks"],
		"date": "Aug 7<span>th</span>, 2018",
		"ts": "1533662340",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. OctoSearch A crawler that provides full text search of the starred repositories of those who follow you on GitHub. The results are pretty great. agarrharr/awesome-macos-screensavers A curated list of screensavers for Mac OS X. I asked on Twitter what everyone&rsquo;s favorites were, and almost every one mentioned is on this list, therefore I dub it a very good list. scoreboard Great balls of fire I need to use something like this more often. Score your project ideas based on Impact, Profit, Effort, and Vision and figure out which project is the most useful use of your resources. CodeZen – Zenify your Source Code Generates a shareable image from your source code with customatzable options including themes and fonts. ScreenTime - Screen sharing for FaceTime Allows you to show your macOS desktop during a FaceTime video call. I can see a lot of applications for this, even beyond the old \"family tech support\" gigs",
		"keywords": ["github","screensaver","allows","check","codezen","effort","facetime","generates","github","great","impact","octosearch","profit","score","screen","screentime","setapp","source","twitter","vision","zenify","access","agarrharr","almost","applications","asked","awesome","balls","based","beyond","brettterpstra","brought","class","codezen","crawler","curated","customatzable","desktop","dootech","everyone","excursions","family","favorites","figure","fonts","github","great","height","https","hundreds","ideas","image","including","ldquo","loading","macos","macos","media","mentioned","monthly","noscript","octosearch","often","options","original","partnership","picture","project","provides","rdquo","repositories","resources","results","rishimohan","rsquo","scoreboard","screensavers","search","setapp","shareable","sharing","source","space","srcset","starred","subscription","support","themes","therefore","title","today","tryscreentime","uploads","useful","video","width"]
	},{
		"title": "Meet MeisterTask 2.0: Stronger, Faster, and More Customizable Than Ever",
		"url": "/2018/08/02/meet-meistertask-2-dot-0-stronger-faster-and-more-customizable-than-ever/",
		"tags": ["sponsor"],
		"date": "Aug 2<span>nd</span>, 2018",
		"ts": "1533207600",
		"summary": "Thanks to MeisterTask for sponsoring BrettTerpstra.com this week! I&rsquo;m a big fan and excited about the release of 2.0. Read on for more! MeisterTask, which first launched in 2015 and has since become one of the most popular task managers on the web, just released its biggest update yet, making the app faster and more customizable than ever. The update also introduces a number of highly requested productivity features and comes with a fresh new look. MeisterTask is a Kanban-style task manager that runs inside any standard web browser as well as on Mac, Windows, iOS and Android. While the concept of Kanban boards isn&rsquo;t new, MeisterTask has gained a huge fan-base due to its focus on simplicity and its beautiful design. But MeisterTask is more than a pretty face: Aside from its intuitive UI, the tool offers powerful automations that help teams work more consistently and efficiently. It also integrates with 1,000+ other web-based apps, partly via native integrations and partly via third-party services such as IFTTT and Zapier. With its latest update, MeisterTask has become even more customizable, letting users choose exactly what information they&rsquo;d like to display on their dashboard, as well as adding a &lsquo;custom fields&rsquo; feature, enabling users to define one or multiple input fields, which are then added to the tasks inside a project. It&rsquo;s also worth noting that MeisterTask&rsquo;s servers are located in Frankfurt, Germany, which - in times of GDPR - is often a deciding factor for companies when considering cloud-based tools, particularly for those based in the EU. If you want to give the all-new MeisterTask 2.0 a try, you can create your free account at www.meistertask.com or get in touch with the sales team directly to discuss a customized solution for your team",
		"keywords": ["kanban","management","meisterlabs","project","android","aside","brettterpstra","frankfurt","germany","ifttt","kanban","meistertask","thanks","while","windows","zapier","account","added","adding","automations","based","beautiful","biggest","boards","browser","choose","cloud","comes","companies","concept","considering","consistently","create","custom","customizable","customized","dashboard","deciding","define","design","directly","display","efficiently","enabling","excited","faster","feature","features","fields","first","focus","fresh","gained","highly","information","input","inside","integrates","integrations","introduces","intuitive","latest","launched","letting","located","lsquo","making","manager","managers","meistertask","multiple","native","noting","offers","often","particularly","partly","party","popular","powerful","productivity","project","release","released","rsquo","sales","servers","services","simplicity","since","solution","sponsoring","standard","style","tasks","teams","third","times","tools","touch","users","worth"]
	},{
		"title": "Web Excursions for July 31, 2018",
		"url": "/2018/07/31/web-excursions-for-july-31-2018/",
		"tags": ["bookmarks"],
		"date": "Jul 31<span>st</span>, 2018",
		"ts": "1533065700",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. The Ultimate Guide to Learning CSS A collection of over 100 sources for learning every aspect of CSS. Well done. Gradient Joy A great collection of easy, url-based gradients for use as placeholder images in web designs. Gradient Hunt - Beautiful Color Gradients Thousands of nice color gradients in a curated collection. Click to copy CSS code for use in your projects. Best Best List® This is pretty cool&hellip; Best Best List summarizes thousands of editorial reviews to bring you the absolute best products. Best Best List tallies the votes and will bring you the definitive top 10 list across a ton of categories with products at competitive prices. WriteMapper This will probably warrant a further writeup in the future, but it takes the concept I use to blog with iThoughts and Marked and puts it into one app. Build a draft using a mind map, and see the outline version as you go",
		"keywords": ["design","gradient","beautiful","build","cleanmymac","click","color","gradient","gradients","guide","learning","marked","thousands","ultimate","writemapper","absolute","across","apple","aspect","based","bestbestlist","blockquote","border","boxes","brettterpstra","bring","brought","categories","class","collection","color","competitive","concept","curated","definitive","designs","display","draft","editorial","excursions","gradienthunt","gradientjoy","gradients","great","guide","height","hellip","hidden","https","ithoughts","image","images","impactradius","ithoughtsx","itunes","learning","loading","macpaw","marked","media","noscript","original","outline","partnership","picture","placeholder","position","prices","products","projects","reviews","source","sources","speed","srcset","style","styling","summarizes","takes","tallies","thousands","title","together","tools","ultimate","uploads","using","version","visibility","votes","warrant","width","writemapper","writeup","zendev"]
	},{
		"title": "Setting up a non-root Git server on Synology DiskStation",
		"url": "/2018/07/30/setting-up-a-non-root-git-server-on-synology-diskstation/",
		"tags": ["server","service","synology"],
		"date": "Jul 30<span>th</span>, 2018",
		"ts": "1532971920",
		"summary": "I just got my first Synology. My Drobo crashed, and it was the second one in 5 years. Keeping a 20 TB backup in the cloud isn&rsquo;t really feasible for me, so a local RAID is supposed to be the backup for less-essential data. So losing another Drobo meant potentially losing a bunch of data I&rsquo;d rather keep around. Here&rsquo;s the really frustrating part of the story: after going through Drobo customer service, they diagnosed it as a chassis issue (versus a power supply issue) and offered to fix it for $375&hellip; or I could buy a new Drobo. The thing is, I&rsquo;d lost trust in Drobo. Everybody has been telling me to get a Synology, so I figured it was time to invest in the switchover. I ordered a Synology DS418 (I know, I know, I now realize I should have gotten the 418play), along with 4 3.5\" drives and a Drobo 5 bay to use to recover my data. The Drobo was returned and refunded as soon as I&rsquo;d recovered my data. Here&rsquo;s what really ticked me off, though: out of curiosity, I took the power supply from the new Drobo and plugged it into my old one. It booted perfectly and has been running fine since. All I really needed was a $35 power adapter. But, like I said, my trust level was too low and I was happy to be switching anyway. I&rsquo;m loving the Synology every bit as much as everybody said I would. A true NAS with an onboard CPU that can run a host of applications from media servers to DNS and VPN servers. Wow. One of first things I discovered while going through all the features and packages available on the Synology was that it can run a Git server. I had no idea this was even going to be an option, so obviously I skipped everything else and dug right into getting that working. There were a few caveats to getting a truly useful system running, so I&rsquo;m documenting them here. You need SSH enabled to install the Git server. To enable SSH on your Synology, open Control Panel and go to Terminal & SNMP, then check the box for Enable SSH service. To make using git pleasurable, you need to make sure you don&rsquo;t have to type a password every time you push or pull. This is accomplished via SSH key pairs. For the purpose of the next few instructions, we&rsquo;re going to pretend you don&rsquo;t know how to do that, so if you do, bear with me. Doing the following went smoothly for the root user, but I wanted to use a non-root user to administer the Git repositories. I recommend this for security reasons, so these&hellip;",
		"keywords": ["diskstation","password","server","advanced","automatic","center","control","diskstation","doing","drobo","everybody","install","keeping","manual","package","panel","password","steps","synology","server","settings","subbing","substitute","synology","terminal","username","while","access","accomplished","adapter","addreses","address","admin","administer","against","another","anyway","anywhere","applications","authorized","available","backup","booted","breakdown","breeze","bunch","called","caveats","chassis","check","clear","cloud","command","compared","copied","crashed","creating","curiosity","customer","diagnosed","different","directory","discovered","documenting","doing","drives","editing","enabled","essential","everybody","everything","feasible","features","figured","finally","first","forwarding","found","frustrating","getting","going","gotten","great","happening","happy","hellip","important","install","instructions","invest","level","linux","local","located","logged","logging","login","losing","loving","machine","making","manually","meant","media","modifying","needed","networks","offer","offered","offsite","often","onboard","operating","optional","ordered","outside","owner","ownership","packages","pairs","password","passwordless","perfectly","permissions","planning","pleasurable","plugged","point","potentially","pretend","private","prompt","public","rather","realize","reasons","recommend","recover","recovered","references","refunded","remote","repos","repositories","return","returned","ridiculously","right","rsquo","running","second","security","server","servers","service","setting","setup","shortcut","shorten","since","skipped","smoothly","steps","story","supposed","switching","switchover","synology","system","telling","through","ticked","truly","under","useful","using","versus","wanted","whatever","wherever","while","working","written","years"]
	},{
		"title": "Jamf Now: Make managing Apple devices easy",
		"url": "/2018/07/26/jamf-now-make-managing-apple-devices-easy/",
		"tags": ["sponsor"],
		"date": "Jul 26<span>th</span>, 2018",
		"ts": "1532602800",
		"summary": "Thanks to Jamf Now for sponsoring BrettTerpstra.com this week! Apple device management can be time-consuming work, especially if IT is not your day job. Make iOS and macOS device setup easy, so you can spend your valuable time doing other work. Jamf Now is a cloud-based mobile device management (MDM) solution for the iPad, iPhone and Mac devices in your workplace. Device management is fast, accessible and affordable, so you can support your users without help from IT. It’s easy to keep track of your own Mac, iPad or iPhone, but what about the other Apple devices at work? As a business grows, so does its digital inventory, making it exponentially harder to manage everyone’s Apple devices. This is especially true if employees are remote.With Jamf Now, you can check your digital inventory, distribute Wi-Fi and email settings, deploy apps, protect company data, and even lock or wipe a device as needed – from anywhere. Jamf Now manages devices so you can focus on your business instead. No IT experience needed! Immediately sign up and manage devices without speaking to a sales representative, or obtaining software training or documentation. Leverage a Blueprint within Jamf Now to easily deploy settings and apps for groups of devices – in minutes and all from one place. Jamf Now customers wait for nothing",
		"keywords": ["apple","blueprint","brettterpstra","device","learn","leverage","sponsored","syndicate","thanks","accessible","affordable","anywhere","based","blockquote","brettterpstra","business","check","class","cloud","company","consuming","customers","deploy","device","devices","digital","distribute","doing","easily","email","employees","especially","everyone","experience","exponentially","focus","groups","grows","harder","height","https","iphone","image","inventory","loading","macos","making","management","manages","media","minutes","mobile","needed","nofollow","noscript","nothing","obtaining","original","picture","protect","remote","representative","sales","settings","setup","software","solution","source","speaking","spend","sponsoring","srcset","started","support","title","today","track","training","uploads","users","valuable","width","within","workplace"]
	},{
		"title": "AeroPress Timer v3",
		"url": "/2018/07/25/aeropress-timer-v3/",
		"tags": ["recipe"],
		"date": "Jul 25<span>th</span>, 2018",
		"ts": "1532541180",
		"summary": "I wrote this up for MacStories this morning, so I won&rsquo;t go into full detail, but AeroPress Timer has updated to version 3. It&rsquo;s an app for timing out recipes for the Aerobie AeroPress , and this version adds the one feature I&rsquo;ve most wanted from this awesome little iPhone utility: custom recipes. It&rsquo;s always had a vast selection of recipes to choose from, but being able to add my own was always my number one request. I added one for my Fellow Prismo while I was testing the beta and I&rsquo;m a very contented user",
		"keywords": ["aeropress","timer","aeropress","aerobie","fellow","macstories","prismo","timer","added","awesome","choose","contented","custom","detail","feature","iphone","little","morning","recipes","rsquo","selection","testing","timing","updated","utility","version","wanted","while","wrote"]
	},{
		"title": "Web Excursions for July 24, 2018",
		"url": "/2018/07/24/web-excursions-for-july-24-2018/",
		"tags": ["bookmarks","browser"],
		"date": "Jul 24<span>th</span>, 2018",
		"ts": "1532459100",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Kind of a \"coder&rsquo;s delight\" mashup this week, save for this first one: NodeBeat - Playful Music A delightful, node-based music generation app for iOS. Combine generators and nodes to start building songs and rhythms visually. I&rsquo;ve spent way too long getting lost in this one. TeaCode – write code super fast This one may get a longer writeup from me in the future, but I&rsquo;m excited enough to point it out now. I love TextExpander (dearly), but specifically for coding, TeaCode offers a basic feature set that&rsquo;s really useful in editors like Sublime, Code, and Xcode. You can include variables in an expansion and have them automatically filled in and transformed in the output. Works in any editor. AAlakkad/git-version-bumper If your project is using semantic version numbering, version-bumper can easily increment any part of the version number and create git tags for you. No more looking up the last incremental version with . CommitSheet A free invoice generator for developers that turns git commits into timesheets and invoices. browsh-org/browsh: A fully-modern text-based browser, rendering to TTY and browsers A full-featured text-based browser. Lynx was never like this. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["github","nodebeat","teacode","aalakkad","backblaze","check","commitsheet","music","nodebeat","playful","sublime","teacode","textexpander","works","xcode","affordably","apple","apptorium","automatically","backblaze","backs","based","basic","brettterpstra","brought","browser","browsers","browsh","building","bumper","class","cloud","coder","coding","commits","commitsheet","computer","create","dearly","delight","delightful","developers","easily","editor","editors","enough","entire","everything","excited","excursions","expansion","feature","featured","filled","first","fully","generation","generator","generators","getting","github","height","highlighter","https","image","increment","incremental","invoice","invoices","itunes","language","ldquo","loading","longer","looking","mashup","media","modern","music","nodebeat","nodes","noscript","numbering","offers","original","output","partnership","picture","plaintext","playful","point","project","rdquo","reliably","rendering","rhythms","rouge","rsquo","secure","securely","semantic","songs","source","specifically","spent","srcset","super","teacode","timesheets","title","today","transformed","turns","uploads","useful","using","variables","version","visually","width","write","writeup"]
	},{
		"title": "wpDataTables: The Best WordPress Table Plugin to Use on a Site",
		"url": "/2018/07/19/wpdatatables-the-best-wordpress-table-plugin-to-use-on-a-site/",
		"tags": ["design","organization","plugin","solutions","sponsor"],
		"date": "Jul 19<span>th</span>, 2018",
		"ts": "1531998000",
		"summary": "Thanks to wpDataTables for sponsoring BrettTerpstra.com this week! Managing a massive amount of data on your website can be an exercise in frustration. It can take hours to build and integrate a table into your website, only to find that something&rsquo;s not quite right when you hit refresh. wpDataTables, the #1 WordPress plugin for tables and charts, avoids data management problems by helping you avoid 5 major issues that can drive you to distraction. The Solution: wpDataTables will organize the same amount of data in a matter of minutes. All you need to do is import the data and follow a few simple steps. Creating a chart, a table, or a form for your website usually requires using 3 different plugins and understanding how to work with them. The Solution: With wpDataTables you can create any type of table. The wpDataChart wizard will convert your table to a chart, and the wpDataTables addon that integrates Gravity forms makes creating a form a no-brainer. Configuring any or all three is also an easy task. When organizing a huge amount of data, you run the risk of compromising your design. The result can be a well-organized table that is also an ugly one. The Solution: wpDataTables allows you to adjust a table&rsquo;s design to your liking by adding colors, changing font sizes, editing columns according to type, and highlighting cells, rows, or columns base on their content. Visitors have a hard time finding precisely what they&rsquo;re looking for. The Solution: wpDataTables has put extra effort into its filtering features. This allows you to display a filter below each column, create a filter within each form, and put the powerful Cascade Filtering and Independent Cascade Filtering features to work. You can also hide the table before filtering and use the Search button to make the table apply filters. It doesn&rsquo;t do a lot of good to organize a massive amount of data if the page takes forever to load. A typical user will click X and move on. The Solution: wpDataTables automatically creates responsive mega tables allowing you to display the table on different devices, hide the table until the entire page loads, and scroll the table horizontally. You don&rsquo;t have to write a line of code to organize and publish data in table, chart, or graph formats, over 17,000 people have chosen wpDataTables because of its ease of use and time-saving features, and it&rsquo;s easy to learn. The answer should be a resounding Yes! If you&&hellip;",
		"keywords": ["plugin","wordpress","wpdatatables","amount","brettterpstra","building","cascade","configuring","creating","design","different","filtering","forever","gravity","having","independent","major","managing","navigating","needing","organizing","plugins","right","ruining","search","solution","taking","thanks","visitors","wasting","website","wordpress","adding","addon","adjust","allowing","allows","amount","amounts","answer","apply","automatically","avoid","avoids","because","before","below","brainer","build","button","catalog","cells","changing","chart","charts","chosen","click","clicks","colors","column","columns","compromise","compromising","concise","content","convert","create","creates","creating","design","devices","different","display","distraction","doesn","drive","editing","effort","entire","exercise","extensive","extra","features","filter","filtering","filters","finding","forever","format","formats","forms","frustration","graph","having","helping","highlighting","horizontally","hours","import","integrate","integrates","issues","learn","liking","loads","looking","major","makes","management","manually","massive","minutes","navigation","necessitate","organize","organized","organizing","people","plugin","plugins","powerful","precisely","price","problems","product","publish","refresh","requires","resounding","responsive","right","rsquo","saving","scroll","simple","sizes","solutions","speed","sponsoring","steps","struggling","table","tables","takes","typical","understanding","using","usually","waste","website","within","wizard","working","wpdatachart","wpdatatables","write"]
	},{
		"title": "TextExpander: Communicate Smarter",
		"url": "/2018/07/12/textexpander-communicate-smarter/",
		"tags": ["sponsor","textexpander"],
		"date": "Jul 12<span>th</span>, 2018",
		"ts": "1531403100",
		"summary": "Thanks to TextExpander sponsor for sponsoring BrettTerpstra.com this week! TextExpander multiplies your team&rsquo;s productivity making up-to-date, shared knowledge available instantly. Using TextExpander, all of your team&rsquo;s common responses are: Accessible &mdash; and searchable &mdash; through simple abbreviations and keyboard shortcuts Written and edited by your best writers Available on multiple platforms: macOS, iOS, Windows, and web Updated immediately, everywhere, whenever they&rsquo;re modified If you&rsquo;re on a team, TextExpander will change your life, leaving more time for what you do best. For larger teams, TextExpander supports Single Sign On (SSO) and grouping accounts to make on-boarding a breeze. Visit textexpander.com/podcast to learn more about TextExpander",
		"keywords": ["smile","textexpander","accessible","available","brettterpstra","single","textexpander","thanks","updated","using","visit","windows","written","abbreviations","accounts","available","boarding","breeze","change","common","edited","everywhere","grouping","instantly","keyboard","knowledge","larger","learn","leaving","macos","making","mdash","modified","multiple","multiplies","platforms","podcast","productivity","responses","rsquo","searchable","shared","shortcuts","simple","sponsor","sponsoring","supports","teams","textexpander","through","whenever","writers"]
	},{
		"title": "Web Excursions for July 10, 2018",
		"url": "/2018/07/10/web-excursions-for-july-10-2018/",
		"tags": ["bookmarks"],
		"date": "Jul 10<span>th</span>, 2018",
		"ts": "1531227600",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Text Case on the App Store A cool $1, one-trick utility for iOS that takes selected or copied text and performs case transformations: title case, URL Encoded, uppercase, lowercase, capitalized, reversed, and \"Mocking Spongebob\" (random capitalization). Available through a share sheet in any editor or text field. Katharos Tones A $10, 60-sound collection of ringtones combining a selection of digital and acoustic sounds. If you&rsquo;re tired of unnecessarily checking your phone every time the tri-tone goes off in a TV show, you might want to check these out. I&rsquo;ve been using them for a couple of weeks now and can vouch that there are some great ringtone/alert replacements in here. (Admittedly, I still use some other ringtones for per-caller customization&hellip;) DevTube - The best developer videos in one place A curated collection of the best tech videos on the web. Mural Easily create a beautiful digital portfolio/résumé. Mural gives you a way to display and categorize your work, Pinterest style, and tell a story with each piece. Handy. RennerJost* For legal reasons, Renner has been renamed to Jost. Do you like Futura but want something that looks a little less&hellip; 90 years old? This pay-what-you want font &mdash; named after Futura designer Paul Renner and created by Indestructible Type &mdash; is worth trying out for your next sans-serif design need. Check out their other fonts while you&rsquo;re there, they&rsquo;re doing some cool stuff",
		"keywords": ["fonts","iphone","ringtones","typography","admittedly","available","check","devtube","easily","encoded","futura","handy","indestructible","katharos","mocking","mural","pinterest","renner","setapp","spongebob","store","tones","access","acoustic","alert","apple","beautiful","blockquote","brettterpstra","brought","caller","capitalization","capitalized","categorize","check","checking","class","collection","combining","copied","couple","create","created","curated","customization","design","designer","developer","digital","display","doing","editor","excursions","field","fonts","gives","great","height","hellip","https","hundreds","image","indestructibletype","itunes","katharostones","ldquo","legal","little","loading","looks","lowercase","mdash","media","monthly","muralapp","named","noscript","original","otherstuff","partnership","performs","phone","picture","piece","portfolio","random","rdquo","reasons","renamed","replacements","reversed","ringtone","ringtones","rsquo","selected","selection","serif","setapp","share","sheet","sound","sounds","source","srcset","story","stuff","style","subscription","takes","through","tired","title","today","transformations","trick","trying","unnecessarily","uploads","uppercase","using","utility","videos","vouch","weeks","while","width","worth","years"]
	},{
		"title": "The most demonstrably valuable text expansion snippet ever",
		"url": "/2018/07/09/the-most-demonstrably-valuable-text-expansion-snippet-ever/",
		"tags": ["productivity","snippet","textexpander"],
		"date": "Jul 9<span>th</span>, 2018",
		"ts": "1531151100",
		"summary": "I&rsquo;m not being hyperbolic: this \"one simple trick\" is going to save a lot of people a lot of time. (I know, it&rsquo;s really hard to read that sentence as anything other than hyperbole, but give me a chance.) I talk a lot about TextExpander and how much time it saves me (and full disclosure, Smile is a regular sponsor of my blog and podcasts). I was recently delighted by an unconventional use for text snippets that came from a Facebook post from Peter Cohen (and pointed out in Bob \"Dr. Mac\" LeVitus&rsquo; newsletter): One of the smartest text substitutions I&rsquo;ve made turns \"gfy\" into \"thanks for your valuable feedback.\" I can&rsquo;t think of a snippet that would save me more time than this. When I feel attacked, offended, or receive negative feedback I consider unfounded, here&rsquo;s the process I try to stick to: Type out a smartass or otherwise scathing response Erase smartass or otherwise scathing response prior to sending Meditate, take a walk, and/or listen to some favorite music until the initial reaction passes Force myself to wait until the next morning to reply Sit down (if still necessary, gritting my teeth) and writing something polite and understanding Step 5 always ends up being about the same, and a snippet that just reverses my thinking in an instant would literally save me 12 hours of time, and some physical exertion. Talk about a productivity hack&hellip; As an aside, I&rsquo;ve found that this type of response to aggressive emails almost always changes the conversation immediately. If an angry customer (or otherwise unfamiliar person) suddenly feels heard, everyone proceeds in a civil fashion. Most people who start out angry are simply assuming that they need to be aggressive in order to be heard. I&rsquo;ve written about this before, and I&rsquo;ll refer back to my post on \"How to write a customer support request.\" (I&rsquo;ll further note that this isn&rsquo;t as effective on Twitter. People directly attacking me rarely seem able to read a short, civil response as anything other than sarcastic or condescending. It takes a bit of eloquence that&rsquo;s not easy in 140-280 characters. Sarcasm, on the other hand, is really easy in only 50-100 characters.) I&rsquo;ll add a group to the TE-Tools if I finish up my new \"inverse reactions for better customer service\" snippet collection",
		"keywords": ["conversation","customer","online","support","cohen","erase","facebook","force","levitus","meditate","people","peter","sarcasm","smile","textexpander","tools","twitter","aggressive","almost","angry","aside","assuming","attacked","attacking","before","chance","changes","characters","civil","collection","condescending","consider","conversation","customer","delighted","directly","disclosure","effective","eloquence","emails","everyone","exertion","fashion","favorite","feedback","feels","finish","found","going","gritting","group","heard","hellip","hours","hyperbole","hyperbolic","initial","instant","inverse","listen","literally","mdash","morning","music","myself","necessary","negative","newsletter","offended","passes","people","person","physical","podcasts","pointed","polite","proceeds","process","productivity","rarely","reaction","reactions","receive","recently","regular","reply","response","reverses","rsquo","sarcastic","saves","scathing","sending","sentence","service","short","simple","simply","smartass","smartest","snippet","snippets","sponsor","stick","substitutions","suddenly","support","takes","teeth","thanks","think","thinking","trick","turns","unconventional","understanding","unfamiliar","unfounded","valuable","write","writing","written"]
	},{
		"title": "Want Screen Time on your Mac? Try Timing",
		"url": "/2018/07/05/want-screen-time-on-your-mac-try-timing/",
		"tags": ["sponsor"],
		"date": "Jul 5<span>th</span>, 2018",
		"ts": "1530788400",
		"summary": "Thanks to Timing for sponsoring BrettTerpstra.com this week! Time is your most precious resource. You need to know how you are spending it. With iOS 12 coming this fall, you&rsquo;ll have Screen Time to see how you spend time on your iPhone. But what about the Mac? Timing to the rescue! It automatically tracks which apps, documents and websites you use &mdash; without start/stop timers. See how you spend your time, eliminate distracting activities, and improve your client billing. And with the brand new sync feature, you can now see how much you&rsquo;ve been working from home&hellip; it adds up quickly! Not convinced yet? Read what Brett himself has to say about Timing. (Spoiler alert: He likes it, and it helps him be more productive.)",
		"keywords": ["timing","timingapp","tracking","brett","brettterpstra","download","screen","spoiler","thanks","timing","activities","alert","automatically","billing","brand","client","coming","convinced","distracting","documents","doing","eliminate","feature","focus","hellip","helps","himself","iphone","improve","likes","mdash","precious","productive","quickly","rescue","resource","rsquo","spend","spending","sponsoring","timers","today","tracks","trial","websites","working","worrying"]
	},{
		"title": "Web Excursions for June 25, 2018",
		"url": "/2018/06/25/web-excursions-for-june-25-2018/",
		"tags": ["bookmarks","video"],
		"date": "Jun 25<span>th</span>, 2018",
		"ts": "1529950620",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Nvidia Transforms Standard Video Into Slow Motion Using AI Nvidia demonstrates using AI to turn 30fps video to super-smooth ultra-slowmo (240fps) video. It&rsquo;s amazing. transfer.sh - Easy and fast file sharing from the command-line. Easy and fast file sharing from the command-line. Share up to 10GB, fully encrypted and automatically deleted after 14 days. And free. klauscfhq/moviebox This is pretty awesome. Machine learning movie recommendations on the command line. Installs with pip and sources the Carnegie Mellon Movie Summary Corpus to provide recommendations based on a selected movie. Strapdown.js - Instant and elegant Markdown documents Easy Markdown documents in the browser. Just add a script link at the bottom of an HTML page containing Markdown inside an tag and it generates an HTML version on the front end using Bootstrap themes (switchable). Chatamo Alexa Skill Builder Chatamo creates chat bots for automating customer service. They now offer an Alexa skill-building tool that makes it possible to build skills with point and click. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["nvidia","sharing","video","alexa","backblaze","bootstrap","builder","carnegie","chatamo","check","corpus","installs","instant","machine","markdown","mellon","motion","movie","nvidia","share","skill","standard","strapdown","summary","transforms","using","video","affordably","amazing","automatically","automating","awesome","backs","based","bottom","brought","browser","build","building","click","cloud","command","computer","containing","creates","customer","deleted","demonstrates","documents","elegant","encrypted","entire","everything","excursions","front","fully","generates","inside","klauscfhq","learning","makes","movie","moviebox","offer","partnership","point","possible","recommendations","reliably","rsquo","script","securely","selected","service","sharing","skill","skills","slowmo","smooth","sources","super","switchable","themes","today","ultra","using","version","video"]
	},{
		"title": "Curiouser and curiouser",
		"url": "/2018/06/22/curiouser-and-curiouser/",
		"tags": ["personal"],
		"date": "Jun 22<span>nd</span>, 2018",
		"ts": "1529699220",
		"summary": "Some of us always follow the rabbit. It&rsquo;s not because we want to. It&rsquo;s just that the rabbit&hellip; 10 a.m., somewhere in Minnesota Sit down to write a blog post. It&rsquo;s basically written already in my head, just need 20 minutes to get it down. Double check some code I&rsquo;m including, and realize it doesn&rsquo;t work right in an edge case that just crossed my mind. Drop back to Sublime Text for some testing. This edge case is revealing a more substantial failure. Get a little frustrated and head to StackOverflow. Find a StackOverflow answer that wasn&rsquo;t exactly what I needed but follow a link to GitHub and start examining some code, out of context, that I think might have the answer. See a function used that I&rsquo;ve never heard of and have to track it down through the repository. Turns out it&rsquo;s a native function in the language that I&rsquo;d never seen before. Consider the possibilities of this functionality. What&rsquo;s the use case for this? Why was it considered important enough to be part of the core functionality. Figure out some cases, start to think \"so what else could this be used for?\" I can think of some code that could be refactored to play with. Grep through to find an old script and start trying out the new method. Little snag, I need to convert the data when it&rsquo;s ingested. That will require a separate library. Package manager gives me a missing library error. Run to prepare for installing the needed package. See the list of changed and new packages. Wait, what does that one with the cool name do? . What? I didn&rsquo;t even know this was possible! Dig into the new package, consulting docs and trying out various pipelines. Holy cow, I should write a blog post about this. Wasn&rsquo;t I doing that already? Check timestamp. Look at watch. Tomorrow, I guess, it&rsquo;s time to make dinner now",
		"keywords": ["alice","rabbit","check","consider","double","figure","github","little","minnesota","package","stackoverflow","sublime","tomorrow","turns","answer","because","before","changed","check","considered","consulting","context","convert","crossed","dinner","doesn","doing","enough","error","examining","frustrated","function","functionality","gives","guess","heard","hellip","important","including","ingested","installing","language","library","little","manager","method","minutes","missing","native","needed","package","packages","pipelines","possibilities","possible","prepare","rabbit","realize","refactored","repository","revealing","right","rsquo","script","separate","somewhere","testing","think","through","timestamp","track","trying","various","watch","write","written"]
	},{
		"title": "Cognitive Productivity With macOS: 7 Principles for Getting Smarter With Knowledge",
		"url": "/2018/06/21/cognitive-productivity-with-macos-7-principles-for-getting-smarter-with-knowledge/",
		"tags": ["books","macos","organization","productivity"],
		"date": "Jun 21<span>st</span>, 2018",
		"ts": "1529607420",
		"summary": "The latest book from Luc P. Beaudoin is out: Cognitive Productivity with macOS: 7 Principles for Getting Smarter with Knowledge, available on Leanpub, the iBookstore and Amazon. Luc is the co-founder of CogSci Apps (creator of mySleepButton), founder of CogZest, and most importantly, a Cognitive Scientist who specializes in Mac and iOS-based productivity. So he&rsquo;s got credentials. You may even have heard my chat with him on Systematic. If you&rsquo;re a fan of this blog, or a listener of shows like Systematic, Mac Power Users, or any of the Mac shows with a productivity focus, this book will be for you. While it certainly has appeal to the academic side of knowledge gathering and consumption, it breaks the processes down in a way that will help anyone working to organize their information. By focusing on key principles in the areas of knowledge gathering, organizing, assessment, and mastery. It includes great info and tips for using Mac apps like OmniFocus and OmniOutliner, Anki, Timing, Leap and Yep, working with plain text and Markdown, and great tips for working in Finder and keeping projects and knowledge organized and accessible. Luc has a 2-second rule that says any information you use frequently should be accessible on your Mac within two seconds. It&rsquo;s a rule I clearly love, as I&rsquo;ve dedicated a good part of my adult life to making it happen for myself. I&rsquo;ve learned a lot from reading through Luc&rsquo;s tips surrounding the 2-second rule, and I can&rsquo;t imagine there&rsquo;s anybody who wouldn&rsquo;t walk away with at least 5 new ideas. Cognitive Productivity with MacOS is currently listed on the iBookstore and there&rsquo;s a Kindle Version available, but if you purchase directly through Leanpub using coupon , you can get a 20% discount on PDF, EPUB, MOBI, and Kindle versions all at once (plus free updates if the book is changed or added to). I highly recommend taking the time",
		"keywords": ["cognitive","macos","productivity","amazon","beaudoin","cogsci","cogzest","cognitive","finder","getting","kindle","knowledge","leanpub","macos","markdown","omnifocus","omnioutliner","principles","productivity","scientist","smarter","systematic","timing","users","version","while","academic","accessible","added","adult","anybody","anyone","appeal","areas","assessment","available","based","breaks","certainly","changed","clearly","coupon","creator","credentials","dedicated","directly","discount","focus","focusing","founder","gathering","great","happen","heard","highly","ibookstore","ideas","imagine","importantly","includes","information","keeping","knowledge","latest","learned","listed","listener","macos","making","mastery","mysleepbutton","myself","organize","organized","organizing","principles","processes","productivity","projects","reading","recommend","rsquo","second","seconds","shows","specializes","surrounding","taking","through","updates","using","versions","within","working","wouldn"]
	},{
		"title": "PodTagger 1.1",
		"url": "/2018/06/21/podtagger-1-dot-1/",
		"tags": ["podcast","podtagger"],
		"date": "Jun 21<span>st</span>, 2018",
		"ts": "1529593620",
		"summary": "I know a few people are using PodTagger , so I thought I should publish the latest updates. It&rsquo;s mostly fixes, but it also now adds a \"metadata\" section at the top of the file that it writes out that looks like: When I post a Systematic to SquareSpace, this is info I need when setting up the external mp3 link, so I figured I&rsquo;d just have podtagger figure it out for me. A few more steps saved. Download below, or check out the PodTagger project page for full details! PodTagger v1.1.0 Download PodTagger v1.1.0 Automated ID3 tagging for podcasts Published 03/01/17. Updated 05/06/16. Changelog Donate &bull; More info&hellip; PodTagger.app v1.1.0 Download PodTagger.app v1.1.0 An application version of PodTagger Published 05/06/18. Updated 06/21/18. Changelog Donate &bull; More info&hellip",
		"keywords": ["automation","tagging","automated","changelog","donate","download","podtagger","published","squarespace","systematic","updated","below","check","details","external","figure","figured","fixes","hellip","latest","looks","metadata","mostly","people","podcasts","podtagger","project","publish","rsquo","saved","section","setting","steps","tagging","thought","updates","using","version","writes"]
	},{
		"title": "The XML Data Liberation Front",
		"url": "/2018/06/20/the-xml-data-liberation-front/",
		"tags": ["markdown","scripting","search","source"],
		"date": "Jun 20<span>th</span>, 2018",
		"ts": "1529517900",
		"summary": "Despite the grandiose title, this post is pretty specific: converting RegExRX files to Markdown so I can include them in my nvALT snippets collection. Despite that, I&rsquo;m sharing it because you can use it as a base to modify and start \"rescuing\" your own data out of other applications. I understand why applications of any complexity store their data in structured files, whether XML, JSON, or a database format, but I like to keep my data portable. Since the Data Liberation Army isn&rsquo;t huge in number, the onus falls on us to find our own ways. This script specifically works with XML and outputs to Markdown, but you could easily make the idea work with JSON files, binary XML (with a little help from ), or SQLite database queries, and output to any format you wanted with a little templating. Ok, diatribe over. Back to the script. Out of all the editors/testers for regular expressions out there, I&rsquo;ve always come back to RegExRx. It&rsquo;s not pretty (the Mac App Store icon couldn&rsquo;t even get shadow transparency right), but it has all the features I could ask for. As I work, I save my successful regular expressions to RegExRX files. These are plain text XML files with the patterns stored as hex. This makes them pretty human-unreadable, and you know me&hellip; I wrote a script to convert a folder full of these files to Markdown files I could drop into nvALT or Quiver. I won&rsquo;t go into a ton of detail on this because I&rsquo;m pretty sure there aren&rsquo;t more than 5 people in the world who will ever need this script, but&hellip; Specify an output folder, a note title prefix, and your own template for the output (there&rsquo;s a default one if you don&rsquo;t make your own). A template is an ERB file that uses the variables @title, @flags, @search, @replace, and @source. The @source one is the contents of the \"source text\" in RegExRX, a string or text block to test the expression against. There are also helpers like \"@source.indent\" which will take every line and indent it 4 spaces (to make a Markdown code block). Also, simply replaces forward slashes with so you can use in your template. Note that it doesn&rsquo;t account for already-escaped slashes because I don&rsquo;t use them in RegExRX (its copy-as feature does it automatically), but that&rsquo;s something I&rsquo;ll probably fix sooner than later. Side note: annoyingly, a lot of other snippet apps (like SnippetsLab) can&rsquo;t just import Markdown files as notes. I&hellip;",
		"keywords": ["nvalt","portability","quiver","regexrx","codebox","liberation","markdown","nokogiri","quiver","regexrx","regexrx","sqlite","since","snippetslab","specify","store","account","against","annoyingly","applications","automatically","because","binary","block","chance","collection","complexity","contents","convert","converting","couldn","database","default","defunct","depending","detail","diatribe","doesn","easily","editors","escaped","example","expression","expressions","falls","feature","features","files","flags","folder","folks","format","grandiose","hellip","helpers","human","import","imports","indent","inspires","installed","issues","later","libxml","liberation","library","little","makes","modify","nicely","notes","nvalt","options","output","outputs","patterns","people","portable","prefix","queries","regular","replace","replaces","rescuing","results","right","rsquo","running","script","search","setup","shadow","sharing","simply","slashes","snippet","snippets","sooner","source","spaces","specific","specifically","specify","store","stored","string","structured","successful","template","templating","testers","think","title","transparency","understand","unreadable","usually","variables","wanted","works","world","wrote"]
	},{
		"title": "macOS dialog shortcut keys",
		"url": "/2018/06/19/macos-dialog-shortcut-keys/",
		"tags": ["keyboard","macos","shortcuts"],
		"date": "Jun 19<span>th</span>, 2018",
		"ts": "1529413200",
		"summary": "You probably know that I&rsquo;m a big fan of keyboard shortcuts. I try to learn them all and rarely click a button or pull down a menu. There&rsquo;s one area where I had a big question I had to pose to Twitter: how do I trigger the \"Delete\" button in an \"Are you sure you want to close&hellip;\" dialog. I got the answer from Sören Kuklau: ⌘⌫. I figured that, since those are harder to find, I&rsquo;d write out a few of my favorite dialog box shortcuts. First, if you have Full Keyboard Access set to \"All Controls\" in System Preferences -> Keyboard -> Shortcuts (at the bottom), you can use Tab and Shift-Tab to navigate all the buttons in a dialog. The fully highlighted button (which won&rsquo;t change while tabbing) responds to Return, and the one with the highlighted outline responds to Space. Just like it has been for as long as I can remember, if the \"Do you want to save&hellip;\" dialog&rsquo;s button reads \"Don&rsquo;t Save,\" ⌘D will choose that option directly. In most dialogs you can use Escape to cancel, but not always. More reliably, you can trigger the \"Cancel\" button with ⌘. (Command-period), which is also old school. It was originally the \"interrupt\" command for canceling long-running actions in applications (and still is in some, such as Logic Pro X). When you close an unsaved document in apps that are set up as document based apps, instead of \"Don&rsquo;t Save,\" the dialog&rsquo;s ignore button reads \"Delete,\" indicating that if you choose not to save or cancel the action, the document will never be written to disk. The shortcut for that button is ⌘⌫ (Command-Delete). In any save or open dialog, you can trigger the field that lets you manually enter a path (with Tab completion) using ⇧⌘G, or just typing a tilde (~) or slash (/). Typing a tilde will open the field with a tilde in the text field, which is a shortcut to your user&rsquo;s home folder. A slash starts at the root of the filesystem, handy for getting to . You can toggle the display of hidden files with ⇧⌘. (Command-Shift-period)",
		"keywords": ["apple","shortcut","access","cancel","command","controls","desktop","documents","downloads","escape","finder","first","keyboard","kuklau","logic","preferences","return","shift","shortcuts","space","system","twitter","typing","volumes","access","action","actions","answer","applications","based","bottom","button","buttons","cancel","canceling","change","choose","chucker","class","click","close","command","dialog","dialogs","directly","display","document","enter","example","favorite","field","figured","files","filesystem","folder","folders","fully","getting","handy","harder","hellip","hidden","highlighted","highlighter","https","ignore","indicating","interrupt","keyboard","language","ldquo","learn","manually","navigate","opening","originally","outline","plaintext","pulling","rarely","rdquo","reads","reliably","remember","responds","rouge","rsquo","running","school","shortcut","shortcuts","since","slash","starts","status","tabbing","tilde","toggle","trigger","twitter","typing","unsaved","using","where","while","write","written"]
	},{
		"title": "PDFpen 10: edit PDFs with ease",
		"url": "/2018/06/14/pdfpen-10-edit-pdfs-with-ease/",
		"tags": ["smile","sponsor"],
		"date": "Jun 14<span>th</span>, 2018",
		"ts": "1528974000",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! On June 12th, Smile will celebrate 15 years of making productivity software and providing fast, friendly service to customers. PDFpen 1.0 debuted at Macworld San Francisco in 2004, and it&rsquo;s been evolving ever since. The new PDFpen 10 includes watermarking, headers & footers, a precision edit tool, and more. PDFpenPro 10 adds batch OCR, making bulk OCR a snap. Recently-released version 10.1 adds AppleScript support for the new features, including automation for PDFpenPro&rsquo;s batch OCR. During the week of June 11th, the Smile Blog will celebrate Smile&rsquo;s history. Visit smilesoftware.com/blog to join the fun, including a sticker giveaway. And here&rsquo;s your PDFpen Tip Of The Week: Watermarking Your PDF Documents. Visit smilesoftware.com/podcast for more on PDFpen 10",
		"keywords": ["pdfpen","pdfpenpro","smile","applescript","brettterpstra","documents","francisco","macworld","pdfpen","pdfpenpro","recently","smile","thanks","visit","watermarking","automation","batch","celebrate","customers","debuted","evolving","features","footers","friendly","giveaway","headers","history","includes","including","making","podcast","precision","productivity","providing","released","rsquo","service","since","smilesoftware","software","sponsoring","sticker","support","version","watermarking","years"]
	},{
		"title": "Web Excursions for June 13, 2018",
		"url": "/2018/06/13/web-excursions-for-june-13-2018/",
		"tags": ["analytics","bookmarks"],
		"date": "Jun 13<span>th</span>, 2018",
		"ts": "1528907040",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Tripetto - Full-fledged form kit The world needs better forms. Tripetto includes a visual form editor, a collector for gathering response, and an SDK for developing form building blocks. It&rsquo;s a self-hosted node app, so not for everyone, but really nice for flowing forms. Dialogue : Screenplay Writer Despite not being a screenwriter, I&rsquo;m enamored with the idea of writing screen dialog in text message format. Check out the product page, you&rsquo;ll see what I mean. Fathom - simple, trustworthy website analytics Fathom (now available on GitHub) is a new website analytics platform built on simplicity and trustworthiness (recall the now-unsupported Mint?). Get the analytics you need without giving Google (Analytics) access to any of your visitors data. This site should be switching over soon. Home Assistant Home Assistant is worth noting in addition to all of my mentions of homebridge. Pointed out to me by Adrian Rudman, it has modules for just about everything you can imagine wanting to pull together (and add Siri/Alexa integration to). cgoldsby/LoginCritter Well that&rsquo;s just freaking adorable. (a login widget that reacts to text field interactions)",
		"keywords": ["automation","forms","login","adrian","alexa","analytics","assistant","check","dialogue","fathom","github","google","logincritter","pointed","rudman","screenplay","setapp","tripetto","writer","access","adorable","analytics","available","blocks","brought","building","built","cgoldsby","collector","developing","dialog","editor","enamored","everyone","everything","excursions","field","fledged","flowing","format","forms","freaking","gathering","giving","homebridge","hosted","hundreds","imagine","includes","integration","interactions","login","mentions","message","modules","monthly","needs","noting","partnership","platform","product","reacts","recall","response","rsquo","screen","screenwriter","simple","simplicity","subscription","switching","today","together","trustworthiness","trustworthy","unsupported","visitors","visual","wanting","website","widget","world","worth","writing"]
	},{
		"title": "Thoughts on the state of home automation",
		"url": "/2018/06/12/thoughts-on-the-state-of-home-automation/",
		"tags": ["alexa","automator","hacks","hardware","homeautomation","personal","programming"],
		"date": "Jun 12<span>th</span>, 2018",
		"ts": "1528827240",
		"summary": "Forgive me for pontificating and recollecting like an old man for a while. I&rsquo;ll be 40 next month, so I&rsquo;m practicing. Let&rsquo;s start in the late 90s. My landlord had informed me that he sold the property I was renting, and I had a few weeks to move out. I&rsquo;m still not sure that was legal, but my parents had moved out of state but kept the house where I spent my teens, and now I was renting their furnished basement while they were gone. I lived with Aditi in that house for the first few years we were married. She put up with a lot of my early home automation experimentation (grudgingly). All of the light switches became X10 switches. I installed (poorly-mounted) speaker systems in the bathroom, kitchen, and living rooms, running wires from the SoundBlaster card in my PC in the utility room. An AMP jukebox and voice synthesis app let the house start providing multi-room audio, and even talking to us. I added remotes around the house. Alarm clocks that could also turn lights on and off. Slow-wake sunrises with the bedroom lights. The TV remote could control the TV, my homemade DVR, and lighting scenes. I hacked a couple of Audreys with WiFi adapters and LCARS menus (handcrafted in Flash) to for touch-screen control of everything, and mounted them in the stairwell and the hall to the bedroom. Back then, I was always the first one in the bathroom in the morning, so it was easy to have a morning automation routine that was just for me. It would only trigger once during the day, and only between 5 and 6am. The bathroom light shined directly into the bedroom, so a door close sensor would trigger the ramp up of the bathroom and kitchen lights, start the coffee maker, and then proceed to read me the weather and my appointments for the day in a hushed tone. In a time when most people considered voice control the stuff of sci-fi, I rigged the house&rsquo;s late 80s intercom system up to my PC running a voice accessiblity program and Homeseer to control all of my X10 switches. It didn&rsquo;t work terribly well, but I could instruct the computer to \"turn on the lights in the living room\" as long as I&rsquo;d left the intercom in \"listen\" mode (or walked across the room to press the \"talk\" button that was 3&rsquo; from the light switch). Eventually I got my own house. The electrical system was noisy, and X10 (which communicates mostly over power lines) stopped working as well. Over time I upgraded my system to Insteon, and when I switched&hellip;",
		"keywords": ["alexa","control","homekit","voice","aditi","alarm","alexa","apple","audreys","automation","eventually","flash","forgive","homekit","homepod","homeseer","honestly","ifttt","indigo","insteon","lcars","manufacturers","powermates","radio","shack","soundblaster","tracy","while","accessiblity","across","actions","active","adapters","added","adding","affordable","allowing","amazing","amazingly","announce","annoying","anyway","appointments","audience","audio","automatically","automation","available","based","basement","bathroom","became","becomes","becoming","bedroom","beengone","between","blink","brain","broadcasts","build","bulbs","button","buttons","capabilities","central","clocks","close","coffee","combination","communicates","compatibility","complex","computer","connect","considered","constrained","control","controlled","controllers","coolest","couldn","counting","couple","criteria","daytime","desktop","detectors","determines","developing","device","devices","different","differently","directional","directly","discovered","disparate","doing","doors","easier","easily","ecosphere","electrical","empty","engineer","enough","enthusiast","equation","events","everything","excited","executes","expected","experimentation","first","fragmented","freaking","function","furnished","getting","going","grocery","grudgingly","hacked","hallway","handcrafted","hardware","homebridge","homemade","house","hushed","iphone","identification","imagine","incorporate","infinitely","informed","installed","instruct","integrate","integrates","integration","intended","interactions","intercom","interested","interface","interfaces","issues","itself","jukebox","kitchen","landlord","laser","latest","legal","light","lighting","lights","limited","listen","lived","living","loving","mailbox","maker","manufacturer","manufacturers","married","mdash","meant","menus","minimal","mobile","moisture","morning","mostly","motion","mounted","moved","multi","multiple","needing","nerds","newer","night","noisy","notifications","office","options","originally","outside","overly","parents","people","platform","plugin","pontificating","poorly","possibilities","practicing","press","processing"]
	},{
		"title": "Alexa and Siri and bringing it all together",
		"url": "/2018/06/06/alexa-and-siri-and-bringing-it-all-together/",
		"tags": ["alexa","homeautomation","plugin"],
		"date": "Jun 6<span>th</span>, 2018",
		"ts": "1528302000",
		"summary": "I have a longer home automation post in the works. It&rsquo;s actually more philosophical than \"how-to,\" so I&rsquo;m taking my time with it. My discovery this week bears mentioning on its own, though. I&rsquo;ve become more and more enamored with Amazon&rsquo;s Alexa, and fascinated with its superiority to Siri. Echo dots are relatively cheap, and the Philips Hue integration with the spying little devices is polished. My biggest issue was that the majority of my home is automated using devices that are neither Alexa nor HomeKit compatible, at least not in a way that works with all of the scripting I&rsquo;ve done previously. I&rsquo;d hacked around the HomeKit issues using homebridge, which I&rsquo;ve talked about before. It requires an always on home server, so it&rsquo;s not a solution for everyone, but it did the trick for me. I don&rsquo;t have a HomePod, but I imagine that it would be a nice addition to that integration. What I do have is 4 Echo Dots, and what I wanted was Alexa control over my Indigo setup. Then over the weekend I discovered that there&rsquo;s an Alexa plugin for homebridge. The setup is, relative to the Siri setup, really simple. With the combination of my Indigo plugin and the Alexa plugin, I have complete voice control over all of my Hue devices and my Insteon/z-wave devices, as well as access to my custom Indigo Actions and Triggers. If you have any kind of similar setup, it&rsquo;s definitely worth looking at the homebridge-alexa plugin. You&rsquo;ll need an account through cloudwatch to install the Alexa skill (search for homebridge in the Skill section of your Alexa app). You&rsquo;ll also need to run your homebridge instance in insecure mode (). All together it took me about 15 minutes to have full Alexa access to all of my devices, and I can even add Insteon and Z-Wave devices to Alexa&rsquo;s \"rooms,\" so that I can just tell the Dot in my office to \"turn on the lights\" and it knows which lights to toggle. It has the further benefit of being allowing me to ask Siri and Alexa to do the same things, and not have to think as much about which one has which capabilities. In case it didn&rsquo;t come through in my writing, I&rsquo;m very excited about this",
		"keywords": ["amazon","homebridge","homekit","actions","alexa","amazon","homekit","homepod","indigo","insteon","philips","skill","triggers","access","account","alexa","allowing","automated","automation","bears","before","benefit","biggest","capabilities","cheap","cloudwatch","combination","compatible","control","custom","definitely","devices","discovered","discovery","enamored","everyone","excited","fascinated","hacked","homebridge","imagine","insecure","install","instance","integration","issues","knows","lights","little","longer","looking","mentioning","minutes","neither","office","philosophical","plugin","polished","previously","relative","relatively","requires","rooms","rsquo","scripting","search","section","server","setup","similar","simple","skill","solution","spying","superiority","taking","talked","think","through","together","toggle","trick","using","voice","wanted","weekend","works","worth","writing"]
	},{
		"title": "Shell Tricks: Autocompleting system sound names on the command line",
		"url": "/2018/06/05/shell-tricks-autocompleting-system-sound-names-on-the-command-line/",
		"tags": ["scripting","shell","terminal"],
		"date": "Jun 5<span>th</span>, 2018",
		"ts": "1528203600",
		"summary": "I find the bash commands and overly mysterious, so I&rsquo;m often playing with them to try to get a better grasp on all of the poorly-documented options. is a shell built-in, no man page, just output. It&rsquo;s vague. I&rsquo;ve detailed some of my other exploits with this in the past, one of my favorites being custom app alias completions. This time I wanted to go a lot simpler. The command comes default with OS X&rsquo;s BSD installation. It&rsquo;s the \"Audio File Play\" command used to play sound files in compatible formats. I usually use it in scripts to play the system sounds (Glass, Basso, etc.). So I wrote a quick function to make it easier to get to those: With that in place, I can just call and it will play the sound. I don&rsquo;t always remember the names of all the sounds, though, which means I have to to see them. A perfect job for shell completion, right? So here&rsquo;s the simple script that I source in ~/.bash_profile to give me tab completion of system sounds, listing them all if I haven&rsquo;t started typing a word yet. What it does is create an array from the result of listing the sounds directory and getting the base name of every file minus the extension. Then, rather than using to do the matching, it uses a custom loop to handle case insensitive matching. This would normally work by default with and , but for reasons I&rsquo;m not clear on, it doesn&rsquo;t when you&rsquo;re providing a custom list. The function is used to case-insensitively complete the \"play\" function when I call it, so typing will offer me \"Frog\" and \"Funk.\" completion continues using the Bash default, only my custom function is affected",
		"keywords": ["autocomplete","compgen","audio","basso","glass","affected","alias","array","built","clear","comes","command","commands","compatible","completions","continues","create","custom","default","detailed","directory","documented","doesn","easier","exploits","extension","favorites","files","formats","function","getting","grasp","handle","haven","insensitive","insensitively","installation","listing","matching","minus","mysterious","names","normally","offer","often","options","output","overly","playing","poorly","profile","providing","quick","rather","reasons","remember","right","rsquo","script","scripts","shell","simple","simpler","sound","sounds","source","started","system","trick","typing","using","usually","vague","wanted","wrote"]
	},{
		"title": "Working with multi-file documents in Marked 2",
		"url": "/2018/05/30/working-with-multi-file-documents-in-marked-2/",
		"tags": ["markdown","marked","writing"],
		"date": "May 30<span>th</span>, 2018",
		"ts": "1527685200",
		"summary": "Hey, I made a new video for Marked 2. It covers multi-file documents created with Marked 2&rsquo;s syntax, MultiMarkdown and iA Writer syntaxes, or Leanpub and GitBook formats. This one doesn&rsquo;t go into Scrivener and Ulysses capabilities, but those are pretty straightforward to begin with (just drop a Scrivener file on it or use Ulysses ⌘6 preview). It also covers the special tools Marked provides for working with multi-file documents, including its ability to tell you which included file you&rsquo;re currently viewing, and edit just the part of the document you need to. Lastly, I cover bookmarking points in the document, navigating with the minimap, and the auto-scroll feature. I don&rsquo;t know if you knew this, but Marked has a LOT of tricks up its sleeve. If you haven&rsquo;t tried it, you can grab a free demo. If you&rsquo;re already a user, I hope this sheds some light on features you might not already be using",
		"keywords": ["inclusion","marked","gitbook","lastly","leanpub","marked","multimarkdown","scrivener","ulysses","video","writer","youtube","ability","begin","bookmarking","bottom","capabilities","class","container","cover","covers","created","document","documents","doesn","ehoymhk","feature","features","figure","formats","haven","height","https","included","including","light","marked","minimap","multi","navigating","padding","points","preview","provides","rsquo","scroll","sheds","sleeve","special","straightforward","style","syntax","syntaxes","tools","tricks","tried","using","video","videoid","viewing","watch","width","working","youtube"]
	},{
		"title": "Marked 2.5.12, 13, 14, 15, 16...",
		"url": "/2018/05/28/marked-2-dot-5-12-13-14-15-16-dot-dot-dot/",
		"tags": ["marked","marsedit"],
		"date": "May 28<span>th</span>, 2018",
		"ts": "1527512400",
		"summary": "There was over a year between Marked 2.5.10 and the 2.5.11 update I finally shipped on May 10th. That was way too long, and I realized I&rsquo;d developed the habit collecting enough fixes, improvements, and new features to make it feel \"justified\" to release an update, even after I knew it was long past time to ship. That doesn&rsquo;t fit with modern software practices, especially because it was ultimately an incremental release. I&rsquo;ve been revising that habit and releasing on a schedule closer to what Twitter does with their iOS apps, with near-weekly updates that are so minor they rarely get release notes. (Though I have a strong preference for release notes in my releases, beyond just \"it makes things better.\") If I fix a couple of things, add a single new feature, etc., I&rsquo;ve been creating a release. Since the 10th there have already been 5 more updates, and Marked is &mdash; as of this writing &mdash; at version 2.5.16. I imagine that will be 2.5.17 sooner than later. My first instinct is \"how will anyone talk about new Marked releases if it&rsquo;s not a bigger deal?\" But I think the frequent releases are balancing out the boost of a big release that gets some press by just having a more active and engaged user base building word of mouth over time. People are more likely to recommend something they see as vital and growing. It&rsquo;s hard to judge at the moment as Apple has given Marked 2 a top billing spot on the Mac App Store homepage, which obviously is going to inflate sales numbers for a brief period. Not complaining. Here&rsquo;s a recap of what&rsquo;s happened in those last 5 releases: I added a new parameter to the URL handler () to allow raising affected windows after running whatever command is passed. I&rsquo;ve written about the URL handler in detail previously, so for now I&rsquo;ll just offer this example: From a script, that opens a new file and raises the window above all other application windows, but without activating Marked. Your current application remains foreground while Marked&rsquo;s window is guaranteed to be visible. This parameter is usable with most commands that affects one or more preview windows (open, refresh, paste, preview, style). As a side note, I added a script for BBEdit to the \"bonus pack\". You can assign a hotkey to it and open the current file in Marked with a keystroke. (That&rsquo;s currently in my fork of the repo maintained by Kotfu, but there&rsquo;s a pull request.) I also&hellip;",
		"keywords": ["cycle","handler","apple","automatic","bbedit","criticmarkup","kotfu","kramdown","latex","markdown","marked","marsedit","mathjax","multimarkdown","pandoc","people","preview","scrivener","since","store","twitter","updates","ability","above","activating","active","added","affected","affects","allow","anyone","assign","automatically","balancing","because","between","beyond","bigger","billing","blocks","bonus","boost","bracket","brief","building","certain","characters","check","closer","collecting","color","command","commands","complaining","configuration","confusion","contrast","convert","couple","covers","creating","curly","custom","dedicate","dedicating","default","delimeters","depending","detail","determined","developed","disable","disappearing","doesn","dollar","dozen","elements","endless","engaged","enough","equations","escape","especially","example","feature","features","finally","finishing","first","fixes","focus","folder","fonts","foreground","formatting","found","frequent","generated","going","growing","guaranteed","habit","handle","handler","happen","happened","happens","having","hellip","holding","homepage","hotkey","hyper","images","imagine","improved","improvements","included","includes","including","incremental","inflate","inserting","instinct","issues","judge","justified","keeping","keystroke","later","light","likely","maintained","makes","mdash","micro","minor","modern","modes","mouth","normal","normalizes","notes","numbers","oddly","offer","often","opening","opens","opportune","options","paragraph","parameter","passed","paste","pending","people","platforms","posts","potential","practices","preference","press","preview","previewing","previously","processor","processors","project","projects","raises","raising","rarely","rather","readability","realized","recap","recommend","refresh","release","releases","releasing","remains","rendering","requires","research","revising","rsquo","running","sales","schedule","scheme","script","seems","selected","shipped","signs","single","software","solved","sooner","standard"]
	},{
		"title": "KeyKey Typing Tutor: improve your typing skills and learn new keyboard layouts",
		"url": "/2018/05/24/keykey-typing-tutor-improve-your-typing-skills-and-learn-colemak-or-dvorak-layouts/",
		"tags": ["learning","sponsor"],
		"date": "May 24<span>th</span>, 2018",
		"ts": "1527159600",
		"summary": "Thanks to KeyKey for sponsoring BrettTerpstra.com this week! KeyKey is a minimalistic touch typing tutor for Mac. It&rsquo;s suitable for beginners who want to learn basic touch typing skills, as well as for advanced users seeking to master alternative layouts like COLEMAK or DVORAK. Touch typing is not about key arrangement, as you might believe. It&rsquo;s about training your muscle memory, making your fingers remember the micro motions unique to each language. KeyKey knows the most popular letter combinations and words of your native language and utilizes them in lesson generation. Letter combinations \"the\", \"tea\", \"ate\", \"to\" are examples of natural micro motions with 4 most popular English letters. That’s why the first lesson starts with varied combinations of these letters: Lessons are presented in several languages, including English, Spanish, German and French, along with the popular layouts for these languages: QWERTY, COLEMAK, DVORAK, AZERTY, QWERTZ (Swiss) and BÉPO. Lessons can be changed both automatically and manually and you can add punctuation marks, capitalization, and numbers to each of them. If you are ready to master the art of typing without typos while never looking at your keyboard, get KeyKey on the App Store today. Learn more about all of KeyKey&rsquo;s features at the KeyKey Typing Tutor website",
		"keywords": ["keykey","lesson","tutor","typing","azerty","brettterpstra","colemak","dvorak","english","french","german","keykey","learn","lessons","letter","qwerty","qwertz","spanish","store","swiss","thanks","touch","training","tutor","typing","advanced","apple","arrangement","automatically","basic","beginners","believe","brettterpstra","campaign","capitalization","changed","class","combinations","examples","features","figcaption","figure","fingers","first","generation","height","https","image","including","itunes","keyboard","keykey","knows","language","languages","layouts","ldquo","learn","lesson","lessons","letter","letters","loading","looking","making","manually","marks","master","media","medium","memory","micro","minimalistic","motions","muscle","native","natural","ninja","nofollow","noscript","numbers","original","picture","popular","practice","presented","programmers","programming","punctuation","rdquo","ready","remember","rsquo","seeking","separate","several","skills","source","sponsoring","sponsorship","srcset","starts","suitable","title","today","touch","training","tutor","typing","typos","unique","uploads","users","utilizes","varied","website","while","width","words"]
	},{
		"title": "Dimpapers - Dimspirations for your Desktop",
		"url": "/2018/05/22/dimpapers-dimspirations-for-your-desktop/",
		"tags": ["dimspirations","wallpaper"],
		"date": "May 22<span>nd</span>, 2018",
		"ts": "1526997600",
		"summary": "I don&rsquo;t know what it is, but inspirational memes (and office posters) make me feel sad. Depressed. Sometimes annoyed or downright angry. Demotivational versions of the same, though, have always brought me joy. I don&rsquo;t wallow in sadness or revel in insulting others, but the humor of them brightens my day. It reminds me that not everyone is simple enough to be inspired by a non-contextual quote or cute kitten, and that gives me hope. When I was a younger man, I loved the Demotivators catalog (soon after, despair.com, but I got physical catalogs in the mail back then), and began slowly and quietly replacing all the posters around the office of my first real job with sarcastic versions. The only people who noticed were ones who took the same joy in them that I did, and all of them were still in place when I quit. Fast forward a decade and I&rsquo;ve started creating \"Dimspirations.\" I have over a hundred of them now. Some better than others, obviously, but I&rsquo;ll take some credit for perseverance. You can see the lot by checking the #dimspirations hashtag on Instagram, at least until someone else starts using it and pollutes that stream. I use the same hashtag on Twitter and Facebook, and you can follow a hashtag on any of these services if you&rsquo;d like to see more as they come out. I&rsquo;ve taken a few of my favorites and created wallpaper versions of them. High res in both 16:9 and 4:3 versions. Do with them what you will, but I&rsquo;d ask that you leave the \"#dimspirations\" tag on them and give credit where you feel credit is due. I hope someday to find a way to sell these for actual money, despite giving a bunch of high-res versions away. Printing and shipping is a headache, though, so don&rsquo;t hold your breath for too long. You can download them all in a zip file below, or from the wallpaper page in the \"other stuff\" section of this site. (Where miscellaneous downloads and broken experiments go. It&rsquo;s basically the messy attic of BrettTerpstra.com.) If these offend your sensibilities, then they&rsquo;re not for you. Just know that they make some of us feel better than your \"hang in there\" poster ever will. Dimpapers v2.5 Download Dimpapers v2.5 Dimspirations for your Desktop Published 05/19/18. Updated 04/11/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["demotivators","brettterpstra","changelog","demotivational","demotivators","depressed","desktop","dimpapers","dimspirations","donate","download","facebook","instagram","printing","published","sometimes","twitter","updated","where","angry","annoyed","attic","began","below","breath","brightens","broken","brought","bunch","catalog","catalogs","checking","contextual","created","creating","credit","decade","despair","dimspirations","download","downloads","downright","enough","everyone","experiments","favorites","first","gives","giving","hashtag","headache","hellip","humor","hundred","inspirational","inspired","insulting","kitten","leave","loved","memes","messy","miscellaneous","money","noticed","offend","office","others","people","perseverance","physical","pollutes","poster","posters","quietly","quote","reminds","replacing","revel","rsquo","sadness","sarcastic","section","sensibilities","services","shipping","simple","slowly","someday","started","starts","stream","stuff","taken","using","versions","wallow","wallpaper","where","younger"]
	},{
		"title": "VidWipe - Delete 'em all",
		"url": "/2018/05/21/vidwipe-delete-em-all/",
		"tags": ["bookmarklet","video"],
		"date": "May 21<span>st</span>, 2018",
		"ts": "1526907600",
		"summary": "Ok, so KillZapper was kind of cool in the way it let you target specific elements, but after running into issues on sites like CNN where I couldn&rsquo;t easily control the click handlers and determine parent elements, I decided to just make this simpler. Click this bookmarklet to just kill all iframes and HTML5 video elements on the page without prejudice. You need to wait until a video player has loaded before it will work, and a lot of sites use lazy loading on video so it isn&rsquo;t loaded in the DOM until the video is ready to play. But really, the bookmarklet is designed for killing annoying autoplay videos, so it&rsquo;s generally useful after the video has already started playing anyway. As a side note, in this era of HTML5 video players, it&rsquo;s possible to just disable autoplay in many cases. Here&rsquo;s the new bookmarklet. A simpler version that just targets all the iframes and video elements. We&rsquo;ll call it \"VidWipe\" as a new bookmarklet independent of KillZapper. This is all it does: Here&rsquo;s a second version that pauses all video instead of removing the elements. It does not work with iframes embeds",
		"keywords": ["autoplay","chrome","firefox","iframe","safari","video","click","killzapper","vidpause","vidwipe","annoying","anyway","autoplay","before","bookmarklet","click","control","couldn","decided","designed","disable","easily","elements","embeds","generally","handlers","iframes","independent","issues","killing","loaded","loading","parent","pauses","player","players","playing","possible","prejudice","ready","removing","rsquo","running","second","simpler","sites","specific","started","target","targets","useful","version","video","videos","where"]
	},{
		"title": "KillZapper - Click to Kill web annoyances",
		"url": "/2018/05/18/killzapper-click-to-kill-web-annoyances/",
		"tags": ["bookmarklet","browser","video"],
		"date": "May 18<span>th</span>, 2018",
		"ts": "1526666400",
		"summary": "I whipped up a quick bookmarklet this morning that allows you to immediately remove anything on a web page that annoys you. This was inspired by a question from Patrick Ford and that was enforced by my own annoyance with the autoplay videos on Macworld.com that follow you down the page. I love you, Macworld, but those are seriously annoying. There are extensions that do this, but this was a simple solution. Click the bookmarklet in the menubar, then click anything on the page. Once you click (or hit a key), it turns off, so you don&rsquo;t risk deleting anything else. It specifically targets the tags , , , and , and . That should cover the majority of annoyances. The elements only disappear until you reload the page. It&rsquo;s just a temporary fix to get rid of annoying ads and videos while you spend time reading a page. Instead of running away in disgust, you can just take matters into your own hands. Unlike Bullseye, this one just uses pure JavaScript with no jQuery, so you don&rsquo;t have to wait for a double-load or risk a second cross-site exception/protocol mismatch. It&rsquo;s hosted on my https cloudfront instance, so it should load fine on any site. Tested in Safari, Chrome, and Firefox. Drag the button below to your menu bar to install, then just click it to start KillZapper, click the annoyance, and presto&hellip; If your Chromium browser doesn&rsquo;t allow bookmarklets (like Arc), download the KillZapper extension version and follow the instructions here",
		"keywords": ["autoplay","chrome","click","firefox","safari","video","bullseye","chrome","chromium","click","firefox","javascript","killzapper","macworld","patrick","safari","tested","unlike","allow","allows","annoyance","annoyances","annoying","annoys","autoplay","below","bookmarklet","bookmarklets","browser","button","click","cloudfront","cover","cross","deleting","disappear","disgust","doesn","double","download","elements","enforced","exception","extension","extensions","hands","hellip","hosted","https","inspired","install","instance","instructions","jquery","matters","menubar","mismatch","morning","presto","protocol","quick","reading","reload","remove","rsquo","running","second","seriously","simple","solution","specifically","spend","targets","temporary","turns","version","videos","while","whipped"]
	},{
		"title": "Web Excursions for May 18, 2018",
		"url": "/2018/05/18/web-excursions-for-may-18-2018/",
		"tags": ["bookmarks","scripting"],
		"date": "May 18<span>th</span>, 2018",
		"ts": "1526648400",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. You’re Missing Out on a Better Mac Terminal Experience A post from Owen Caulfield with a bunch of great tips for using Hyper, a CSS/HTML-based Terminal alternative. I&rsquo;m still going to be using iTerm, but this stuff looks like fun. Sir Winston - MacOS Customization Script Generator A MacOS customization script generator. Choose the applications and settings you want and get a custom script to automate the entire setup process. After 5 years and $3M, here&rsquo;s everything we&rsquo;ve learned from building Ghost From Kickstarter to a successful business model, the story behind Ghost&rsquo;s business model is a heartening read. CheatSheet - Know your short cuts I used to appreciate KeyCue when learning keyboard shortcuts for an app, but it hasn&rsquo;t worked for me for quite a while now. CheatSheet does the same thing flawlessly, and for free. Just hold the ⌘-Key down for a couple seconds to get a popup with a list of all active short cuts of the current application (including custom shortcuts assigned to Services and menu items). I recommend setting it to a long__ delay, as you&rsquo;ll quickly realize how much you hold down the Command key when pondering what to do next&hellip; Retrobatch Public Beta From the creator of Acorn, a node based batch image processor. Think Audio Hijack for photo manipulation. For years, people have wanted me to add batch processing of some kind to Acorn &hellip; But to do it right, it would need to be a new app. And then sometime late last summer, I decided it was time and I started working on Retrobatch",
		"keywords": ["ghost","hyper","retrobatch","terminal","acorn","audio","caulfield","cheatsheet","choose","cleanmymac","command","customization","experience","generator","ghost","hijack","hyper","keycue","kickstarter","macos","missing","public","retrobatch","script","services","terminal","think","winston","absolute","active","applications","appreciate","archives","assigned","automate","based","batch","behind","blockquote","border","brettterpstra","brought","building","bunch","business","caulfieldowen","class","couple","creator","custom","customization","decided","display","entire","everything","excursions","experience","flawlessly","generator","ghost","going","great","heartening","height","hellip","hidden","https","iterm","image","impactradius","including","items","keyboard","learned","learning","loading","looks","macpaw","manipulation","media","mediaatelier","medium","missing","model","noscript","original","partnership","people","photo","picture","pondering","popup","position","process","processing","processor","public","quickly","realize","recommend","retrobatch","right","rsquo","script","seconds","setting","settings","setup","shapeof","short","shortcuts","sirwinston","sometime","source","speed","srcset","started","story","stuff","style","successful","summer","terminal","title","tools","uploads","using","visibility","wanted","while","width","worked","working","years","youre"]
	},{
		"title": "A few keyboard helpers for AppleScript",
		"url": "/2018/05/15/a-few-keyboard-helpers-for-applescript/",
		"tags": ["applescript","keyboard","scripting","shortcuts"],
		"date": "May 15<span>th</span>, 2018",
		"ts": "1526411520",
		"summary": "I use a bit of UI scripting to automate some of the screenshots used in Marked marketing and documentation. One (significant) part of that scripting is sending keyboard commands, so I&rsquo;ve built a few routines to help out. The script includes 3 different routines. The base is . It takes a single key, with modifiers either typed out or defined using DefaultKeyBindings-style shortcuts, where \"$\" is Shift, \"~\" is Option, \"&#2C6;\" is Ctrl, and \"@\" is Command. So you can send either \"cmd i\" or \"@i\". Named keys are recognized, so you can also use \"shift opt left\" to hit ⇧⌥←. When using named keys, you need to either have a space after shortcuts (e.g. \"$~ left\"), or use the string versions, as in the previous example. is a shortcut for sending a batch of s at once, e.g. to send Command-N followed by Shift-Option-Command-S. The second parameter is the delay between keys, 0 for none. takes a string and a delay and types each character out, simulating keyboard typing. This command doesn&rsquo;t allow modifiers, just characters, and the modifier shortcuts are typed as characters. Running will simulate typing the sentence out with a very brief delay between each keystroke. I&rsquo;m just sharing these in case they&rsquo;re of use in your own scripting. If I get around to it, I&rsquo;ll share more of my routines for window manipulation, menu clicking, and screen capture. I&rsquo;m certain I can name several readers who will know of more elegant ways to accomplish all of these. I&rsquo;d be delighted to update with your genius if you share it",
		"keywords": ["codes","typing","applescript","command","control","defaultkeybindings","events","example","examples","finder","marked","named","running","shift","shortcuts","system","textedit","trigger","usage","activate","allow","applescript","arrow","astid","automate","batch","between","brettterpstra","brief","built","calling","capslock","capture","certain","character","characters","class","clicking","codes","command","commands","contains","control","convert","create","decent","defined","delighted","delimiters","different","doesn","either","elegant","enter","errmsg","errnum","error","errors","escape","example","field","figcaption","figure","float","focus","focused","followed","genius","github","githubusercontent","going","height","highlight","highlighter","hotkey","https","image","includes","keycmd","keyseq","keytype","keyboard","keycode","keystroke","keystrokes","language","ldquo","loading","lowercase","manipulation","marked","marketing","maybe","media","modifers","modifier","modifiers","named","noscript","original","output","parameter","pgdown","picture","plaintext","process","property","punctuation","quoted","rdquo","readers","recognized","repeat","return","right","robotkeys","rouge","routines","rsquo","screen","screenshots","script","scripting","second","sending","sentence","separated","sequence","several","share","sharing","shell","shift","shortcut","shortcuts","significant","simulate","simulated","simulating","single","source","space","speed","srcset","string","strong","style","takes","testing","title","trigger","ttscoff","typed","types","typing","uploads","using","versions","whatever","where","width","window","words"]
	},{
		"title": "Fellow Prismo: AeroPress Espresso(ish)",
		"url": "/2018/05/14/fellow-prismo-aeropress-espresso-ish/",
		"tags": ["coffee","fitness"],
		"date": "May 14<span>th</span>, 2018",
		"ts": "1526325360",
		"summary": "Very recently I discovered the Fellow \"Prismo\" (via Tools & Toys). It&rsquo;s an attachment for the Aerobie AeroPress that makes espresso. Well, not technically espresso, but it has all of my favorite qualities of espresso and beats the \"Doppio\" order at Starbucks for quality and flavor1. Ever since I discovered it, my coffee consumption has increased significantly (and possibly problematically), but it&rsquo;s so good I can&rsquo;t stop using it. It&rsquo;s sealed with a pressure-actuated nozzle, so you can brew upright without any drip. Which is kind of cool, though I have the inverted technique so ground into my muscle memory that I forget half the time. It also uses a built-in metal filter, so if you haven&rsquo;t already , you can leave the paper filters behind. You start with super-fine coffee grounds. I&rsquo;ve gotten the best results with the grind that&rsquo;s so fine that it clogs up the chute to the reservoir of my 12-setting grinder. Use 20g of grounds in the AeroPress. Given I usually brew with 15g, this means I&rsquo;m now going through beans faster, but on the plus side, I&rsquo;ve found that the taste is so strong that I can use less expensive beans (local roasters that sell for about half the price per pound vs. Thrasher, my usual beans of choice). So it&rsquo;s evening out, price-wise. I can even fit a full pound of ground coffee into my 32 Oz Airscape. (Which, admittedly, I also discovered via Tools & Toys. Really, you should probably just be reading that.) You want water at a full boil. 212&deg; when it hits the grounds. You only need 50-60mL, anything more than that degrades the flavor. Stir well. The directions specify a one-minute brew (including stir time). I&rsquo;ve experimented with one, two, and three minute steeps. I&rsquo;ve achieved some great results with a two-minute brew, but one minute is enough and anything more than two changes the flavor in undesirable ways. Side tip: My Zojirushi water boiler has lasted almost a decade now, and I can have water at a full boil any time in about a minute and a half (I keep it at 208&deg; most of the time). I finally had to replace the top assembly after some chipping/corrosion of the plastic seal, but that&rsquo;s $30 and it&rsquo;s good as new, hopefully for another 10 years. I&rsquo;ve experimented with using additional grounds, either for a stronger single or to attempt to pull a double, but the 20g/50mL ratio definitely yields the best results. Pressing takes a bit&hellip;",
		"keywords": ["aeropress","coffee","espresso","fellow","prismo","aditi","aeropress","aerobie","aeropress","airscape","doppio","fellow","ieflvm","moisten","pressing","presto","prismo","remove","starbucks","thrasher","tools","zojirushi","achieve","achieved","actuated","admittedly","almost","another","assembly","attached","attachment","awesome","backlink","basics","beans","beats","because","before","behind","between","bitterness","blockquote","bloom","boiler","brettterpstra","brewing","built","bulkier","changes","chipping","chocolate","choice","chute","class","cleaning","cling","clogs","coffee","coffeereview","comes","cools","corrosion","couple","crema","damage","decade","definitely","degrades","delicious","delightful","demitasse","different","directions","directly","discovered","doing","doppio","double","dries","effort","either","endnotes","enough","espresso","evening","expect","expensive","experimented","faster","favorite","fellowproducts","filter","filters","finally","fittingly","flavor","fnref","footnote","footnotes","forget","fostered","found","frothier","funnel","glass","going","gotten","great","grind","grinder","ground","guide","guides","haven","height","hesitant","hexagonal","hopefully","https","image","including","increased","inverted","lasted","latte","layer","ldquo","leave","likely","loading","local","loving","machine","makes","media","medium","memory","metal","minute","muscle","named","names","nerdery","nonessential","noscript","noteref","nozzle","original","paper","parlance","paste","perfectly","picture","plastic","possibly","pound","press","pressing","pressure","price","prismo","problematically","process","prying","pullquote","pungency","puppies","qualities","quality","quick","rgqvwe","rapping","ratio","rdquo","reading","recently","recipe","regular","replace","required","reservoir","results","reversefootnote","right","rinse","roast","roasters","roasts","rsquo","scale","sealed","seconds","setting","shortened","significantly","since","single","sized","slightly","slower","smooth","sound","source","specify","spent"]
	},{
		"title": "Marked 2.5.11 is live",
		"url": "/2018/05/10/marked-2-dot-5-11-is-live/",
		"tags": ["appstore","macappstore","macos","markdown","marked","support"],
		"date": "May 10<span>th</span>, 2018",
		"ts": "1525960800",
		"summary": "Marked 2.5.11 has (finally) been birthed, available via automatic update for the direct version, Mac App Store update, and on Setapp. This is a big release, and has been in development for over a year1. Long pregnancy, but this release includes over 30 improvements/fixes, as well as a slew of new capabilities (full changelog). It&rsquo;s the fastest, most powerful release of Marked 2 yet. I&rsquo;d be grateful if you left a review on the MAS (or updated one)! Side note: This pregnancy metaphor gets weird fast. It sounds like there might be something wrong with the child, but consider it a new step in human evolution. A superhuman that&rsquo;s really good at multitasking and Markdown rendering. I apologize in advance, please bear with me. Support for IA Writer file include syntax ( on its own line, with automatic file type detection for code, tables, text/markdown, and images) Embed CSV files using any of Marked&rsquo;s supported file include syntaxes and have them instantly converted into Markdown tables in the Preview (and also in the Markdown export) A new Edward Tufte inspired preview style: Ink (replaces Antique, which was starting to look, I dunno, dated?2) Fast forward 9 months and the baby is finally born. It&rsquo;s grown the following extra limbs in utero: New and updated app compatibility: MarsEdit 4 Scrivener 3 Highland (and updated Fountain.io support) TextPack (compressed TextBundles) handling Full screen mode for table of contents, fixed to left (automatically enabled when switching to full screen, and can be manually switched from a button on ⌘T TOC popup) I&rsquo;ll need to document this one further, but there&rsquo;s also a new method in the URL handler that lets you add a new Custom Style to Marked via a link (). Just pass a name and the url encoded CSS and a new file is generated and added to the Custom Style menu automatically. This should make sharing styles even easier. I&rsquo;ll be sharing an updated StyleStealer bookmarklet very soon to allow a one-click way to duplicate styles from your own sites into Marked for previewing. Also, the multi-lingual Spelling and Grammar add-on (detects language per-paragraph, so you can use it in documents containing multiple languages) is no longer an add-on. Due to complications with providing parity between the Mac App Store and direct versions, I&rsquo;m just including it for all users. If you paid the $1.99 for it and now feel robbed, I can refund your&hellip;",
		"keywords": ["markdown","marked","preview","antique","aside","bitwriter","bitwriter","criticmarkup","custom","edited","edward","embed","emoji","features","fixes","fountain","grammar","handler","highland","improvements","including","leanpub","markdown","marked","markup","marsedit","mathjax","multiple","original","preview","scrivener","setapp","spelling","store","style","stylestealer","support","textbundles","textpack","thanks","tufte","viewer","writer","added","addstyle","allow","allowing","apologies","apologize","apple","automatic","automatically","available","backlink","based","because","between","birthed","bookmarklet","break","brettterpstra","button","capabilities","changelog","child","class","click","coming","comments","compatibility","complications","compressed","consider","containing","contents","converted","count","couple","cutting","dated","dedicated","delayed","design","detection","detects","development","dialog","direct","discontinuing","divorce","document","documents","doulas","dozen","dunno","duplicate","easier","enabled","encoded","endnotes","entirely","everyone","evolution","expedited","export","extra","fastest","feature","features","filename","files","finally","fixed","fixes","fixing","flexible","fnref","footnote","footnotes","generated","grateful","grown","handler","handling","height","hellip","highlighter","https","human","icons","image","images","improved","improvements","improving","included","includes","including","incremental","inspired","instantly","internal","issues","itunes","language","languages","latest","ldquo","library","limbs","lingual","links","loading","longer","making","manually","markdown","marked","markedicon","media","medical","metadata","metaphor","method","modern","multi","multiple","multitasking","noscript","noteref","offered","original","pages","paragraph","parity","picture","plaintext","popup","powerful","pregnancy","presentation","preview","previewing","projects","properly","providing","putting","rapidly","rdquo","refund","release","releasing","rendering","replaces","reports","resolved","reversefootnote","robbed","rouge","rsquo","sacred","screen","setapp"]
	},{
		"title": "The new PDFpen 10!",
		"url": "/2018/05/10/pdfpen-10/",
		"tags": ["sponsor"],
		"date": "May 10<span>th</span>, 2018",
		"ts": "1525953600",
		"summary": "Thanks to PDFpen 10 for sponsoring BrettTerpstra.com this week! PDFpenPro 10 also adds batch OCR support for making an entire collection of scanned PDFs searchable. Now it&rsquo;s easier than ever to go paperless. And for PDF editing on the go, Smile also offers PDFpen for iPad & iPhone, allowing a seamless PDF workflow, even when you&rsquo;re away from your Mac. Learn more about PDFpen at smilesoftware.com",
		"keywords": ["macos","pdfpen","smile","software","brettterpstra","custom","learn","library","magnification","pdfpen","pdfpenpro","smile","thanks","watermarks","allowing","batch","collection","color","document","easier","editing","entire","footers","headers","iphone","images","improved","increasing","items","making","offers","palette","paperless","precision","rsquo","scanned","seamless","searchable","smilesoftware","sponsoring","support","ultimate","workflow"]
	},{
		"title": "Web Excursions for May 09, 2018",
		"url": "/2018/05/09/web-excursions-for-may-09-2018/",
		"tags": ["automator","bookmarks"],
		"date": "May 9<span>th</span>, 2018",
		"ts": "1525874400",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. #OpenWeb An RSS-reader-ready collection of independent publishers. I&rsquo;ll be honest, I discovered this list when I was notified I was on it, but was pleasantly surprised by the collection. If you&rsquo;re not using an RSS reader to take back control of your online news, download the OPML file and import it into something like Reeder 3, ReadKit, or Feedbin! 86% of Passwords are Terrible (and Other Statistics) As a long-long-time 1Password user, having 20-character gibberish passwords unique to every account is easy for me. But at the rate that compromises are happening, having a strong, unique password is only half the battle. And you don&rsquo;t even get to fight the other half of it&hellip; but do your half and bulk up your passwords. CatchUp - Keep in Touch A free app with no ads, CatchUp simply reminds you to keep in touch with the people you want to. Add a contact, set an interval, and CatchUp reminds you to reach out. This is ideal for people like me who can go years without hearing from someone and still consider them great friends, but who learn in the harshest ways that not everyone else reacts the same way. Gitea A self-hosted Git platform for running your own local GitHub-style repository manager. This project is a fork of Gogs with an apparently more group-focused approach to project maintenance. Automation Orchard Rosemary Orchard is an automation wiz. She&rsquo;s put together Automation Orchard as a central repository for automation articles from across the web. A great stopping place for automation nerds, whether you&rsquo;re looking to create workflows on your iOS device or automate your home. It&rsquo;s all here",
		"keywords": ["github","links","passwords","automation","catchup","check","feedbin","github","gitea","openweb","orchard","password","passwords","readkit","reeder","rosemary","setapp","statistics","terrible","touch","access","account","across","apparently","approach","articles","automate","automation","battle","brought","central","character","collection","compromises","consider","contact","control","create","device","discovered","download","everyone","excursions","fight","focused","friends","gibberish","great","group","happening","harshest","having","hearing","hellip","honest","hosted","hundreds","ideal","import","independent","interval","learn","local","looking","maintenance","manager","monthly","nerds","notified","online","partnership","password","passwords","people","platform","pleasantly","project","publishers","reach","reacts","reader","ready","reminds","repository","rsquo","running","simply","stopping","strong","style","subscription","surprised","today","together","touch","unique","using","workflows","years"]
	},{
		"title": "A drag and drop PodTagger for easy MP3 podcast tagging",
		"url": "/2018/05/08/a-drag-and-drop-podtagger-for-easy-mp3-podcast-tagging/",
		"tags": ["podcasting","podtagger","scripting"],
		"date": "May 8<span>th</span>, 2018",
		"ts": "1525795800",
		"summary": "Over the weekend I made some updates to PodTagger. This is one project that I&rsquo;m not certain anybody else is using, but it&rsquo;s one I&rsquo;m finding really useful. Recap: PodTagger lets you set up default tags for your podcast(s) and then add custom fields to Markdown show notes to automatically tag your MP3 files for upload. Title, summary, description, artist, network, image&hellip; all ready to go. I use a TextExpander fill-in to include the headers in my show notes file, so finalizing my podcast files is just a quick Terminal command. I wanted drag and drop, though, so I&rsquo;ve updated the downloads with an app version you can keep in your Dock and drag to (or call with Alfred/LaunchBar). It&rsquo;s just a simple wrapper made with Platypus and some changes to the script to make the output nicer. As a bonus, the app version has embedded, so there are no external dependencies. It still uses a YAML configuration file, now located in ",
		"keywords": ["podcast","alfred","launchbar","markdown","platypus","podtagger","recap","terminal","textexpander","title","anybody","artist","automatically","bonus","certain","changelog","changes","command","configuration","custom","default","dependencies","description","details","downloads","embedded","external","fields","files","finalizing","finding","headers","hellip","image","located","network","nicer","notes","output","podcast","project","quick","ready","rsquo","script","simple","summary","updated","updates","upload","useful","using","version","wanted","weekend","wrapper"]
	},{
		"title": "Shell Tricks: quick start scripts",
		"url": "/2018/05/07/shell-tricks-quick-start-scripts/",
		"tags": ["scripting","shell","terminal"],
		"date": "May 7<span>th</span>, 2018",
		"ts": "1525701600",
		"summary": "Here&rsquo;s another little Bash function. It makes it possible to create a new script in one command, creating the file with shebang, making it executable, and opening it in your editor. Just run to create a new ruby script with a shebang. It also recognizes Python, Perl, and bash extensions, add more as needed. You can also create a directory with \"skeleton\" scripts. If you have a list of includes that you always use in your shell scripts, add a file to that directory (e.g. or ). By default that directory is ~/.newscript_defaults, but you can modify it in the config section. As an example, you might have a file that sources a file of common functions you use in bash scripts, or an file that includes contains to be appended after the shebang. Just add this to ~/.bash_profile, or wherever you source your shell functions from. You&rsquo;ll need to edit your script location in the scriptdir variable at the top",
		"keywords": ["scripting","shell","python","another","appended","command","common","config","contains","create","creating","default","defaults","directory","editor","example","executable","extensions","function","functions","includes","little","location","makes","making","modify","needed","newscript","opening","possible","profile","recognizes","rsquo","script","scriptdir","scripts","section","shebang","shell","skeleton","source","sources","variable","wherever"]
	},{
		"title": "Shell Tricks: what to do when you can't do internet",
		"url": "/2018/05/04/shell-tricks-what-to-do-when-you-cant-do-internet/",
		"tags": ["notifications","scripting","sleep","terminal","tricks"],
		"date": "May 4<span>th</span>, 2018",
		"ts": "1525447380",
		"summary": "Ok, so your home internet connection is down. Well, not right now, obviously. But your ISP has you on a waiting list for a service call, and you&rsquo;re thinking you&rsquo;ll just spend some time cleaning your office today. You&rsquo;d love to know if your connection came back up in the meantime, though, right? This trick is an evolution of one from OSXDaily. The idea is to just keep pinging a DNS server until we get a response, and then send an alert. For my working environment, I wanted something that would ensure I got the message. Here&rsquo;s the base function, (I&rsquo;m Down!): I&rsquo;m pinging the new 1.1.1.1 DNS Resolver. You could ping a website, but pinging the DNS resolver directly is faster. It won&rsquo;t work if the connection problem is at the DNS level, but I&rsquo;m only concerned with knowing when my modem is back online. The command in this function uses 2 flags, and . The is how long to wait for a response. We just want quick pings, so 1 second is enough. The is how many sweeps to do in a pass (with no it will just keep pinging forever), meaning we&rsquo;ll just ping once and then sleep for 10 seconds before we try again. When it gets a successful ping, it moves on to the next step: notifying&hellip; I made a really annoying loop for this. If the machine you&rsquo;re running it on has sound, this is really effective. Assuming you&rsquo;re around to shut it off, I suppose, because it would drive everyone else nuts and they&rsquo;d end up smashing your speakers. But if you&rsquo;re working around the house and want to know, turn up your volume and this will do the trick. It takes one or more arguments, each being a quoted phrase to speak. It will enter into an infinite loop of playing a ding (the system \"Ping\" sound) and then speaking each phrase supplied to it (one at a time, in succession, or just one over and over if there&rsquo;s only one argument) until you end it with CTRL-C. Side note: If you want a female voice, changing to works well. I miss the old voices&hellip; there used to be a bunch of funky voice modulations like \"Bells\" and creepy robot voices. Oh well. It will cycle through these phrases, ad nauseam. It will get your attention, and those who share your space will hail you as a hero of great cleverness. That&rsquo;s what those dirty looks mean, I swear. If you have other means of getting notifications, such as a home automation system that can blink lights via script (I do :P), great. One option is&hellip;",
		"keywords": ["internet","android","apple","applications","assuming","bells","create","insistent","osxdaily","pushover","resolver","token","watch","account","again","alert","alerts","allows","annoying","argument","arguments","automation","because","before","blink","bunch","called","changing","cleaning","cleverness","click","comes","command","convenience","converted","create","creepy","cycle","dashboard","device","different","directly","dirty","displayed","drive","effective","encode","encoded","enough","enter","entirely","environment","everyone","evolution","faster","female","flags","forever","function","funky","getting","great","happened","hellip","house","iphone","infinite","install","internet","knowing","languages","level","libraries","lights","limit","looks","machine","meaning","meantime","message","minor","modem","modulations","moves","nagging","nauseam","needs","notification","notifications","notifying","office","online","passed","percent","phone","phrase","phrases","pinging","pings","playing","problem","prominently","quick","quoted","randomized","replace","resolver","response","right","robot","rsquo","running","script","second","seconds","selection","server","service","share","simple","sleep","smashing","sound","space","speak","speakers","speaking","spend","strings","substituted","successful","succession","supplied","suppose","swear","sweeps","system","takes","thinking","through","today","token","trick","under","various","voice","voices","volume","waiting","wanted","watch","website","welcome","working","works"]
	},{
		"title": "Namecheap honors World Press Freedom Day",
		"url": "/2018/05/03/namecheap-honors-world-press-freedom-day/",
		"tags": ["hosting","sponsor","support"],
		"date": "May 3<span>rd</span>, 2018",
		"ts": "1525345200",
		"summary": "Thanks to Namecheap for sponsoring BrettTerpstra.com this week! Namecheap Honors World Press Freedom Day With $0.88 .press Domains & 30% Off Stellar Shared Web Hosting Continuing a nearly two decade tradition of supporting digital and social causes important to its millions of customers, Namecheap, one of the world’s largest domain registrars and web hosting companies, salutes all independent journalists, niche bloggers and media around the world who fight to bring important stories to light, sometimes in the face of personal danger. In recognition of today’s 25th World Press Freedom Day, Namecheap is offering all media and aspiring journalists .press domains for only $0.88, a 98% discount. Additionally, .press registry Radix will donate 50% of their revenue from all .press domain name sales in the month of May to the Society of Professional Journalists for their freedom of press initiatives. Namecheap is also offering a special 30% discount on its new Stellar Shared Hosting Package to help new customers get their sites online seamlessly with a year of web hosting for only $17! Namecheap believes freedom of the press is incredibly important to ensure unbiased and legitimate reporting. It allows public figures and governments to be put under scrutiny by media without fear of censorship or retribution. Namecheap has a long tradition of taking a stand and raising awareness for freedom of speech and expression issues. Read about other causes Namecheap supports such as Internet freedom and campaigns like Move Your Domain Day. This year’s World Press Freedom day will take place in Accra, Ghana. Namecheap is committed to superior customer service, as well as providing the best user experience and products for its customers. Visit namecheap.com today to purchase top-level domains starting as low as $0.48, web hosting packages for as little as $2.88 per month and SSL certificates for only $8.88 a year. About .press domains: Because freedom of expression matters! Registries created the .press top level domain to raise awareness, support the work of journalists who give voice to the voiceless and promote a worldwide free press. Build a stronger online identity and tell your story on a stronger platform – register a .press domain name today. Purchase $0.88 .press domain on Namecheap Stellar Shared Hosting 30% Discount on Namecheap &mdash; Use coupon code: STELLAR30",
		"keywords": ["hosting","namecheap","press","registrar","accra","additionally","because","brettterpstra","build","continuing","discount","domain","domains","freedom","ghana","honors","hosting","internet","journalists","namecheap","package","press","professional","radix","registries","stellar","shared","society","stellar","thanks","visit","world","allows","aspiring","awareness","believes","blank","bloggers","brett","brettterpstra","bring","campaign","campaigns","causes","censorship","certificates","class","committed","companies","content","coupon","created","customer","customers","danger","decade","digital","discount","domain","domains","donate","experience","expression","fight","figures","freedom","governments","height","honors","hosting","https","identity","image","important","incredibly","independent","initiatives","issues","journalists","largest","legitimate","level","light","little","loading","matters","mdash","media","medium","millions","namecheap","nearly","niche","nofollow","noscript","offering","online","original","outreach","packages","personal","picture","platform","press","products","promote","providing","public","raise","raising","recognition","register","registrars","registration","registry","reporting","retribution","revenue","sales","salutes","scrutiny","seamlessly","security","service","shared","sites","social","sometimes","source","special","speech","sponsoring","srcset","stand","starting","stellar","stories","story","strong","stronger","superior","support","supporting","supports","taking","terpstra","title","today","tradition","unbiased","under","uploads","voice","voiceless","width","world","worldwide"]
	},{
		"title": "Cardhop 1.1",
		"url": "/2018/05/02/cardhop-1-dot-1/",
		"tags": ["appreview","productivity"],
		"date": "May 2<span>nd</span>, 2018",
		"ts": "1525287600",
		"summary": "I wrote about Cardhop from Flexibits when it was released back in October. Version 1.1 is out with Smart Groups and some great printing features, as well as an array of new supported languages for parsing and formatting. I&rsquo;ll point you to my Macstories writeup&hellip",
		"keywords": ["cardhop","contacts","flexibits","cardhop","flexibits","groups","macstories","smart","version","array","features","formatting","great","hellip","languages","parsing","point","printing","released","rsquo","supported","writeup","wrote"]
	},{
		"title": "Get your Macstock 2018 ticket yet?",
		"url": "/2018/05/02/get-your-macstock-2018-ticket-yet/",
		"tags": ["conference","macstock"],
		"date": "May 2<span>nd</span>, 2018",
		"ts": "1525273200",
		"summary": "Hey, did I mention I&rsquo;m speaking at Macstock in July? Yeah, I did. The speaker lineup is finalized, and it&rsquo;s great. There are a couple of old friends of mine speaking that I&rsquo;m excited to both hear and catch up with: App Camp For Girls founder Jean MacDonald and TUAW alum Kelly Guimont. You can also catch informative and entertaining talks from keynote speaker Bob LeVitus (a.k.a. Dr. Mac), Adam Christianson, Dave Ginsburg, Mike Schmitz, Chuck Joiner, Guy Serle, Tim Robertson, Allison Sheridan, Wally Cherwinski, and, of course, me. Macstock 2018 is happening July 21st and 22nd in Woodstock, IL (near Chicago). I will not be speaking about yoga. I will be talking about tagging, including a deep dive session with all of the nerdery you would expect. You missed the early bird sale. I&rsquo;m not shaming you, I&rsquo;m just saying that if you were thinking about coming, you&rsquo;re soooo late in signing up. But I have compassion, and I got you a coupon code. If you use , you can save $70 off the full price of a weekend pass (which includes meetups and barbecues). Plus, you get to hang out with cool, Apple-loving cats, and for my part, I&rsquo;ll be extra nice to you. Please help Macstock continue to grow. It&rsquo;s already an event I look forward to every year, but there&rsquo;s one thing that would make it better: you. Don&rsquo;t forget, coupon code (all links on this page will apply the code automatically). See you at Macstock! For your inspiration, some of my photos from last year&rsquo;s event&hellip",
		"keywords": ["apple","woodstock","allison","apple","cherwinski","chicago","christianson","chuck","ginsburg","girls","guimont","joiner","kelly","levitus","macdonald","macstock","robertson","schmitz","serle","sheridan","wally","woodstock","apply","automatically","barbecues","catch","coming","compassion","continue","couple","coupon","entertaining","excited","expect","extra","finalized","forget","founder","friends","great","happening","hellip","includes","including","informative","inspiration","keynote","lineup","links","loving","meetups","mention","missed","nerdery","photos","price","rsquo","saying","session","shaming","signing","soooo","speaker","speaking","tagging","talking","talks","thinking","weekend"]
	},{
		"title": "A packing tape label maker hack",
		"url": "/2018/05/01/a-packing-tape-label-maker-hack/",
		"tags": ["hacks","organization","paper","productivity"],
		"date": "May 1<span>st</span>, 2018",
		"ts": "1525183200",
		"summary": "I posted the above picture on social media and got a bunch of questions about it. I don&rsquo;t recall where I learned this, probably some Pinterest life hack thing. Apologies to the un-linked originator (if it&rsquo;s yours, let me know, I will credit you!) The hack is a way to make nifty clear labels using a laser printer and clear packing tape. You get to use your own fonts and you can make them any size you like (up to the width of your packing tape). A laser printer (This only works with black toner, no inkjets) Clear tape (I use Scotch clear packing tape, but I&rsquo;ve also done this with just scotch tape (the stuff in your office supplies drawer) when I label spice jars. You can always cut the size down.) A glass of water Scissors An old credit card for scraping Probably something that needs labeling, but it&rsquo;s enough fun that you might just label doors and tables and cars (\"door,\" \"table,\" and \"car,\" I would assume) It&rsquo;s not terribly complicated, but I made you pictures anyway. Print 100% black text on plain office paper. I messed around a bit with shades of grey, but only 100% black text really works for this. Heavier fonts work better, but only because they&rsquo;re more readable on most surfaces. Put clear tape over it. Smoothly lay down packing tape over the text. If you want margins on the final label, make sure the label is straight with the text. Trim the label. Cut away everything but the final label. Be careful to cut it straight because, as clear as clear tape is, you&rsquo;ll still see the edges after it&rsquo;s stuck on. Soak it in water. Soak it at least long enough to wet the paper all the way through. I haven&rsquo;t seen any issues caused by soaking too long, but you&rsquo;ll definitely have problems if it&rsquo;s not soaked long enough. Scrape the paper off. Start with a credit card to get the paper coming off. Light scraping works fine if the paper is properly soaked. You don&rsquo;t want to scrape off all the adhesive, just separate the wet paper from it. You&rsquo;ll find you have to go at it a few times, as it will look clean while it&rsquo;s wet but once it starts to dry you&rsquo;ll see where you have little bits of white left. Once it&rsquo;s down to just splotches here and there, you can rub it with your finger or scrape with a clean fingernail. Apply. I tend to just&hellip;",
		"keywords": ["apologies","apply","clear","heavier","light","pinterest","print","scissors","scotch","scrape","smoothly","above","adhesive","anyway","assume","because","black","bubbles","bunch","careful","caused","clean","clear","coming","complicated","credit","definitely","doors","drawer","drying","edges","enough","especially","everything","finger","fingernail","fonts","glass","haven","inkjets","issues","label","labeling","labels","laser","learned","linked","little","margins","media","messed","moisture","nearly","needs","nifty","office","original","originator","packing","paper","picture","pictures","posted","printer","problems","properly","questions","readable","recall","removable","rsquo","scotch","scrape","scraping","separate","shades","soaked","soaking","social","spice","splotches","squeegee","starts","stick","straight","strong","stuck","stuff","supplies","surface","surfaces","table","tables","terribly","through","times","toner","using","water","where","while","white","width","works"]
	},{
		"title": "Men's yoga apparel: a Yoga Nerd Review",
		"url": "/2018/04/30/mens-yoga-apparel-a-yoga-nerd-review/",
		"tags": ["apparel","health","personal"],
		"date": "Apr 30<span>th</span>, 2018",
		"ts": "1525096800",
		"summary": "I haven&rsquo;t posted many pictures of late, but I&rsquo;ve really stuck with the yoga thing. I had to add in some more resistance workouts to balance out my \"push\" and \"pull\" muscles, but I&rsquo;m getting&hellip; what do the kids say? Swole? As close to it as I&rsquo;ve ever been, anyway. In the last few months, I&rsquo;ve found a couple of new products I consider worth reviewing, in part because one of them is the culmination of a search that&rsquo;s been ongoing for over a year&hellip; Since I started practicing yoga, I&rsquo;ve wondered why there were no options for male yoga pants that I actually liked. I&rsquo;m sorry, but \"fisherman\" and \"harem\" pants immediately make me say \"do I look like Bruce Lee/Justin Bieber?\" It&rsquo;s rhetorical, obviously. I look like neither. And dressing like one of them would feel like cultural appropriation, and the other like dying a little bit inside. The cut is like tight-ish sweat pants that end right below the knee. I don&rsquo;t know what \"transition\" refers to. Maybe they&rsquo;re halfway between boy shorts and girl leggings. It doesn&rsquo;t matter, these work. Compared to harem pants (or the gym shorts I wore previously), they&rsquo;re fairly form-fitting, which you may have noticed is quite the norm for female yoga apparel. Not getting tripped up by your own clothing is really nice when moving from one pose to another, and especially when moving from one vertical orientation to the other. They cover the knees, avoiding rubber-burn on contact with the mat The fabric doesn&rsquo;t billow or get in the way, but it&rsquo;s also not so tight that any \"anatomical\" issues become problematic The cuffs and waistband stay put, no need to fiddle and adjust after coming out of a salutation A wide waistband and flat drawstring make it more comfortable to lay on one&rsquo;s back It&rsquo;s the right ratio of coverage to breathability so that when the temperature is set for people who wear lycra covering most of their body, you don&rsquo;t get the short end of the deal They don&rsquo;t look like running shorts, because it&rsquo;s hard for me to feel serious when I look like a gym rat One thing that might be worth noting is that they don&rsquo;t provide the \"mystery\" in the groin area that billowy pants or loose shorts do. Do what you will with that information. I&rsquo;m told pants of this style are also great for climbing and bouldering, the latter being a sport I&rsquo;ve been&hellip;",
		"keywords": ["pants","bella","bieber","brett","bruce","canvas","closing","compared","corpse","dragonfly","earth","express","fortunately","justin","maybe","pants","performance","shavasana","since","swole","terpstra","abilities","adjust","admittedly","altered","amazingly","amount","ample","anatomical","another","anyone","anyway","apparel","apparently","appropriation","avoiding","backlink","balance","balances","barefoot","because","bellacanvas","below","benefits","between","billow","billowy","block","bouldering","breathability","brettterpstra","bridge","cheaper","class","classmates","climbing","close","clothing","comfortable","coming","confident","consider","constantly","contact","continued","corpse","couple","cover","coverage","covering","crazy","cuffed","cuffs","culmination","cultural","doesn","drawstring","dressing","drops","durable","dying","endnotes","enough","especially","evidence","expected","experiences","exposed","fabric","fairly","female","fiddle","first","fisherman","fitting","fnref","footnote","footnotes","found","frame","garment","getting","great","groin","halfway","handy","harem","haven","height","hellip","https","ideal","image","information","inside","issues","knees","latter","ldquo","leave","leggings","liked","little","loading","looking","loose","loving","lycra","lying","makes","mdash","media","mentioned","moving","muscles","myself","mystery","neither","nervous","noscript","noteref","noticed","noting","ongoing","options","orientation","original","pants","people","perception","picture","pictures","posted","posture","practicing","previously","price","problematic","products","pronounced","psychological","purchased","qdyjjk","quality","ratio","rdquo","reasonable","recall","refers","regularly","report","requires","resistance","reversefootnote","reviewing","rhetorical","right","roundup","rsquo","rthpants","rubber","running","salutation","search","serious","short","shorts","shoulder","showing","shrink","sizings","snowinapril","sorry","source","sport","srcset","standard","started","stick","stretch","strong"]
	},{
		"title": "The new PDFpen 10!",
		"url": "/2018/04/26/the-new-pdfpen-10/",
		"tags": ["sponsor"],
		"date": "Apr 26<span>th</span>, 2018",
		"ts": "1524766140",
		"summary": "Thanks to PDFpen 10 for sponsoring BrettTerpstra.com this week! PDFpen 10 adds watermarks, custom headers and footers, an improved color palette, and a new precision edit tool. You can move images around without increasing the size of your document. You can magnify library items. PDFpenPro 10 adds batch OCR support for making an entire collection of scanned PDFs searchable, making it easier than ever to go paperless. Don&rsquo;t forget, Smile also offers PDFpen for iPad & iPhone, allowing a seamless PDF workflow, even when you&rsquo;re away from your Mac. Learn more about PDFpen at smilesoftware.com",
		"keywords": ["macos","pdfpen","smile","software","brettterpstra","learn","pdfpen","pdfpenpro","smile","thanks","allowing","batch","brand","collection","color","custom","document","easier","editing","entire","footers","forget","headers","iphone","images","improved","increasing","items","library","magnify","making","offers","palette","paperless","precision","rsquo","scanned","seamless","searchable","smilesoftware","sponsoring","support","ultimate","watermarks","workflow"]
	},{
		"title": "Curio 12 — a Markdown extravaganza",
		"url": "/2018/04/24/curio-12-a-markdown-extravaganza/",
		"tags": ["appreview","macos","markdown","productivity","support","tagging","taskpaper"],
		"date": "Apr 24<span>th</span>, 2018",
		"ts": "1524583440",
		"summary": "Curio 12 is out today with a metric ton of new features, and a few that make it an especially exciting update for me. I&rsquo;ve been testing the beta for just a couple weeks now, but have found plenty of the delight I&rsquo;ve come to expect with every new release. George Browning keeps setting a high bar for himself&hellip; I&rsquo;m afraid I don&rsquo;t have time to offer a complete overview of Curio. It&rsquo;s wildly powerful for brainstorming, research, organization, and project management, and flexible enough to use in a myriad workflow configurations. I&rsquo;ve written about Curio before, but here&rsquo;s a quick description of key concepts: A project represents a real-world project A project contains idea spaces, which are freeform pages for collecting everything (literally) associated with that project. Notes, images, PDFs, documents, web links and embedded web views, multimedia, even emails and contact cards. And more. Additionally, idea spaces can use figures with things like integrated mind maps, lists, tables, index cards, albums, pinboards, and stacks. Use metadata to associate pretty much anything with anything. Tags, due dates, durations, flags, checkboxes&hellip; you can develop your own workflows, and then the shelf provides tools for overarching project management based on your metadata workflows. Suffice to say that between the overall power of the app and the number of new features, I&rsquo;ll just be focusing on a couple of my favorites. This quick review assumes a basic understanding of what Curio does, but if you don&rsquo;t know and these features are still intriguing, please go check it out and grab the demo! First, expanded Markdown support is available in the Pro and Standard editions of Curio 12. This includes the ability to use Markdown in all text figures. You&rsquo;ll see it rendered as rich text in Curio as soon as you finish editing, and it&rsquo;s available as Markdown when you start editing the figure again. There aren&rsquo;t a lot of Markdown-specific editing features, but the Markdown Service Tools work great in Curio. You can specify a figure as Markdown in the inspector, or let it automatically detect when Markdown is being used. You can also set all text figures to be \"Markdown\" as the default1. Whether or not you used a lot of Markdown in a project or space, you can export a space or the entire project in full Markdown glory. A single Markdown file with an accompanying folder of assets&hellip;",
		"keywords": ["brainstorming","curio","management","project","additionally","browning","check","curio","depending","details","figures","first","george","markdown","marked","notes","omnioutliner","onenote","scrivener","service","standard","suffice","taskpaper","tools","zengobi","ability","advanced","afraid","again","albums","assets","associate","associated","assumes","automatically","available","backlink","based","basic","before","between","boasts","boolean","bottom","brainstorming","break","brettterpstra","brings","cards","check","checkboxes","class","click","collecting","concepts","configurations","consistent","contact","containing","contains","conversion","conversions","convert","converted","copying","couple","curio","dates","default","delight","description","detect","develop","document","documents","durations","editing","edition","editions","emails","embedded","endnotes","enough","entire","equivalents","escaping","especially","everything","exciting","expanded","expect","export","exported","exports","expression","extensive","fashion","favorite","favorites","feature","features","figure","figures","figuring","finish","flags","flawlessly","flexible","fnref","focusing","folder","footnote","footnotes","format","formats","formatted","found","freeform","glory","great","handler","height","hellip","himself","https","image","images","improvements","includes","including","index","inspector","integrated","interface","intriguing","keeps","layout","ldquo","license","links","lists","literally","loading","management","markdown","marked","meaning","meaningful","media","metadata","metric","modify","multimedia","myriad","names","noscript","noteref","offer","organization","original","overall","overarching","overview","pages","pasting","picture","pinboards","plenty","plethora","powerful","preference","preferences","preview","pricing","priorities","project","projects","provides","purchasing","quick","rdquo","regular","release","rendered","replicate","represents","requiring","research","results","reversefootnote","right","rsquo","search","searches","service","setting","shelf","single","source","space","spaces","specific","specify","srcset"]
	},{
		"title": "Tips for sane cable storage",
		"url": "/2018/04/23/tips-for-sane-cable-storage/",
		"tags": ["bundle","organization","paper","productivity"],
		"date": "Apr 23<span>rd</span>, 2018",
		"ts": "1524502740",
		"summary": "I spent Sunday morning doing my annual cable purge and sort. That plus cleaning out unused apps on my Mac and iOS devices is basically my Spring Cleaning for Nerds. This may have been my best cleaning project yet. My system has gotten good enough to be worth documenting. I mean, I&rsquo;m no expert, I only halfheartedly recommend taking all of my advice, but this is working for me and has proven maintainable over a few years now. First, a product endorsement. I&rsquo;ll mention these in both of the following sections, so I&rsquo;ll rave about them at the top. VELCRO One Wrap Thin Ties were first recommended to me on an episode of Systematic, though I&rsquo;ve lost track of which one. They&rsquo;re little cable wraps that come in a roll, 100 to a box for $7. They&rsquo;re perfect for just about any size cable wrapping, fast and secure. And you can even fasten them one handed if you need to, with a little dexterity. Somehow I&rsquo;ve amassed 50-some power adapters over the years. From 5W chargers to 30W power supplies, it&rsquo;s a mess. A box of them quickly becomes unmanageable and unsearchable, and gets even worse if any of the electrical wires come unwound and tangled. One option, obviously, would be to throw them out. It&rsquo;s so rare that I need a power adapter of some of the weirder varieties I&rsquo;ve accumulated that it almost seems ridiculous to keep them. Yet, every once in a while I can save my own day or someone else&rsquo;s, so I do. I&rsquo;m more pragmatic with cables, so bear with me on this. I lay them all out and unwind the cables (to make reading the specs easy). I also remove any power cords that are of a standard connector type and group those elsewhere (see part 2). It makes the size of larger 24V adapters much more manageable for storage. Go through and add sticky notes listing each one&rsquo;s output voltage and amperage, grouping duplicates together (for no reason other than making them easier to find for the next part). Make a spreadsheet of all the various V/A specs and turn them into labels. For me, this means printing, laminating, and cutting with a roller-cutter. Because I have crafty stuff around. I like crafty stuff. Attach the labels to each adapter. I attached mine by wrapping the tail of the label around the base of the wire and stapling because, well, that&rsquo;s easiest. Punching little holes and using zip ties would be an option. If you&rsquo;re using a sticky labeler, you need to find a way to&hellip;",
		"keywords": ["adapters","cable","management","storage","adapters","attach","because","bundle","cables","cleaning","discard","display","ethernet","fahsdf","firewire","first","great","individually","label","lighting","lightning","likely","maybe","nerds","optical","punching","somehow","spring","store","sunday","systematic","target","throw","thunder","thunderbolt","twitter","velcro","whatever","wrapping","above","accessed","accumulated","adapter","adapters","advice","almost","amassed","amperage","annual","another","anyway","attached","attempts","avoid","backlink","barcode","because","becomes","between","beyond","boxes","braided","brettterpstra","brittle","bunch","bundle","bundles","business","cable","cablecharming","cables","cablesadapters","careful","chargers","charging","cheapest","check","choice","choose","chosen","class","cleaning","collection","combination","comes","comments","common","commonly","computers","confuse","confused","connector","connectors","container","containers","converter","cords","couple","covered","crafty","crazy","create","crimping","cutter","cutting","decide","defining","desktop","device","devices","dexterity","diagram","differ","differentiates","discarded","documenting","doing","drawer","drawers","duplicates","easier","easiest","electrical","elsewhere","endnotes","endorsement","enough","episode","especially","expert","extra","extras","fabric","fasten","favorite","figcaption","figure","first","fnref","footnote","footnotes","forgot","friends","getting","going","gotten","graveyard","graveyardadapters","group","grouping","guests","halfheartedly","handed","handwriting","handy","height","hellip","holes","house","https","ipads","iphones","image","individually","inventory","keeping","kindles","kinks","label","labeler","labeling","labels","laminating","larger","ldquo","leads","length","likely","listing","little","loading","longer","longest","looking","machine","maintainable","makes","making","manageable","managing","marker","matches","media","mention","micro","mobile","morning","myself","nasty","needed","needs","nicely","noscript","noteref"]
	},{
		"title": "​BetterTouchTool - Customize your Input Devices!",
		"url": "/2018/04/19/bettertouchtool-customize-your-input-devices/",
		"tags": ["bettertouchtool","sponsor"],
		"date": "Apr 19<span>th</span>, 2018",
		"ts": "1524135600",
		"summary": "Thanks to ​BetterTouchTool for sponsoring BrettTerpstra.com this week! I&rsquo;m a long-(long-)-time fan of this app, and I&rsquo;m really excited to see it switching over to a paid model. Help sustain great software! BetterTouchTool is a little app that makes it possible to customize your input devices to really match your workflow. BTT allows you to configure various Magic Mouse and Trackpad gestures, to set keyboard shortcuts, bind normal mouse buttons, customize your Touch Bar, use the Siri Remote on your Mac and do tons more. BetterTouchTool offers many actions to automate various tasks on your Mac, and allows you to assign them to any trigger you choose. Additionally it contains some handy features like window snapping, a basic clipboard manager, a screenshot editor and many more",
		"keywords": ["bettertouchtool","macos","additionally","bettertouchtool","brettterpstra","download","magic","mouse","remote","sponsored","syndicate","thanks","touch","trackpad","vsayd","actions","allows","assign","automate","basic","blockquote","brettterpstra","buttons","choose","class","clipboard","configure","contains","customize","devices","editor","excited","features","gestures","great","handy","height","https","image","input","keyboard","little","loading","makes","manager","match","media","model","mouse","nofollow","normal","noscript","offers","original","picture","possible","rsquo","screenshot","shortcuts","snapping","software","source","sponsoring","srcset","sustain","switching","tasks","title","today","trial","trigger","uploads","various","width","window","workflow"]
	},{
		"title": "Cheaters 2.1",
		"url": "/2018/04/17/cheaters-2-dot-1/",
		"tags": ["cheaters","cheatsheet","fluid","keyboard","productivity","server"],
		"date": "Apr 17<span>th</span>, 2018",
		"ts": "1523975160",
		"summary": "I spent some time over the weekend adding a few things to Cheaters that I&rsquo;d been meaning to for a while. First is the addition of metadata in cheatsheets. It&rsquo;s not required on any sheet, but it opens up some possibilities for easier customization per sheet. The data is added in a JSON format, with as separator between the meta block and the rest of the sheet. In a Markdown file, this can go right at the top, e.g. Right now only a few keys are used, but it will be easy to add more (including attribution keys and external links). Unused keys are just ignored. The current keys are (just applies the specified id to the body element), (allows an additional CSS stylesheet to be included), and . Layout can be any value but the only one that actually changes anything at the moment is . If is set in the metadata, the whole thing gets split into a horizontal layout. For sheets with sections broken up by h3/h4 elements and without a lot of tables, this actually makes a more easily-scanned page (I think). Find more details in the documentation. Because I kept finding myself adding HTML ids and custom styles for certain cheatsheets that had different layouts, I decided that the metadata key would allow the inclusion of external CSS files. These are loaded when a cheatsheet is opened, and removed when changing cheatsheets. Thus you can just restyle default elements without needing to namespace them, but you can always use the meta to allow more specific targeting of elements. I&rsquo;d started out naming stylesheets by their associated cheatsheet (e.g. Markdown.css), but realized they should be more generic (e.g. h4dark.css) so they could be used more universally. It&rsquo;s not a perfect system, and it still needs some cleaning up, but it&rsquo;s definitely allowing more flexibility. If you&rsquo;ve made use of Cheater&rsquo;s \"Fast Switcher,\" you&rsquo;ll probably appreciate this next bit. It&rsquo;s pretty much the reason I started hacking on Cheaters this weekend. When a cheat sheet is longer than fits in view (which is most of them), navigating can be a bit tedious. There&rsquo;s the header navigation with and (comma and period), but I wanted a way to jump to a specific section. Thus, a table of contents was needed. Typing \"t\" will pop it up. It&rsquo;s generated from headers 1-4, plus tables with s or (whichever has an attribute). For most sheets, this generates a workable navigation structure. A type-ahead filter field is&hellip;",
		"keywords": ["cheatsheet","apache","automator","because","changelog","cheater","cheaters","cleanup","contents","custom","customizable","dirty","donate","download","escape","first","fluid","general","github","keepalive","layout","markdown","metadata","published","python","quick","reminder","right","search","server","simplehttpserver","switcher","table","typing","unused","updated","added","adding","address","again","ahead","allow","allowing","allows","anywhere","applies","appreciate","associated","attribute","attribution","automatically","available","aware","before","behave","below","between","block","broken","browser","browsers","called","cards","certain","changes","changing","cheat","cheatsheet","cheatsheets","circumstance","cleaned","cleaning","click","cloning","close","closing","comfortable","comma","command","comment","contents","contributed","custom","customization","customizations","decided","default","definitely","details","different","differently","directory","dismiss","doesn","doing","download","easier","easily","editing","element","elements","enter","external","field","files","filter","finding","first","flexibility","focused","folder","forget","format","fuzzy","generated","generates","generic","hacking","header","headers","hellip","hitting","horizontal","ignored","included","includes","including","inclusion","input","install","items","keyboard","launch","launchd","layout","layouts","links","little","loaded","locally","longer","makes","meaning","metadata","mouse","myself","namespace","naming","narrows","navigate","navigating","navigation","needed","needing","needs","opened","opens","people","performs","pinned","popup","possibilities","process","python","realized","recommend","removed","repository","required","requires","restyle","right","rsquo","running","scanned","script","search","section","sections","selected","separator","server","setting","setup","sheet","sheets","shortcuts","solution","specific","spent","split","started","structure","styles","stylesheet","stylesheets","styling","switch","switchto","system","tabbing"]
	},{
		"title": "Web Excursions for April 16, 2018",
		"url": "/2018/04/16/web-excursions-for-april-16-2018/",
		"tags": ["bookmarks","bundle"],
		"date": "Apr 16<span>th</span>, 2018",
		"ts": "1523900760",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. It&rsquo;s Time for an RSS Revival Yep. No matter what your current disposition, though, in this age of algorithmic overreach there&rsquo;s something deeply satisfying about finding stories beyond what your loudest Twitter follows shared, or that Facebook&rsquo;s News Feed optimized into your life. And lots of tools that can get you there. Transom Great Podcasting resource site (h/t Alex Cox). Transom is a performance space, an open editorial session, an audition stage, a library, and a hangout. Announcing 1.1.1.1: the fastest, privacy-first consumer DNS service Cloudflare&rsquo;s mission is to help build a better Internet. We&rsquo;re excited today to take another step toward that mission with the launch of 1.1.1.1 &mdash; the Internet&rsquo;s fastest, privacy-first consumer DNS service. The Creatable Pick A Bundle 2018 Creatable&rsquo;s current Pick A Bundle includes Marked, TableFlip, Permute, Timing, and more. Build your own 10 app bundle for $39. Ends this Friday. Vanilla: hide Mac menu bar icons for free Just in case you&rsquo;re not already using Bartender, Vanilla is a free Mac app that lets you hide icons from your menu bar. Simpler in functionality, but also faster at disappearing those extra menu bar items than the current incarnation of Bartender",
		"keywords": ["creatable","announcing","bartender","build","bundle","cleanmymac","cloudflare","creatable","facebook","friday","great","internet","marked","permute","podcasting","revival","simpler","tableflip","timing","transom","twitter","vanilla","algorithmic","another","audition","beyond","brought","build","bundle","consumer","deeply","disappearing","disposition","editorial","excited","excursions","extra","faster","fastest","finding","first","follows","functionality","hangout","icons","incarnation","includes","items","launch","library","loudest","mdash","mission","optimized","overreach","partnership","performance","privacy","resource","rsquo","satisfying","service","session","shared","space","speed","stage","stories","today","tools","toward","using"]
	},{
		"title": "Multiply your team's productivity with TextExpander",
		"url": "/2018/04/12/multiply-your-teams-productivity-with-textexpander/",
		"tags": ["sponsor","textexpander"],
		"date": "Apr 12<span>th</span>, 2018",
		"ts": "1523530800",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander multiplies your team&rsquo;s productivity by making up-to-date, shared knowledge instantly available to everyone who needs it. TextExpander is available to your whole team on multiple platforms: macOS, iOS, Windows, and web. Using TextExpander, all of your team&rsquo;s common responses are written and edited by your best writers for clear and consistent communication, accessible &mdash; and searchable &mdash; through simple abbreviations and keyboard shortcuts. And any time a change is needed, everyone&rsquo;s snippets are updated immediately. If you&rsquo;re on a support or sales team, or if you&rsquo;re in legal, medical, or real estate, TextExpander will change your life, leaving you more time to focus on what you do best. Visit TextExpander.com/podcast for 20% off your first year",
		"keywords": ["iphone","keyboard","macos","shortcut","smile","textexpander","windows","brettterpstra","textexpander","thanks","using","visit","windows","abbreviations","accessible","available","change","clear","common","communication","consistent","edited","estate","everyone","first","focus","instantly","keyboard","knowledge","leaving","legal","macos","making","mdash","medical","multiple","multiplies","needed","needs","platforms","podcast","productivity","responses","rsquo","sales","searchable","shared","shortcuts","simple","snippets","sponsoring","support","through","updated","whole","writers","written"]
	},{
		"title": "Web Excursions for April 09, 2018",
		"url": "/2018/04/09/web-excursions-for-april-09-2018/",
		"tags": ["bookmarks","facebook","nvalt"],
		"date": "Apr 9<span>th</span>, 2018",
		"ts": "1523298900",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Save to nvALT You may have noticed that most of the original extensions for nvALT have kind of disappeared. For Chrome users, this one from Mustafa Paksoy is pretty great. Internal HTML-to-Markdown conversion and instant add to nvALT. Source available. Now in Public Beta: The NEW Tower I&rsquo;ve been on the Tower 3 private beta, and I can tell you it&rsquo;s an exciting update for any Git user on Mac. Support for Pull Requests, a sweet interactive rebase GUI, a command palette for keyboard access to ANYTHING, and more. You can hold out for my review after it goes live, or join the beta now, your call. And then, obviously, the scary stuff&hellip; How to use Facebook while giving it the minimum amount of personal data The Cambridge Analytica revelations illustrate why we cannot trust Facebook to police its own platform. So now is as good a time as ever to remind you that — beyond deleting your Facebook account for good — there are some precautions you can take to protect your privacy and make use of Facebook as a utility without compromising your personal data. Should You Delete Your Facebook Page? I don&rsquo;t know if you read the EasyDNS newsletter, but I&rsquo;ve come to appreciate it as a very non-partisan source of information on privacy, technology, and the politics surrounding it. Post Cambridge Analytica revelations, my long-running question of how to handle the paradox of wanting to remain connected while wanting to remain safe, questioning my abillity to use tech to bring change while avoiding tech controlling me, have all become increasingly urgent. Do You Trust This Computer? If you feel like digging deeper into the seemingly inevitable AI-driven nightmare reality, Do You Trust This Computer? is happy to be your guide",
		"keywords": ["facebook","nvalt","tower","analytica","cambridge","check","chrome","computer","easydns","facebook","internal","markdown","mustafa","paksoy","public","requests","setapp","source","support","tower","abillity","access","account","amount","analytica","appreciate","available","avoiding","beyond","blockquote","brettterpstra","bring","brought","cambridge","campaign","cannot","change","chrome","class","command","compromising","connected","controlling","conversion","deeper","deleting","deletion","detail","digging","disappeared","doyoutrustthiscomputer","driven","easydns","ebkgfgjoekdgchbafocpchdecgmicbfi","exciting","excursions","extensions","facebook","github","giving","google","great","guide","handle","happy","height","hellip","https","hundreds","image","increasingly","inevitable","information","instant","interactive","keyboard","loading","media","monthly","mustpax","newsletter","nightmare","noscript","noticed","nvalt","nvalt","original","palette","paradox","partisan","partnership","personal","picture","platform","police","politics","precautions","privacy","private","protect","public","questioning","reality","rebase","remind","revelations","rsquo","running","scandal","scary","seemingly","setapp","source","srcset","starts","stuff","subscription","surrounding","technology","theverge","title","today","tower","trump","uploads","urgent","users","utility","wanting","webstore","while","width"]
	},{
		"title": "How's it going?",
		"url": "/2018/03/28/hows-it-going/",
		"tags": ["aditi","aspca","personal"],
		"date": "Mar 28<span>th</span>, 2018",
		"ts": "1522260240",
		"summary": "Hey buddy, how you doing? I&rsquo;m good, thanks for asking. You don&rsquo;t seem good. What&rsquo;s going on? Well, ok, let me just ramble through this for a bit. Cheaper than therapy&hellip; Emma &mdash; my favorite pit bull and canine companion for 11 years &mdash; passed away suddenly last Thursday. It was devastating. It is devastating. A lot of you have been through the same (or worse) loss, many of you likely in recent memory. I had recently gone through it with our German Shepherd, Chance. Aditi and I had 2 weeks with him before he had to leave, so he got some \"bucket list\" time. Not for Emma, though. She woke up under the weather, didn&rsquo;t eat, fell over peeing, got rushed to the vet, and never went back home1. But the fact that everybody loses loved ones always makes me feel bad about feeling bad about losing loved ones. Buck up, right? In the meantime, \"home\" had come to mean different things for Emma. Aditi and I separated in late 2016 and officially divorced in 2017. I didn&rsquo;t talk about it much, given I think we were both grieving for our marriage. Turned out that grieving process took forever. I think it might be harder when what you&rsquo;re grieving for is still there but you&rsquo;ve separated yourself from it. But I always underestimate grieving times. Every time. I think it goes back to my early addictions, before I realized that numbing the shock and pain just makes it show up a decade or two later. When I was 12, both of my grandfathers died on the exact same day and my dog a week or two later. I found myself crying for all of them at 23, and then suddenly for the friends I&rsquo;d lost over the years between. And at that point, with no apparent context, your grief makes less sense to those around you. Not that making sense matters. The kindest thing anyone has ever said to me about grieving came from my friend Elle2, just last week: \"There&rsquo;s no wrong way to do this.\" I don&rsquo;t have to be appropriate, display certain behaviors, react in certain ways. The day my grandfathers died, I got sent to the principal&rsquo;s office because I referred to their passings in a way that wasn&rsquo;t \"respectful\" enough for my math teacher. I never realized it was ok to just feel whatever you felt, express whatever you needed to. I told a few people who are waiting on things from me right now that \"I need Friday off. I&rsquo;ll recover over the weekend. Should be back at it on Monday.\" Turns out you can&&hellip;",
		"keywords": ["grief","aspca","aditi","chance","cheaper","facebook","friday","german","monday","shepherd","sirius","thursday","turned","turns","accessible","addictions","agreed","amount","anyone","anyway","asking","aspca","available","avoid","backlink","beautiful","because","before","behaviors","between","boyfriend","brettterpstra","brilliant","brother","bucket","buddy","business","cancer","canine","capacity","cared","caring","cause","certain","chance","cigarette","circumstance","class","comfort","comforting","companion","compressed","concerns","context","control","crying","daily","damage","decade","decided","deeply","devastating","different","display","divorced","doesn","doing","donate","donated","drama","drugs","ellenewman","embarrassed","endnotes","enough","everybody","exact","explain","express","facebook","fading","favorite","feeling","feelings","feline","figure","first","fitting","flickr","fnref","footnote","footnotes","forever","found","friend","friends","fundraiser","going","grandfathers","grief","grieve","grieving","happy","harder","having","height","hellip","https","image","impressive","injustice","irreversible","kicking","kindest","lasts","later","ldquo","leave","light","likely","liquid","loading","loses","losing","loved","lozenges","lucky","lungs","makes","making","marriage","massive","mattered","matters","mdash","meantime","media","memorial","memory","money","monster","mostly","myself","needed","nicotine","noscript","noteref","numbing","object","office","officially","original","oversimplifies","passed","passings","patches","peeing","people","photos","picture","places","point","problem","process","proud","public","ramble","rdquo","react","realized","recent","recently","recover","regularly","reliably","remained","respectful","reversefootnote","right","rsquo","rushed","saying","schedule","secure","sense","separated","shock","since","situation","smoking","somedays","sophia","source","spent","srcset","starting","suddenly","supporters","supposed","swelling","switched"]
	},{
		"title": "Automated web image workflow, part 1",
		"url": "/2018/03/21/automated-web-image-workflow-part-1/",
		"tags": ["automation","automator","desktop","hazel","imagemagick","optimization","scripting","tools"],
		"date": "Mar 21<span>st</span>, 2018",
		"ts": "1521653520",
		"summary": "I&rsquo;ve been using a workflow for web images for a while. The final part of the workflow is specific to my Jekyll install, so I&rsquo;ll be taking a look at whether I can make that of more general interest or not. I think the first two parts are pretty cool, though. We&rsquo;ll start at the beginning of the optimization stage. You&rsquo;ve created (or received) the final image destined for the web. You know the specific sizes the destination site needs for optimal display. On this blog, I start with 1600px-wide image for full-width, 700px for inset, both being the @2x size for high-resolution displays. The step between hitting \"Save\" and uploading it to the web, then, is usually to resize, output 1x and 2x versions, and optimize the results. I do this with Hazel and a special naming pattern. When I save an image, I can add a series of special characters at the end, separated from the name by a double percent symbol (). When Hazel detects an image on the desktop or other defined folder that matches that scheme, it runs a script that parses out the options, does the conversions and optimizations, and then outputs file(s) with the correct names to the original location. For example, if I save a file to the Desktop titled , the will cause a 1/2 size version (i.e. @1x) to be output, and the will cause both versions to be optimized (shrunk, squished, crushed, whatever is appropriate). Any combination of options can be used, and in any order after the in the filename. Here are all the options: &ndash; optimize image Tool chosen automatically based on file extension &ndash; convert PNG to JPEG Ignored if the file is already a JPEG. Because photographic images with a wide color range and no need for transparent background are significantly smaller as JPEG, I mostly use this one to automate processing of files sent to me by others. &ndash; create a half size image Assumes the original file is the high res (retina) version and creates a 1x version at exactly half the original dimensions. If the original filename (before the ) includes , it will just create the same file without the @2x in the name. If not, it will add to the second filename. &ndash; resize to width or max-widthxheight r followed by a numeric width will resize the image to a maximum width of that size (e.g. resizes the image to 800px wide, with the height automatically determined). will resize the image to a maximum width of 800px, or a maximum height of 600px, whichever is&hellip;",
		"keywords": ["blogging","scripting","assumes","because","desktop","graph","hazel","homebrew","ignored","imagemagick","jekyll","retina","setup","above","action","aforementioned","automate","automatically","automating","background","based","because","before","beginning","benefit","between","blogs","build","capture","cause","certain","characters","chosen","color","combination","command","commercial","compression","contains","conversions","convert","create","created","creates","criteria","crosshair","crushed","defined","desktop","destination","destined","detects","determined","dimension","dimensions","display","displays","double","episode","example","executable","extension","filename","files","first","flexibility","folder","followed","format","general","generation","gives","handle","height","hitting","image","images","includes","inset","install","installed","interest","jpegoptim","justifies","larger","local","location","lossless","macos","matches","maximum","media","method","mostly","names","naming","ndash","needs","numeric","optimal","optimization","optimizations","optimize","optimized","options","original","others","output","outputs","package","parses","parts","pattern","people","percent","photographic","pngcrush","pointing","process","processing","range","received","renamed","requires","resize","resizes","resolution","results","retina","rsquo","saved","saves","saving","scheme","screen","screenshot","script","scriptable","scripts","second","seconds","separate","separated","series","share","sharing","shell","shrunk","significantly","sizes","smaller","social","special","specific","spend","squished","stage","stuff","symbol","taking","techniques","think","titled","tools","transparent","types","upload","uploading","useful","using","usually","version","versions","watch","whatever","whichever","while","width","workflow"]
	},{
		"title": "FirstSeed Calendar: Free calendar for iPhone",
		"url": "/2018/03/15/firstseed-calendar/",
		"tags": ["iphone","sponsor"],
		"date": "Mar 15<span>th</span>, 2018",
		"ts": "1521115200",
		"summary": "Thanks to FirstSeed Calendar for sponsoring BrettTerpstra.com this week! FirstSeed Calendar is a beautiful calendar app that can handle both events and reminders. It is available for iPhone and iPad, and the Mac version will be available in April. The first thing you will notice when using the app is its ease of use. Unlike most calendar apps, FirstSeed Calendar offers smooth scrolling in most everything you do. That means you can get to the events you are looking for faster than ever. The other great feature is that the app shows the month calendar in full screen, until you tap on a date to have a closer look. This approach lets you have the best of both worlds: a micro and macro view of your events. An innovative new feature that you will not find anywhere else is the new \"condensed\" week view. We eliminated the need for vertical scrolling in week view by showing events outside of the user-specified time as a list, thereby letting you focus on the time that&rsquo;s most important to you. Other great features include: reminder support, natural language input, birthday and anniversary support, a great event editor, paper organizer-like list view, and more. The iPhone version is free to download, or you can visit the FirstSeed Calendar website to learn more about the product",
		"keywords": ["calendar","firstseed","iphone","brettterpstra","calendar","firstseed","thanks","unlike","anniversary","anywhere","approach","available","beautiful","birthday","calendar","closer","condensed","download","editor","eliminated","events","everything","faster","feature","features","first","focus","great","handle","iphone","important","innovative","input","language","learn","letting","looking","macro","micro","natural","offers","organizer","outside","paper","product","reminder","reminders","rsquo","screen","scrolling","showing","shows","smooth","sponsoring","support","using","version","vertical","visit","website","worlds"]
	},{
		"title": "Web Excursions for March 13, 2018",
		"url": "/2018/03/13/web-excursions-for-march-13-2018/",
		"tags": ["bookmarks"],
		"date": "Mar 13<span>th</span>, 2018",
		"ts": "1520964420",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. A general date-picker script for any tag type - TaskPaper I learned a lot about JSX and nibs playing with this one (from Rob Trew, of course). Dictionary.com now offers definitions for emoji It&rsquo;s about time. Devhints &mdash; TL;DR for developer documentation A large collection of developer cheatsheets, created by @ricostacruz. PSA: iOS Markup is not designed to be a redaction tool for sensitive information Side note, don&rsquo;t expect iOS Markup tools to cover your tracks. Leonard Cohen - Peel Session 1968 For LC fans, the complete July 1968 session recorded with John Peel on BBC Radio 1",
		"keywords": ["cohen","emoji","leonard","markup","cleanmymac","cohen","devhints","dictionary","leonard","markup","radio","session","taskpaper","brought","cheatsheets","collection","cover","created","definitions","designed","developer","emoji","excursions","expect","general","information","learned","mdash","offers","partnership","picker","playing","recorded","redaction","ricostacruz","rsquo","script","sensitive","session","speed","tools","tracks"]
	},{
		"title": "PDFpen: The Ultimate PDF Editing Tool",
		"url": "/2018/03/08/pdfpen-the-ultimate-pdf-editing-tool/",
		"tags": ["sponsor"],
		"date": "Mar 8<span>th</span>, 2018",
		"ts": "1520514000",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! Organizing your documents, while ditching all the paper. Split and combine PDF documents to send just the right things to your accountant or your lawyer. Fill in PDF forms, even if they&rsquo;re not interactive to begin with. Add page numbers, redact account numbers, and perform OCR on scanned documents. Search with ease, and find and highlight all instances of a specific term. Step up to PDFpenPro to create PDF portfolios &mdash; collections of multiple PDFs and related files &mdash; great for presenting year-end documents",
		"keywords": ["pdfpen","smile","brettterpstra","organizing","pdfpen","pdfpenpro","search","split","thanks","visit","account","accountant","begin","collections","create","ditching","documents","editing","files","forms","going","great","highlight","interactive","lawyer","learn","mdash","multiple","numbers","paper","paperless","portfolios","presenting","redact","related","right","rsquo","scanned","specific","sponsoring","ultimate","while"]
	},{
		"title": "Deckset 2.0 is more of a great thing",
		"url": "/2018/03/07/deckset-2-dot-0-is-more-of-a-great-thing/",
		"tags": ["appreview","appstore","macos","markdown"],
		"date": "Mar 7<span>th</span>, 2018",
		"ts": "1520445780",
		"summary": "I first wrote about Deckset back in 2014. Since then I&rsquo;ve continued to love it as an alternative to Keynote, using it whenever I can for presentations. At CMD-D last summer, I hadn&rsquo;t expected to be speaking, but when Andy Ithnako had to call in sick, I wrote a full slide deck in Markdown on breaks between talks. I&rsquo;m very excited to let you know that version 2.0 has been released, and it covers some of the requests I and other users have had over the years. First, you can customize the themes. It comes with a wide selection of styles, but I&rsquo;ve always longed to be able to change them just slightly for my needs. Now you can adjust colors, fonts, and general layout, and even export and share the theme with others. You can also just use Markdown headers as slide dividers (as opposed to horizontal rules), making presentation creation that much faster. You can also add customization to a single slide using metadata headers to do such things as temporarily disable slide numbering or change a footer. With the release of version 2, Deckset has announced they&rsquo;re leaving the Mac App Store. The new version is available exclusively via direct purchase, which &mdash; as a side effect &mdash; gives them a lot more flexibility with coupons, pricing, and educational discounts. Deckset is definitely the coolest, easiest tool I&rsquo;ve found for creating slide decks quickly and beautifully. The current version runs $29 US, with site licenses available. If you bought Deckset after March 1st, 2017, you can receive a free upgrade. Check it out",
		"keywords": ["deckset","presentation","slide","check","deckset","first","ithnako","keynote","markdown","since","store","adjust","announced","available","beautifully","between","bought","breaks","change","colors","comes","continued","coolest","coupons","covers","creating","creation","customization","customize","decks","definitely","direct","disable","discounts","dividers","easiest","educational","excited","expected","export","faster","first","flexibility","fonts","footer","found","general","gives","headers","horizontal","layout","leaving","licenses","longed","making","mdash","metadata","needs","numbering","opposed","others","presentation","presentations","pricing","quickly","receive","release","released","requests","rsquo","rules","selection","share","single","slide","slightly","speaking","styles","summer","talks","temporarily","theme","themes","upgrade","users","using","version","whenever","wrote","years"]
	},{
		"title": "The OmniOutliner 3 winners!",
		"url": "/2018/03/01/the-omnioutliner-3-winners/",
		"tags": ["giveaway"],
		"date": "Mar 1<span>st</span>, 2018",
		"ts": "1519930200",
		"summary": "Congratulations to the winners of the OmniOutliner 3 giveaway! It turned out to be one of the most popular giveaways I&rsquo;ve ever run here. There ended up being 6 instead of 5 because the Giveaway Robot made its first ever mistake1. Omni was very gracious and provided an extra code to remedy the snafu. I&rsquo;ve heard back from most of the winners already, but if you&rsquo;re on the list and haven&rsquo;t heard from me yet, let me know and I&rsquo;ll re-send the email. Thanks again to everyone who entered, and if you didn&rsquo;t win, you can grab the free trial and there&rsquo;s still a little time to snag the intro price! Ok, fine, it was human error. I hit CTRL-c because I realized I&rsquo;d made a typo in the email template, but the first random winner had already been sent. If the Killotron has any fault, it would be that it&rsquo;s too good to be stopped.&nbsp;↩",
		"keywords": ["omnioutliner","abhishek","barrette","congratulations","costiou","florent","giveaway","guillaume","hansen","killotron","omnioutliner","oostindie","robot","thanks","vincent","again","apple","backlink","because","brettterpstra","class","contact","email","ended","endnotes","entered","error","everyone","extra","fault","first","fnref","footnote","footnotes","giveaway","giveaways","gracious","haven","heard","https","human","intro","itunes","little","mistake","noteref","omnioutliner","popular","price","random","realized","remedy","reversefootnote","rsquo","snafu","stopped","template","trial","turned","winner","winners"]
	},{
		"title": "RocketTab malware and the Tab Manager Chrome extension",
		"url": "/2018/02/28/rockettab-malware-and-the-tab-manager-chrome-extension/",
		"tags": ["browser","chrome","extension","search","security","webdesign"],
		"date": "Feb 28<span>th</span>, 2018",
		"ts": "1519851120",
		"summary": "Chrome slowed down for me this week. It&rsquo;s always been a memory and CPU hog, but this got ridiculous. Like grind-my-system-to-a-halt ridiculous. Unable to determine the problem, I switched to Firefox. But I figured out the Chrome issue today. Side note: I haven&rsquo;t used Firefox for years but I&rsquo;m pleased to report it&rsquo;s become an amazing browser in the meantime. I&rsquo;ll definitely be continuing to use it as more than just a testing browser for web development. The perpetrator was kind enough to add a label, \"RocketTab powered by Advertise,\" at the top and bottom of the injected results, so it was easy enough to search for. Apparently the RocketTab ad/malware has been around for a long time, and the \"powered by Advertise\" mutation is only the most recent incarnation. Over its lifespan it&rsquo;s been everything from a bundled application to browser extensions. It purportedly just injects ads across a bunch of different services with redirects and affiliate links to gather commissions. It also slows your entire computer down tremendously, which seems odd for something so supposedly innocuous. I started by searching through all of my recently-installed apps. I&rsquo;m not careless about installing untrusted apps, so that wasn&rsquo;t likely, but I deleted some cruft. No change. I ran MalwareBytes, which specifically lists RocketTab as one it detects (and which is, by the way, a very good anti-malware app), but no results there. So I jumped into the web inspector and started tracing the XHR calls that were made when the ads were injected, then searching for the strings in my Chrome extensions folder. I turned up nothing. Convinced it had to be an extension &mdash; and I run a lot of them1 &mdash; I disabled all of them. Ads went away. Enabled them one by one, repeatedly refreshing the DuckDuckGo search page to see when they came back. Boom: Tab Manager. I&rsquo;m not going to link it here, but see the image above if you need to confirm which one I&rsquo;m talking about. You&rsquo;ll immediately note on the Reviews tab that it&rsquo;s reported as malware. Repeatedly. Many, many times. I reported abuse, as I assume many of the dozens of commenters have, so it&rsquo;s unfathomable to me that the Chrome Web Store has continued to allow its presence. This apparently only happened with the latest update to the extension published this month (February, 2018). Long story short, if you see \"RocketTab powered by anything,\" figure it&hellip;",
		"keywords": ["chrome","malware","virus","advertise","apparently","chrome","convinced","deleting","disable","downloader","duckduckgo","enabled","firefox","malwarebytes","manager","repeatedly","reviews","rockettab","store","unable","video","youtube","above","abuse","across","adding","adware","affiliate","allow","amazing","apparently","assume","backlink","bottom","brettterpstra","browser","bunch","bundled","calls","careless","change","chromewebstore","class","coming","commenters","commissions","computer","confirm","continued","continuing","creators","cruft","definitely","deleted","detects","development","different","disabled","dozen","dozens","endnotes","enough","entire","everything","extension","extensions","figure","figured","fixed","fnref","folder","footnote","footnotes","gather","going","grind","happened","haven","having","header","height","https","iknow","image","incarnation","injected","injects","innocuous","inspector","installed","installing","issues","jumped","label","latest","ldquo","lifespan","likely","links","lists","loading","malware","malwarebytes","manager","mdash","meantime","media","memory","mutation","noscript","noteref","nothing","offending","original","others","pages","perpetrator","picture","pleased","powered","presence","problem","published","purportedly","rdquo","recent","recently","redirects","refreshing","repeatedly","report","reported","reports","results","reversefootnote","ridiculous","rockettab","rsquo","search","searching","searchresults","seems","services","short","slowed","slows","source","specifically","srcset","started","story","strings","supposedly","switched","system","tvlkxrnlp","talking","testing","through","times","title","today","tracing","tremendously","turned","unfathomable","untrusted","uploads","watch","width","wonder","years","youtube"]
	},{
		"title": "Web Excursions for February 26, 2018",
		"url": "/2018/02/26/web-excursions-for-february-26-2018/",
		"tags": ["bookmarks","tools"],
		"date": "Feb 26<span>th</span>, 2018",
		"ts": "1519666560",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Unlox The app formerly known as MacID has been renamed to Unlox and updated to work with Face ID on the iPhone X. If you fancy unlocking your Mac with your face, here you go. Omoshiro Block Not my usual type of link, but this is beautiful. The Omoshiro Block utilizes laser-cutting to reveal objects as the pages are used. Go see the pictures. ShotBox on the Mac App Store A handy little (free) utility that adds markup capability to screenshots taken with macOS system tools. No organizer, no built in screenshot tools, just a handy augmentation to default screenshots. If apps like Capto, Monosnap, Pixa, and others are overkill for you, this might be a great solution. Another warning: Don&rsquo;t convert your Time Machine volume from HFS+ to APFS A warning from Macworld about APFS (macOS High Sierra) and Time Machine. Basically, don&rsquo;t convert your Time Machine disk to APFS, but the details are worth understanding. ProjectDent/ARKit-CoreLocation ARKit+CoreLocation is an open source library that allows items to be placed within an AR world using real-world coordinates and, by using CoreLocation, improves accuracy to a point where things like Point-of-Interest AR get easier. I&rsquo;m not currently working on any AR, but it&rsquo;s exciting to watch the apps and the tools grow",
		"keywords": ["augmented","lasercut","reality","arkit","another","block","capto","cleanmymac","corelocation","interest","macid","machine","macworld","monosnap","omoshiro","point","projectdent","shotbox","sierra","store","unlox","absolute","accuracy","allows","apple","article","augmentation","beautiful","block","border","brettterpstra","brought","built","capability","class","convert","coordinates","cutting","default","details","display","easier","exciting","excursions","fancy","formerly","github","goodbye","great","handy","height","hello","hidden","https","iphone","image","impactradius","improves","items","itunes","laser","library","little","loading","macos","machine","macid","macpaw","macworld","markup","media","noscript","objects","omoshiro","organizer","original","others","overkill","pages","partnership","picture","pictures","placed","point","position","renamed","reveal","rsquo","screenshot","screenshots","shotbox","solution","source","speed","spoon","srcset","storage","style","system","taken","tamago","title","tools","understanding","unlocking","unlox","updated","uploads","using","utility","utilizes","visibility","volume","warning","watch","where","width","within","working","world","worth"]
	},{
		"title": "Stockio: free photos, vectors, fonts, and icons for designers",
		"url": "/2018/02/22/stockio-free-photos-vectors-fonts-and-icons-for-designers/",
		"tags": ["design","fonts","icons","sponsor"],
		"date": "Feb 22<span>nd</span>, 2018",
		"ts": "1519308000",
		"summary": "Thanks to Stockio for sponsoring BrettTerpstra.com this week! Design assets are the lifeblood of any creative process. Images inspire, typefaces communicate, icons clarify. Whatever the scope of your project, assets are the building blocks of your design. Any new source of stock assets is a boon to the design community, and the latest treasure trove is stockio.com with photos, videos, vectors, icons, and even fonts, designed to inspire and stock the toolboxes of the web design industry. Stockio resources are absolutely free to download, and can be used for both personal and commercial projects. Sourced from some of the most popular asset producers, Stockio&rsquo;s assets have been handpicked to be useful to designers. Stockio has the great search options you need to take advantage of a resource this vast. When browsing images, similar photos are displayed on the download page; some of the best discoveries come by simply clicking on the next thumbnail and seeing where it takes you. You can even search by color and quickly locate photos or vectors containing the color you need. It&rsquo;s perfect when you&rsquo;re working with a brand-specific palette and need assets to match. Stockio includes enough assets to pack your toolbox until next year. There are over 4,500 icons and the collection is growing. When it comes to free fonts, it&rsquo;s a goldmine. There are over 11,000 free, high-quality fonts on Stockio — more than you can use in a lifetime of design. Whether you&rsquo;re looking for a typeface for a logo, or something readable for body text, there are some real gems here",
		"keywords": ["assets","design","stock","stockio","brettterpstra","design","images","sourced","stockio","thanks","whatever","advantage","asset","assets","blocks","brand","brettterpstra","browsing","building","check","clarify","class","clicking","collection","color","comes","commercial","community","containing","creative","design","designed","designers","designing","discoveries","displayed","download","enough","fonts","goldmine","great","growing","handpicked","height","https","icons","image","images","includes","industry","inspire","latest","lifeblood","lifetime","loading","looking","match","media","nofollow","noscript","options","original","palette","personal","photos","picture","popular","process","producers","project","projects","quality","quickly","readable","resource","resources","rsquo","scope","search","seeing","similar","simply","source","specific","sponsoring","srcset","stock","stockio","strong","takes","thumbnail","title","toolbox","toolboxes","treasure","trove","typeface","typefaces","uploads","useful","vectors","videos","where","width","working"]
	},{
		"title": "OmniOutliner 3 (+giveaway!)",
		"url": "/2018/02/21/omnioutliner-3-plus-giveaway/",
		"tags": ["automator","giveaway","macos","productivity","support"],
		"date": "Feb 21<span>st</span>, 2018",
		"ts": "1519241040",
		"summary": "OmniOutliner 3 for iOS is out and it&rsquo;s a big update. See the bottom of the post for a chance to win a Pro license. This iOS release brings parity with OmniOutliner 5 on Mac, and adds iPhone X and iOS 11 support. It also includes support for printing, new drag & drop features, PDF export, document encryption, and interface updates, including inspectors and new focus and filtering options. OmniOutliner is now split into two versions: Essentials, and Pro (like the Mac version is now, too). Essentials is a limited in features, but also less expensive ($9.99 US), and easily serves the needs of many people just looking for a solid outliner app. It can print, add notes, export multiple formats, and sync via OmniPresence. It also features \"Open In Place,\" which allows you to open a file from Dropbox or the Files app, edit in OmniOutliner, and save changes in its original location. Man, I always hated that old sandbox dance. The Pro version is a $39.99 in-app purchase (both versions are free downloads with 14-day trials). It has everything that Essentials has, plus the ability to \"focus\" on sections of your outline (including support for multiple selections), and filters with saved searches (including searches set up on your Mac). It can also encrypt your documents on disk (so on the server as well) with AES-256 encryption. If you&rsquo;re brainstorming in OmniOutliner, encryption means trust and peace of mind, so this is great news (I refer you to Joel Anderson on Systematic). Perhaps the most exciting thing to me is the inclusion of Omni&rsquo;s new scripting tool, Omni Automation. Sal Soghoian talked about it a bit on (another great episode of) Systematic, and focused heavily on it in talks at the CMD-D conference (where I was lucky enough to get to speak alongside a bunch of automation heroes). It&rsquo;s a JavaScript-based scripting language that provides cross-platform automation. If it works on iOS, it works on Mac without alteration. You can see some of the things people have already done with it in OmniGraffle via Omni&rsquo;s Discourse section. Omni has kindly offered five Pro version codes ($39.99 US value) for BrettTerpstra.com readers. Enter below with your name (full please) and an email address (as always, only for contacting winners, lists are discarded after the drawing). Five winners will be drawn on Tuesday, February 27 at 12pm CST. Sorry, this giveaway has ended",
		"keywords": ["omnioutliner","outliner","anderson","automation","brettterpstra","discourse","dropbox","enter","essentials","files","javascript","omnigraffle","omnioutliner","omnipresence","perhaps","soghoian","sorry","systematic","tuesday","ability","address","allows","alongside","alteration","another","automation","based","below","bottom","brainstorming","brings","bunch","chance","changes","check","codes","conference","contacting","cross","dance","discarded","document","documents","downloads","drawing","easily","email","encrypt","encryption","ended","enough","episode","everything","exciting","expensive","export","features","filtering","filters","focus","focused","formats","giveaway","great","hated","heavily","heroes","iphone","includes","including","inclusion","inspectors","interface","kindly","language","license","limited","lists","location","looking","lucky","meantime","multiple","needs","notes","offered","options","original","outline","outliner","parity","peace","people","platform","print","printing","provides","readers","release","rsquo","sandbox","saved","scripting","searches","section","sections","selections","server","serves","solid","speak","split","support","talked","talks","trial","trials","updates","value","version","versions","where","winners","works"]
	},{
		"title": "More TaskPaper fun with Keyboard Maestro",
		"url": "/2018/02/20/keyboard-maestro-and-taskpaper-3/",
		"tags": ["javascript","keyboard","keyboardmaestro","productivity","scripting","tagging","taskpaper"],
		"date": "Feb 20<span>th</span>, 2018",
		"ts": "1519135200",
		"summary": "I&rsquo;ve put together a few of my Keyboard Maestro macros for TaskPaper 3 that I think might have general appeal. I have to thank Rob Trew at the very top of this post, he&rsquo;s saved me a significant amount of time in figuring out how to automate these apps1. You can read on to see how they work, or download the bunch as a Macro Library below. First, an update to my Natural Language macro specifically for TaskPaper 3. Rather than bundling Sugar.js or relying on other tools, it now just uses TaskPaper&rsquo;s own DateTime API. A much shorter (and self-contained) script. The macro is set up to trigger via regular expression any time you type a tag with a value, e.g. . When you close the parenthesis, it will scan the entire task for tag values that will translate to dates and convert them. You can specify which tags it will consider using the \"dateTags\" variable in the macro, a space separated list of tag names (e.g. ). You can use language like \"tomorrow,\" \"next tuesday,\" \"2 weeks\" or just \"3\" to set the date to three days from now. If a string isn&rsquo;t recognized, it won&rsquo;t change. It can also be triggered by a keyboard shortcut, customizable in the macro editor. The JavaScript it runs is available in a gist, in case you want to pick it apart. Note, if you&rsquo;re looking for an update to my scripts for incrementing and decrementing dates, you can take a look at Jesse Grossjean&rsquo;s JSA version. The increment/decrement macros are used for cycling numeric values in tags like . You can define the tag and the increment (value to add or subtract) in the macro variables, and create additional macros on different hotkeys to add new tags (and unique values). The library I&rsquo;ve created for download includes \"priority\" (1-5) and \"completed\" (10-100%) macros. For the @priority macros, the minVal is 1, maxVal is 5, and the increment is +1 or -1. For @completed, the minVal is 10, maxVal is 100, and the increment is +10 or -10. When triggered, it will look for the defined tag and add/subtract the defined increment (). You can set the and variables to define the scale. If the tag doesn&rsquo;t exist on the task when the macro runs, it will be added with the minValue (or maxValue if decrementing). If it&rsquo;s at the top of the scale when you increment (or at the bottom when you decrement), it will be removed entirely. Triggering the macro again starts the cycle over from either direction. Otherwise it just adds/subtracts the&hellip;",
		"keywords": ["macro","script","again","applescript","automation","changelog","datetime","decrement","donate","download","first","grossjean","increment","javascript","jesse","keyboard","language","library","macro","macros","maestro","natural","published","rather","sugar","tuvbv&#39;","taskpaper","triggering","updated","added","again","amount","animated","annoying","apart","appeal","automate","available","background","backlink","below","bottom","brettterpstra","bunch","bundling","caption","change","changelog","class","close","clumsy","collection","completed","completioninc","complexpoint","consider","contained","convert","cover","create","created","customizable","cycle","cycling","datetags","dates","decrease","decrement","decrementing","define","defined","description","different","direction","dlbox","doesn","donate","download","downloads","editor","either","endnotes","entire","entirely","exist","expression","fathom","figure","figuring","fnref","footnote","footnotes","found","frame","general","github","gradient","guide","height","hellip","highlighter","hogbaysoftware","hotkeys","https","image","incvalue","includes","increase","increment","incrementdecrement","incrementing","information","keyboard","keyboardmaestroicon","language","ldquo","library","linear","loading","looking","loving","macro","macros","maestro","makeadate","maxval","maxvalue","media","minval","minvalue","names","natdate","natlangdate","natural","noscript","noteref","numeric","onclick","original","parenthesis","picture","plaintext","prioinc","priority","priorityinc","projects","published","rdquo","recognized","regular","relying","removed","repeat","reversefootnote","rouge","rsquo","saved","scale","script","scripting","scripts","separated","shortcut","shorter","significant","source","space","specifically","specify","srcset","starts","string","style","subtract","subtracts","support","tabindex","taskpaper","thank","think","title","together","tomorrow","tools","trackgoal","translate","trigger","triggered","ttscoff","tuesday","unique","updated","uploads","using","value","values","variable","variables","version","weeks","width","years"]
	},{
		"title": "75+ Breathtaking Watercolor and Floral Elements for $9",
		"url": "/2018/02/15/75-plus-breathtaking-watercolor-and-floral-elements-for-9-dollars/",
		"tags": ["sponsor"],
		"date": "Feb 15<span>th</span>, 2018",
		"ts": "1518706020",
		"summary": "Thanks to MightyDeals for for sponsoring BrettTerpstra.com this week! The true magic in this deal is how incredibly easy it is to add magnificent beauty to your latest project. With the Magic Ombre set from Julia Dreams, you&rsquo;ll get a high-quality collection of watercolor elements and individual florals. Frames, wreaths, patterns, ombres and more combine into a colorful and floral extravaganza perfect for everything from wedding invitations to wrapping paper. Gorgeous collection of hand painted color shapes and flowers. 50+ florals - from frames to wreaths to floral elements with transparent backgrounds. 30+ watercolor shapes and ombres - colorful patterns in a variety of amorphous shapes and sizes. High-resolution quality - watercolor shapes at 600 DPI, watercolor ombres at 300 DPI. Perfect for note cards, wrapping paper, posters, wallpaper, prints and more. Over 75 design elements for just $9! Check out the deal today",
		"keywords": ["deals","design","brettterpstra","check","dreams","frames","gorgeous","highlights","julia","magic","mightydeals","ombre","thanks","amorphous","backgrounds","beauty","cards","collection","color","colorful","design","elements","everything","extravaganza","floral","florals","flowers","frames","incredibly","individual","invitations","latest","magic","magnificent","ombres","painted","paper","patterns","posters","prints","project","quality","resolution","rsquo","shapes","sizes","sponsoring","today","transparent","variety","wallpaper","watercolor","wedding","wrapping","wreaths"]
	},{
		"title": "Web Excursions for February 13, 2018",
		"url": "/2018/02/13/web-excursions-for-february-13-2018/",
		"tags": ["bookmarks"],
		"date": "Feb 13<span>th</span>, 2018",
		"ts": "1518544980",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Visual Studio Code - Code Editing. Redefined I&rsquo;ll probably be writing more about this, (and maybe everyone already knew this,) but Visual Studio Code is a free code editor from Microsoft that is so good it&rsquo;s on the verge of replacing Sublime for me. If you&rsquo;re under the same impression I was &mdash; confusing VS Code with VS IDE and assuming it wasn&rsquo;t for you &mdash; shed the misconceptions and give it a try. It&rsquo;s awesome. For Linux, Mac OSX, and Windows (listed in that order on the website, Windows last, which I find interesting). Findings - All Your Research, In One App I&rsquo;m linking this for now because the dev asked me to review it and I don&rsquo;t feel qualified but it looks amazing. A lab notebook: organize experiments, track results, and manage protocols. Free for Mac (Basic version), iOS and Watch.: If you happen to be a researcher and interested in doing a guest review, please let me know! Farrago: Robust, rapid-fire soundboards Rogue Amoeba introduced a new app recently called Farrago. I&rsquo;m giving it a shot right now &mdash; if it fits my use cases I&rsquo;ll be writing it up in more detail. For now, I&rsquo;ll say: it&rsquo;s a soundboard app geared toward broadcasters (or podcasters) with a slick keyboard-navigable interface, extensive customization, and a complete organization toolset including sound banks and sequenced lists with sounds and notes for planning out shows. SoundSource: A Superior Sound Control Speaking of Rogue Amoeba, I had totally missed this utility, but I&rsquo;m using it daily now. It replaces the Volume control in your menu bar with a panel that allows easy individual control of devices/volumes for Input, Output, and Sound Effects. It also has a Play-Thru feature that lets you easily monitor any input source from any output source. Lastly, if you own any other Rogue Amoeba product (Farrago, Airfoil, Audio Hijack, Fission, etc.) you can get a complimentary license. uzairfarooq/arrive: Watch for DOM elements creation and removal A handy javascript wrapper for Mutation Observer, used to detect the arrival (or removal) of DOM elements without polling. mvdan/sh: A shell parser, formatter and interpreter (POSIX/Bash/mksh) A handy shell parser, formatter and interpreter. Includes , a great tool for beautifying bash scripts",
		"keywords": ["amoeba","audio","farrago","microsoft","rogue","studio","visual","airfoil","amoeba","audio","basic","cleanmymac","control","editing","effects","farrago","findings","fission","hijack","includes","input","lastly","linux","microsoft","mutation","observer","output","posix","redefined","research","robust","rogue","sound","soundsource","speaking","studio","sublime","superior","visual","volume","watch","windows","allows","amazing","arrival","arrive","asked","assuming","awesome","banks","beautifying","because","broadcasters","brought","called","complimentary","confusing","control","creation","customization","daily","detail","detect","devices","doing","easily","editor","elements","everyone","excursions","experiments","extensive","feature","formatter","geared","giving","great","guest","handy","happen","impression","including","individual","input","interested","interesting","interface","interpreter","introduced","javascript","keyboard","license","linking","listed","lists","looks","maybe","mdash","misconceptions","missed","monitor","mvdan","navigable","notebook","notes","organization","organize","output","panel","parser","partnership","planning","podcasters","polling","product","protocols","qualified","rapid","recently","removal","replaces","replacing","researcher","results","right","rsquo","scripts","sequenced","shell","shows","slick","sound","soundboard","soundboards","sounds","source","speed","tools","toolset","totally","toward","track","under","using","utility","uzairfarooq","verge","version","volumes","website","wrapper","writing"]
	},{
		"title": "SearchLink 2.2.8",
		"url": "/2018/02/09/searchlink-2-dot-2-8/",
		"tags": ["bookmarking","search","searchlink","service"],
		"date": "Feb 9<span>th</span>, 2018",
		"ts": "1518200820",
		"summary": "I just updated SearchLink to v2.2.8. Yes, if you&rsquo;re paying attention, I did skip a few increments there since the 2.2.5 release. I&rsquo;ve added a few features and then kept holding release off until I had tested, and then life gets busy. You know. This version adds a search for movie links from the iTunes store (credit to Sebastian Szwarc for the contribution), as well as the ability to search all Pinboard bookmarks for a phrase (with limited fuzzy matching). To use the Pinboard search, you&rsquo;ll need to get your API token from the Pinboard settings page. Add to your file. It currently searches your tags and \"description,\" which is generally the title of the site. I don&rsquo;t have it combing the url or the extended description at this point, but I&rsquo;ll see what issues I run into over time. The Pinboard searches currently download your entire bookmark collection every time it runs (doesn&rsquo;t take an excessively long time, but it&rsquo;s highly inefficient). I&rsquo;m working on caching those and only updating as needed, but I&rsquo;m running into trouble with writing large cache files to disk. Eventually I&rsquo;ll figure that out, I promise. I also added a utility dependency for searches. It now uses locally rather than relying on APIs. You can install it with or download it from aspell.net. A search on a word or a string with will take an educated guess at the best possible result and replace words inline. For example, running SearchLink on will result in \"harbor.\" If you never use SearchLink for spelling correction, you don&rsquo;t have to install to use everything else. I also switched the (definition) search to use Wordnik directly. It will return the first definition provided on the site, with a link to the definition page and the definition itself in a title string. forces titles to show in the output even if your preferences have them disabled in other cases. This one&rsquo;s kind of a silly feature anyway, so I won&rsquo;t put a lot more time into figuring out ideal ways to handle it. As a side note, I&rsquo;m at a point where I really want to turn this into an app. A PopClip style popup on selected text, the ability to select from multiple results, and an option to preview (URL Preview style). You can download the latest version below, but check the project page for more details and documentation. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor&hellip;",
		"keywords": ["blogging","google","search","tools","changelog","donate","download","eventually","markdown","pinboard","popclip","preview","published","searchlink","sebastian","szwarc","updated","wordnik","ability","added","anyway","aspell","below","bookmark","bookmarks","cache","caching","check","collection","combing","contribution","correction","credit","definition","dependency","description","details","directly","disabled","doesn","download","editor","educated","entire","everything","example","excessively","extended","feature","features","figure","figuring","files","first","forces","fuzzy","generally","guess","handle","harbor","hellip","highly","holding","itunes","ideal","increments","inefficient","inline","install","issues","itself","latest","leaving","limited","links","locally","matching","movie","multiple","needed","output","paying","phrase","point","popup","possible","preferences","preview","project","promise","rather","release","relying","replace","results","return","rsquo","running","search","searches","selected","settings","silly","since","spelling","store","string","style","switched","tested","title","titles","token","trouble","updated","updating","utility","version","where","words","working","writing"]
	},{
		"title": "Best of 2017: Personal Projects",
		"url": "/2018/02/05/best-of-2017-personal-projects/",
		"tags": [],
		"date": "Feb 5<span>th</span>, 2018",
		"ts": "1517842800",
		"summary": "As you may be aware, I publish a lot of projects. Mostly tools and scripts I give away for free, a couple that actually pay my bills. One yearly recap I never get around to actually finishing is a list of my own favorite personal projects for the year. This year I got around to it. 60 Mac Tips David Sparks and I finished a new edition of 60 Mac Tips in time for the High Sierra release. We also updated volume 1, so all total there are 120 unique tips, with video demonstrations, all valid on the latest macOS. Marked 2 Marked continues to be my primary focus. It was released at an opportune time when Markdown was finally getting a lot of momentum among writers and bloggers. It&rsquo;s become a standard in its genre, and the further development of writing tools and integrations has made it a lot of fun to continue working on. SearchLink Far from my most popular project, SearchLink is still the one I love the most out of all of my free projects. These roundups would be impossible without the ability to automatically link text without jumping back and forth between the browser and my editor. This year saw the addition of new features and additional (easier) syntax. iTextEditors My chart of features for all of the iOS text editors on the App Store continued to grow (and shrink a little, it&rsquo;s been log enough that some are dying off). It remains one of the most consistently high-traffic pages on my blog. As a side note, I&rsquo;ve been rewriting the whole thing to use a database and dynamically generated chart. It allows more flexibility in searching and filtering, as well as easier addition of criteria (and potentially entire genres of apps). This kind of stalled, but I do hope to get back to it. nvALT (and BitWriter) nvALT got an update to make it work with High Sierra, which is good because I&rsquo;d still be lost without it. BitWriter progress was slow, as anyone waiting for it knows, but it&rsquo;s been getting more attention these last few months. T-shirts I made more shirts. My favorite new one is the Markdown-inspired BOLD, and I&rsquo;m still partial to the I Wanna Be shirt from the Rock Paper series. Systematic It was a great year for Systematic. I loved every guest I got to talk to, including Sal Soghoian, Shawn Blanc, Allison Sheridan, and Merlin Mann, as well as fascinating interviews with people you might never have heard of. Rabbi Eric Linder came back, and folks like Jai Bentley-Payne, Adam Wuerl, Steve Harm&hellip;",
		"keywords": ["itexteditors","marked","nvalt","projects","allison","bentley","bitwriter","blanc","christina","creating","david","linder","markdown","marked","merlin","mostly","nerding","overtired","paper","payne","personal","projects","rabbi","searchlink","shawn","sheridan","sierra","soghoian","sparks","steve","store","stuart","stuff","systematic","turner","wanna","while","working","wuerl","ability","allows","among","anyone","automatically","aware","because","between","bills","bloggers","browser","chart","consistently","continue","continued","continues","conversations","couple","criteria","database","delightfully","demonstrations","development","dying","dynamically","easier","edition","editor","editors","enough","entire","fascinating","favorite","features","filtering","finally","finished","finishing","flexibility","focus","folks","forth","generated","genre","genres","getting","going","great","guest","heard","itexteditors","impossible","including","inspired","integrations","interviews","jumping","knows","latest","little","loved","macos","momentum","nvalt","opportune","others","pages","partial","people","personal","podcast","point","popular","potentially","primary","project","projects","publication","publish","recap","regularity","release","released","remains","rewriting","roundups","rsquo","scripts","searching","series","shirt","shirts","shrink","sides","slowed","stalled","standard","switched","syntax","times","tools","topics","traffic","unique","updated","valid","video","volume","waiting","weird","whole","working","writers","writing","yearly"]
	},{
		"title": "DuckDuckGo - Helping you take back your privacy",
		"url": "/2018/02/01/duckduckgo-helping-you-take-back-your-privacy/",
		"tags": ["browser","extension","privacy","search","sponsor"],
		"date": "Feb 1<span>st</span>, 2018",
		"ts": "1517490000",
		"summary": "Thanks to DuckDuckGo for sponsoring BrettTerpstra.com this week, I&rsquo;ve been a happy user for years! DuckDuckGo is an internet privacy company that empowers you to seamlessly take control of your personal information online, without any tradeoffs. Over the years, DuckDuckGo has offered millions of people a private alternative to Google, serving over 16 billion anonymous searches. Today we’re taking a major step to simplify online privacy with the launch of fully revamped versions of our browser extension and mobile app, now with built-in tracker network blocking, smarter encryption, and, of course, private search – all designed to operate seamlessly together while you search and browse the web. Our updated app and extension are now available across all major platforms – Firefox, Safari, Chrome, iOS, and Android – so that you can easily get all the privacy essentials you need on any device with just one download. To date, cobbling together an effective privacy solution has required researching complicated technologies, installing multiple add-ons and apps on each device, and often worsening your Internet experience. Others have been unfortunately misled by supposed simple solutions. Think “Incognito” mode blocks Google from watching what you’re doing? Think again. Private browsing modes are marketed to make you think that if it&rsquo;s not in your device’s browser history, it never happened. Sadly, that couldn&rsquo;t be further from the truth. Expose and Block Tracker Networks Watching You. Stop Creepy Ads Following You Across the Web. Increase Encryption Protection Automatically. Decode a Site&rsquo;s Privacy Policy into a Simple Letter Score. Search Privately! As more people start taking their privacy back online, the companies who make money off our personal information will be put on more notice and we’ll collectively raise the Internet’s privacy grade, ending the widespread use of invasive tracking. True to the collective nature of this effort, we’re also building our extension and app in the open with all of the code available on GitHub, so we invite you to join us",
		"keywords": ["duckduckgo","privacy","search","security","across","android","automatically","bcoxc","block","brettterpstra","chrome","creepy","decode","duckduckgo","encryption","expose","firefox","github","google","gufswa","incognito","increase","install","internet","letter","networks","others","policy","privacy","private","privately","protection","sadly","safari","score","search","simple","sponsored","syndicate","thanks","think","today","tracker","vsayd","watching","across","again","anonymous","available","billion","blocking","blockquote","blocks","brettterpstra","browse","browser","browsing","building","built","class","cobbling","collective","collectively","companies","company","complicated","control","couldn","designed","device","doing","download","duckduckgo","easily","effective","effort","empowers","encryption","ending","essentials","experience","extension","fully","github","grade","happened","happy","height","history","https","image","information","installing","internet","invasive","invite","launch","loading","major","marketed","media","millions","misled","mobile","modes","money","multiple","nature","network","nofollow","noscript","nrlwik","offered","often","online","original","people","personal","picture","platforms","privacy","private","raise","required","researching","revamped","rsquo","seamlessly","search","searches","serving","simple","simplify","smarter","solution","solutions","source","sponsoring","srcset","strong","supposed","taking","technologies","think","title","together","tracker","tracking","tradeoffs","truth","unfortunately","updated","uploads","versions","watching","while","widespread","width","worsening","years"]
	},{
		"title": "Macstock Early Bird ticket sales are open. You should come.",
		"url": "/2018/01/26/macstock-early-bird-ticket-sales-are-open-you-should-come/",
		"tags": ["macstock","social"],
		"date": "Jan 26<span>th</span>, 2018",
		"ts": "1516993200",
		"summary": "I had a blast at Macstock in 2016. It was a perfect combination of tech personalities and tech lovers, great presentations, and lots of fun mingling. In 2017 it grew, and the attendees, presentations, and the social events got even better. Based on that, I&rsquo;m betting on Macstock 2018 being the best one ever in the history of Macstock (ok, sure, it&rsquo;s only a few years old, but let&rsquo;s keep making new records to break). The lineup of speakers is always top notch. I learned a lot last year, which surprised me because I don&rsquo;t do well in auditorium settings. It&rsquo;s why I failed Calc 2. They even let me speak last year and I loved it. If all goes well with my pitch, I&rsquo;ll be speaking again this year (and doing a deep dive session). It&rsquo;s the attendees, though, that really make it worth the trip. Remember Macworld? I think I went to three sessions (five if you count the two talks I gave) total, but I showed up every year because it was the Apple-lover&rsquo;s social event of the year. As I hoped it would, Macstock is growing to be that social event for me. And the more people who show up, the better it gets. There was a great barbecue in the middle of the conference the first year, a great mingle last year, and this year there&rsquo;s a Welcome Party the first night, a ton of great talks, an After Party on Saturday, a Game Night after the After Party for those who can handle late, late nights, and a wrap-up event on Sunday. So, all of that said, early bird ticket sales are open now, and you can get a weekend pass for $179 (will be $249) and a day pass for $89 (to be $99). It takes place on July 21st and 22nd, so you have plenty of time to plan travel and lodging. Head to macstockconferenceandexpo.com for more details, and follow @macstockexpo on Twitter for updates. I sincerely hope to see you there",
		"keywords": ["conference","iphone","macos","apple","based","macstock","macworld","night","party","remember","saturday","sunday","twitter","welcome","again","attendees","auditorium","barbecue","because","betting","blast","break","combination","conference","count","details","doing","events","failed","first","great","growing","handle","history","hoped","learned","lineup","lodging","loved","lover","lovers","macstockconferenceandexpo","macstockexpo","making","middle","mingle","mingling","night","nights","notch","people","personalities","pitch","plenty","presentations","rsquo","sales","session","sessions","settings","showed","sincerely","social","speak","speakers","speaking","surprised","takes","talks","think","ticket","travel","updates","weekend","worth","years"]
	},{
		"title": "Web Excursions for January 26, 2018",
		"url": "/2018/01/26/web-excursions-for-january-26-2018/",
		"tags": ["appstore","bookmarks","design","email"],
		"date": "Jan 26<span>th</span>, 2018",
		"ts": "1516977840",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Since excursions are the result of my travels over recent days, they tend to follow a theme. The theme of this one turns out to be web design and app marketing&hellip; How To Get Your App Featured in the App Store and Google Play For all the marketing tips for developers that I&rsquo;ve read (and even proffered), nothing really beats an App Store feature, if you can get it. Here&rsquo;s a good checklist. Responsive HTML Email Templates for Developers, Marketers & Startups Nobody liked coding HTML emails even before mobile. Now you have to plan for so many variables while using CSS and markup restricted for cross-client compatibility. Enjoy this collection of responsive HTML email templates and save the tears. WebGradients.com I&rsquo;ll admit it, I&rsquo;m not great with designing gradients. This free, curated collection of 180 linear gradients is a welcome addition to my toolbox. Download them in CSS3, Photoshop and Sketch formats. Animista Another great toolbox addition for web designers. Animista offers a place where you can play with and customize ready-to-use CSS animations, with code ready to download and incorporate into your project. AppLaunchpad Mockup Generator A free web app for generating high-res product mockups for apps, putting your app screenshot in a real-life context easily (and for free). All iOS devices (including iPhone X and Apple Watch), iMac, Macbook, and even Windows machines. (AppLaunchPad&rsquo;s tool for generating iOS App Store screenshots looks pretty sweet, too.) Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["design","developer","animista","another","applaunchpad","applaunchpad","apple","backblaze","check","developers","download","email","enjoy","featured","generator","google","macbook","marketers","mockup","nobody","photoshop","responsive","since","sketch","startups","store","templates","watch","webgradients","windows","admit","affordably","animations","backs","beats","before","brought","checklist","client","cloud","coding","collection","compatibility","computer","context","cross","curated","customize","design","designers","designing","developers","devices","download","easily","email","emails","entire","everything","excursions","feature","formats","generating","gradients","great","hellip","iphone","including","incorporate","liked","linear","looks","machines","marketing","markup","mobile","mockups","nothing","offers","partnership","product","proffered","project","putting","ready","recent","reliably","responsive","restricted","rsquo","screenshot","screenshots","securely","tears","templates","theme","today","toolbox","travels","turns","using","variables","welcome","where","while"]
	},{
		"title": "Another Product Hunt bookmarklet update",
		"url": "/2018/01/25/another-product-hunt-bookmarklet-update/",
		"tags": ["bookmarklet","productivity"],
		"date": "Jan 25<span>th</span>, 2018",
		"ts": "1516896180",
		"summary": "The PHOpen bookmarklet that quickly opens links from Product Hunt pages broke again despite my efforts to make a foolproof version. Man, DOM hacking is a fragile thing in an era of frequent design updates. This update works with the new sidebar layout. It just chooses the first link in the block (usually containing Website, App Store, and More info), so it should always get the direct link to the website and open it in the same tab. Because of my brilliant plan of serving the bookmarklets straight from the CDN, if you have the bookmarklet installed already, it should just start working again. If not, just drag the button below to your bookmarks bar and click it when you&rsquo;re on a Product Hunt product page. If your Chromium browser doesn&rsquo;t allow bookmarklets (like Arc), download the PHopen extension version and follow the instructions here",
		"keywords": ["chrome","product","safari","because","chromium","phopen","phopen","product","store","website","again","allow","below","block","bookmarklet","bookmarklets","bookmarks","brilliant","broke","browser","button","chooses","click","containing","design","direct","doesn","download","efforts","extension","first","foolproof","fragile","frequent","hacking","installed","instructions","layout","links","opens","pages","product","quickly","rsquo","serving","sidebar","straight","updates","usually","version","website","working","works"]
	},{
		"title": "Hanging Punctuation in Keynote on Mac",
		"url": "/2018/01/23/hanging-punctuation-in-keynote-on-mac/",
		"tags": ["design","typography"],
		"date": "Jan 23<span>rd</span>, 2018",
		"ts": "1516716000",
		"summary": "I ran into a problem editing a slide in Keynote with a large blockquote. It was left-aligned, which I&rsquo;m great with, but the quote started inside the left margin, which caused visual flow issues. In typography, this is solved with hanging punctuation. I haven&rsquo;t done print design for a long time, but I remembered there being a \"hang punctuation\" feature in most of the apps I&rsquo;d used. I apparently never learned how to do this manually in apps like Pages or Keynote. People who&rsquo;ve been designing in these apps (and probably a dozen others) are scoffing at me right now. I&rsquo;ll take it. If you&rsquo;re curious, it turns out it&rsquo;s as simple as showing the rulers (View->Show Rulers or ⌘R) and dragging the indent marker behind the left margin marker. Here, I made you a video. Hope that&rsquo;s of use to enough people that it outweighs everyone who&rsquo;s rolling their eyes now",
		"keywords": ["keynote","macos","punctuation","typography","hanging","keynote","pages","people","rulers","video","vimeo","apparently","behind","blockquote","bottom","caused","class","container","curious","design","designing","dozen","dragging","editing","enough","everyone","feature","figure","great","hanging","haven","height","https","indent","inside","issues","ldquo","learned","manually","margin","marker","others","outweighs","padding","people","player","print","problem","punctuation","quote","rdquo","remembered","right","rolling","rsquo","rulers","scoffing","showing","simple","slide","solved","started","strong","style","turns","typography","video","videoid","vimeo","visual","width","wikipedia"]
	},{
		"title": "Best of 2017: Real stuff",
		"url": "/2018/01/22/best-of-2017-real-stuff/",
		"tags": ["alexa","amazon","bunch","podcasting","winter"],
		"date": "Jan 22<span>nd</span>, 2018",
		"ts": "1516629600",
		"summary": "Welcome to the Real Stuff edition of my Best of 2017 series. Stuff you can hold, and anything that moves more than just bits and bytes around. Alexa I didn&rsquo;t get a new iPhone in 2017. I didn&rsquo;t really get much Apple gear at all. But I did get into Alexa. I end up using both Siri and Alexa, but have really enjoyed the differences. I bought into the Amazon ecosystem enough to incorporate 3 Echo Dots and a Fire TV Stick with Alexa Voice Remote. I also got a Kindle Oasis, which is proving to be a huge step up from my Paperwhite. By the way, I think Amazon&rsquo;s payment plan is brilliant (or brilliantly devious). Split purchases of any of their hardware up into 4 or 5 payments with no fee or interest. That makes things like a new Kindle feel like impulse items. They&rsquo;re not, but Amazon has always been insidiously good at that. WizGear Universal Magnetic Dashboard Mount I&rsquo;d been excited about the Anker version of this phone mount for my car, but I just couldn&rsquo;t get it to stay stuck to the curved dash of my Audi TT. The WizGear version stuck first time and has never fallen off. It wasn&rsquo;t until after I&rsquo;d finally gotten that to work that the Clear Mounts version for TTs was pointed out to me. So for anyone not driving a TT, WizGear, but for TT owners, Clear Mounts is the clear winner. Audio-Technica ATR2500-USB Cardioid Condenser USB Microphone I&rsquo;ve developed a love for the mid-range USB mics. I own Yetis and Rodes and all kinds of things that cost way too much money. When I started podcasting at 5by5, Dan was kind enough to provide me with a Samson C01UPro, and it was honestly better than the Rode Podcaster I&rsquo;d been using. And it was a $50 mic. I&rsquo;ve tried others over the last few years, but always stuck with the Samson, at least for podcasting. The Audio-Technica ATR2500 may have changed my mind. For $70 it has a better response range with about the same timbre. Yurbuds Earbud Covers I got these after a recommendation on Systematic. They make Apple earbuds wearable for me. My ear canals have never done well with earbuds, but these little rubber add-ons made them stay in and be comfortable. Then I got AirPods&hellip; EarBuddyz 2.0 This is the solution I found for the above issue on my AirPods. Because any skin you put over the pods has to be removed before they&rsquo;ll fit in the charger, the less all-encompassing form factor of the EarBuddyz makes a lot of sense. They give you&hellip;",
		"keywords": ["hardware","abalone","airpods","alexa","amazon","anker","another","apple","audio","bogos","basics","because","black","blower","bottle","brand","brushless","buckles","cardioid","circadian","clear","codenames","condenser","cooking","cordless","cosmos","covers","creating","dashboard","decker","desktop","dragonfly","earbuddyz","earbud","exploding","filament","fluxx","forget","gaffer","gafferpower","grade","hangers","health","heavy","infuser","jordan","kindle","kitchen","kittens","light","lightweight","lumine","mairico","magnetic","microphone","minnesota","minnesotans","mount","mounts","nerding","nonetheless","oasis","optics","paper","paperwhite","performance","personal","phillips","pillips","podcaster","premium","projects","punch","quarto","release","remote","rodes","samson","science","screwdriver","shears","single","split","stage","stainless","staples","steel","stick","strap","stuff","systematic","tabletop","technica","therapy","through","universal","university","velcro","voice","webbing","welcome","while","wizgear","working","works","yetis","yogaaccessories","yurbuds","above","added","admittedly","against","almost","amazing","anyone","appear","applications","array","association","automatic","available","awesome","backpack","backwards","based","battery","before","board","bottle","bought","brain","brands","break","breaking","bright","brilliant","brilliantly","brush","bulbs","bunch","buying","bytes","cabinet","cable","canals","carry","catch","changed","changing","charger","charging","cheap","checkers","chefs","child","choose","clear","clips","color","combination","combo","comfortable","cookbooks","cordless","couldn","couple","covers","cracker","crazy","currency","curved","custom","customizability","decided","definitely","depressed","developed","devious","differences","different","dimming","dinner","direction","disappeared","doesn","dolly","downs","drawers","drill","drink","driveway","driving","ducts","eforwish","earbuds","ecosystem","edition","electric","encompassing","ended","energy"]
	},{
		"title": "The Developer Manifesto poster (+giveaway)",
		"url": "/2018/01/21/the-developer-manifesto-poster-plus-giveaway/",
		"tags": ["design","giveaway"],
		"date": "Jan 21<span>st</span>, 2018",
		"ts": "1516543200",
		"summary": "Among the posters that Tower (my favorite Git client) has published, The Developer Manifesto is one of my favorites. It&rsquo;s a gorgeous piece, either as desktop wallpaper, or as a print. If you use the coupon code right now, you can get 10% off on the poster, as well as anything else in the Tower store. Additionally, I have 2 prints to give away! Sign up below to enter, winners will be drawn at random on Friday, January 26th at noon CST. Each winner receives one poster (value $36), printed and shipped by Printful in LA. Emails entered below will only (ever) be used for notifying the winners. Sorry, this giveaway has ended",
		"keywords": ["developer","manifesto","poster","tower","additionally","among","developer","emails","friday","manifesto","printful","sorry","tower","below","client","coupon","desktop","either","ended","enter","entered","favorite","favorites","giveaway","gorgeous","notifying","piece","poster","posters","print","printed","prints","published","random","receives","right","rsquo","shipped","store","value","wallpaper","winner","winners"]
	},{
		"title": "DaisyDisk is 30% off",
		"url": "/2018/01/16/daisydisk-is-30-percent-off/",
		"tags": ["deals"],
		"date": "Jan 16<span>th</span>, 2018",
		"ts": "1516131060",
		"summary": "I mentioned DaisyDisk as my favorite tool for seeing what&rsquo;s using up space on my hard drive in yesterday&rsquo;s roundup, and it happens that there&rsquo;s a 30% off sale on it right now. Good timing. DaisyDisk scans any folder (or entire disk), then shows you a circular diagram displaying with segmented rings representing all of your files. Hovering over a segment will show categories of files and folders and their total size. Then you can drill into any part of your drive by clicking a segment to show content details. You can use the built-in QuickLook preview to see what you might want to get rid of (you can also reveal in Finder to take a closer look). There&rsquo;s a collection drawer where you can stage files (or entire segments) for trashing. Once you&rsquo;ve browsed through and collected things you don&rsquo;t need, one click clears them out. It&rsquo;s a great tool, and definitely the most elegant in its category. If you don&rsquo;t already have it, this sale is a great time to grab it",
		"keywords": ["creatable","daisydisk","daisydisk","finder","hovering","quicklook","browsed","built","categories","category","circular","clears","click","clicking","closer","collected","collection","content","definitely","details","diagram","displaying","drawer","drill","drive","elegant","entire","favorite","files","folder","folders","great","happens","mentioned","preview","representing","reveal","right","rings","roundup","rsquo","scans","seeing","segment","segmented","segments","shows","space","stage","through","timing","trashing","using","where","yesterday"]
	},{
		"title": "Best of 2017: Nerding out on macOS",
		"url": "/2018/01/15/best-of-2017-nerding-out-on-macos/",
		"tags": ["backup","bunch","desktop","developer","editor","keyboard","launchbar","macos","popclip","setapp","support","terminal","tools","wallpaper"],
		"date": "Jan 15<span>th</span>, 2018",
		"ts": "1516046400",
		"summary": "Welcome to my favorite part of the roundups: nerd stuff. Don&rsquo;t worry, there&rsquo;s cool stuff for everyone here, and I saved the real hardcore nerd stuff for the bottom for the truly adventurous. Standard disclaimer: this is not a complete list of every cool app I use. It&rsquo;s the highlights from the ones I use the most often. Don&rsquo;t be offended if your favorite app (or the app you develop) isn&rsquo;t here, but feel free to add recommendations in the comments! Karabiner Elements How I remap keys on my keyboard to do awesome things like the Hyper Key and Vim navigation. TextExpander Every time I sit down at someone else&rsquo;s computer, it only takes about 2 minutes to realize how much I miss my TextExpander setup. Disclosure: PDFpen developer Smile is a long-time supporter of this blog. This in no way affects the fact that I think their products are top notch. BetterTouchTool My tool for mapping dozens of gestures to my trackpad, from standard swipes to sequenced finger taps. If I have to move a hand to the trackpad, it should be worth it. Also, makes it nearly impossible to use someone else&rsquo;s computer without constantly explaining \"oh yeah, well that works on my computer.\" Keyboard Maestro Only really got into Keyboard Maestro in 2017 after a long time thinking I didn&rsquo;t need it. It can do a lot, and the regex typing triggers alone make it a very cool tool. Bartender 3 In order to work with High Sierra, Bartender (which helps tame the number of icons in your menu bar for nerds that run a LOT of stuff) had to switch from using the \"Bartender Bar\" (which drops down below the menu bar) to actually replacing the contents of the menu bar when switching bars. This slowed it down a bit, but it&rsquo;s still an essential tool and every update (one just came out today) improves performance. Droplr I&rsquo;ve used Droplr for years. It&rsquo;s my primary way of sharing files and screenshots. They&rsquo;ve added markup tools, gif reaction capture, and time-limited links in recent updates. I never attach a file over 40k to an email anymore, just drag it to the menu bar and then hit paste (the link is copied immediately, even if the file takes a while to upload). Dropzone 3 The other place I drag things to in my menu bar. My image editors and optimizers, as well as standalone audio tools and any app I regularly want to drop a file on are in there, as well as a bunch of custom scripts, such as the one that&hellip;",
		"keywords": ["apple","sierra","store","twitter","agile","alfred","annotate","apple","bbedit","backblaze","backup","bartender","bettertouchtool","capto","center","cheaters","cleanmymac","clear","coderunner","creating","daisydisk","daniel","desktop","disclosure","drobo","dropbox","droplr","dropzone","elements","expressions","facebook","fanny","feeder","filemerge","fileloupe","finder","fluid","fogbugz","forklift","forklift","gemini","github","glasses","great","houdahspot","hyper","ignoring","issues","jalkut","jekyll","kaleidoscope","karabiner","keyboard","launchbar","launchcontrol","letters","liquid","macbook","macstories","machine","maestro","markdown","messenger","metadata","mindmeister","monity","nerding","notification","overfull","oyster","pdfpen","passwd","password","patterns","personal","photos","pocket","pockets","popclip","popmaker","potentially","previews","projects","protector","python","regex","regexrx","regexrx","remote","revisions","rubbed","screenfloat","screens","setapp","sierra","since","smile","sparkle","spotlight","standard","stuff","sublime","superduper","terminal","textexpander","textmate","thick","tinkertool","today","touch","touche","tower","unibrow","unique","unsplash","videoloupe","volume","waltr","wallpaper","welcome","wizard","working","works","above","action","added","adventurous","affects","again","alfred","almost","alone","amazingly","amazon","analyzing","annotate","anymore","anywhere","appcast","apple","appreciate","arqbackup","array","assign","attach","audio","available","awesome","backblaze","background","backgrounds","backlink","backup","backups","based","bases","batch","before","below","bettertouchtool","between","blockquote","boost","bored","bottom","brain","bresink","brettterpstra","browse","browser","browsers","built","bunch","button","caches","calloutlist","calls","capabilities","capto","capture","captures","catchall","caught","change","changed","character","cheat","cheaters","check","cherry","choice","choose","class","cleaning","cleanup","clear","client","clipboard","cloned","cloning","cloud","coderunner","collects","command"]
	},{
		"title": "PDFPen: The ultimate tool for going paperless",
		"url": "/2018/01/11/pdfpen-the-ultimate-tool-for-going-paperless/",
		"tags": ["sponsor"],
		"date": "Jan 11<span>th</span>, 2018",
		"ts": "1515672000",
		"summary": "Thanks to PDFPen for sponsoring BrettTerpstra.com this week! PDFpen is great for organizing documents in the new year. Easily split and combine PDF documents to send just the right things to your accountant or your lawyer. Fill in PDF forms, whether they&rsquo;re interactive or not. Add page numbers. Correct typos and redact account numbers. Perform OCR on scanned documents. Find and highlight all instances of a specific term. Visit smilesoftware.com/podcast to learn more about PDFpen",
		"keywords": ["iphone","pdfpen","pdfpenpro","smile","brettterpstra","easily","pdfpen","pdfpen","pdfpenpro","thanks","visit","account","accountant","brettterpstra","class","collections","create","documents","editing","entry","files","forms","going","great","height","highlight","https","image","interactive","lawyer","learn","loading","media","multiple","nofollow","noscript","numbers","organizing","original","paperless","pdfpen","picture","podcast","portfolios","presenting","redact","related","right","rsquo","scanned","smilesoftware","source","specific","split","sponsoring","srcset","title","typos","ultimate","uploads","using","width"]
	},{
		"title": "Best of 2017: Creating on macOS",
		"url": "/2018/01/10/best-of-2017-creating-on-macos/",
		"tags": ["design","macos","markdown","marked","multimarkdown","music","plugin","recording","setapp","video"],
		"date": "Jan 10<span>th</span>, 2018",
		"ts": "1515620580",
		"summary": "For many of us, creating is the same as working, but I&rsquo;ll make a distinction for the sake of categorization. Standard disclaimer: this is not a complete list of every cool app I use. It&rsquo;s the highlights from the ones I use the most often. Don&rsquo;t be offended if your favorite app (or the app you develop) isn&rsquo;t here, but feel free to add recommendations in the comments! Pochade 2 Pochade is still the ideal color picker for me in most cases. Simple eyedropper and color adjustments, and it&rsquo;s really easy to export a color specification in hex, rgb, hsa, or even Cocoa colors (NSColor, CGColor, UIColor). Via Ashley Bischoff, Pochade is officially not being updated anymore. She pointed out ColorSnapper 2, which looks pretty great1. If you want something with palette management, though, Sip (Setapp) is a top notch app and often runs alongside Pochade when I&rsquo;m coding. Affinity Photo and Affinity Designer These 2 apps blew me away this year. I love Acorn (and its automation capabilities), and Pixelmator has always been pretty cool, but nothing has ever been a true Photoshop replacement for me. Affinity Photo takes the cake if you&rsquo;re looking for a vast feature set, a list of capabilities I haven&rsquo;t even come close to exploring all of yet, and a pretty easy learning curve coming from Photoshop principles (and keyboard shortcuts). Affinity Designer is the replacement for Adobe Illustrator. It works perfectly for round-tripping vectors to Affinity Photo, too. I was never as good at Illustrator as I was at Photoshop, and I&rsquo;m not as good at Affinity Designer as I am at Affinity Photo, but I do not regret purchasing both of them. Sketch While Affinity Designer is a complete vector solution, I still prefer Sketch when it comes to designing icons and wireframes, mostly because of its amazing plugin architecture (and the array of available plugins), and its superb batch export capabilities. It makes updating a full icon set in Xcode a one-click process, and simultaneously outputting 1x, 2x, 3x, and PDF versions of a single image a breeze. Permute Setapp I use a variety of video conversion apps, most based on ffmpeg, which I also use from the command line. Among these, Permute has become my app of choice for quickly converting both video and audio files without a lot of fuss. It also integrates well with Downie, automatically converting downloaded videos for iPad/iPhone/Apple TV. Gifox&hellip;",
		"keywords": ["apple","sierra","store","aaron","acorn","adobe","affinity","airfoil","airplay","airport","among","apple","ashley","audio","bischoff","bluetooth","cgcolor","clever","cocoa","colorsnapper","composer","creating","david","deckset","designer","downie","elements","exciting","express","gdocs","gifox","google","great","hearing","illustrator","ithnako","kanban","logic","lovely","markdown","marked","multi","multimarkdown","nscolor","nectar","nerding","ozone","permute","personal","phillips","photo","photoshop","pictures","pixelmator","pochade","possibly","projects","quivers","screenflow","setapp","shush","sierra","simple","sketch","sonos","sounds","sparks","spotify","standard","steadytune","stuff","sublime","tableflip","uicolor","while","words","working","xcode","accessible","acorn","adjustments","admit","affinity","airfoil","alongside","amazing","animated","anymore","apple","architecture","array","attached","audio","automatically","automation","available","avoid","awesome","backlink","based","batch","because","blockquote","boards","break","breeze","brettterpstra","built","bunch","button","calloutlist","cancel","capabilities","carousel","catchall","categorization","change","changes","charliemonroe","choice","class","clever","click","close","coding","color","colors","colorsnapper","comes","coming","command","commenting","comments","complaint","completely","composer","computer","conference","connected","constant","conversion","converting","cooler","coolest","cough","coverage","created","creating","curve","deckset","definitely","describe","designer","designing","detail","develop","development","different","disables","disclaimer","discovered","distinction","documents","doesn","doing","downie","downloaded","easily","editing","edition","editor","effects","ended","endnotes","endorse","entirely","except","exploring","export","external","eyedropper","fairly","favorite","feature","feeling","ffmpeg","files","fnref","footnote","footnotes","forgot","friendly","gifox","gives","gotten","great","group","guitar","handcoding","harder","haven","heard","height"]
	},{
		"title": "Best of 2017: working on macOS",
		"url": "/2018/01/08/best-of-2017-working-on-macos/",
		"tags": ["bookmarking","developer","macos","mailmate","productivity","setapp","support","taskpaper","tools","writing"],
		"date": "Jan 8<span>th</span>, 2018",
		"ts": "1515431760",
		"summary": "As usual, I&rsquo;ve found myself unable to write up the complete 2017 macOS list in any reasonable timeframe, so I&rsquo;m once again splitting it into parts. This year&rsquo;s categories will be \"Working,\" \"Creating,\" and \"Nerding Out.\" Welcome to the Working edition. As I note in every Yearly Top Apps List, this is not a complete list of every cool app I use. It&rsquo;s the highlights from the ones I use the most often. Don&rsquo;t be offended if your favorite app (or the app you develop) isn&rsquo;t here, but feel free to add recommendations in the comments! Setapp I&rsquo;ll mention Setapp right off the bat. While its acceptance hasn&rsquo;t been what many of us hoped, the idea of a single monthly subscription to cover all of the apps you use is still an excellent middle ground between the \"old\" way and the new subscription-based model that many developers are feeling the need to adopt. I highly recommend jumping on board. Apps in this list that are also available on Setapp are marked with the Setapp logo: The apps I use for planning, executing, and tracking my workload. Tower Still the best GUI for working with Git. I seriously love this app. It now supports git-flow, which is just plain awesome. iThoughtsX Setapp iThoughtsX continues to be my top choice for mind mapping on the Mac (and iOS). 2017 saw the addition of support for MindMeister formats, which for me brings it full circle. I use MindMeister&rsquo;s excellent API to quickly round trip my maps for sharing. It would be a grave omission to neglect mentioning MindNode 5. It&rsquo;s a beautiful upgrade to an already-solid app and it still holds a place in my regular workflow. Billings Pro Billings has been my method of invoicing and collecting for all of my freelance work for years. Billings Pro has been a boon, especially with the iOS/watchOS versions. MailMate Yes, MailMate is still my email app of choice. There are so many great options lately, but none of them scratch ALL of the itches that MailMate (combined with SaneBox and Spark on iOS) do. TaskPaper Setapp TaskPaper is my jam. I love the ability to use plain text files synced through Dropbox (and Git, see Task Management for Coders). Simplicity in the format, but scriptable power in the app. OmniFocus I used to switch task managers far too often. I&rsquo;ve stuck happily with OmniFocus for years now. I have great things to say about Things 3 and 2do Setapp, but I&rsquo;m not switching again unless&hellip;",
		"keywords": ["apple","sierra","store","twitter","apple","automatic","banktivity","billings","brave","break","cardhop","center","coders","creating","curio","deliveries","disclosure","dropbox","fantastical","flume","instagram","integrated","macstories","mailmate","management","manager","marsedit","mindmeister","mindnode","multi","nerding","noteplan","noteplan","notification","omnifocus","pdfpen","pdfpenpro","paprika","personal","pinboard","productivity","projects","recipe","regex","sanebox","setapp","sharing","simplicity","smile","social","spark","spillo","stuff","switched","taskpaper","timing","today","tower","tumblr","tweetbot","twitter","welcome","while","wordpress","working","yearly","ability","acceptance","access","accounts","across","added","adopt","affects","again","ahead","albums","allowing","allows","annotation","automatic","automatically","available","avoid","awesome","based","beautiful","because","between","billing","blocking","blogs","board","boasts","bookmark","bookmarking","breakdowns","brings","browser","browsers","browsing","build","calendar","called","cards","categories","categorization","categorize","charts","choice","circle","circumstances","collect","collecting","comments","companion","computer","contact","contacts","continue","continues","converting","cooler","coolest","cover","curiosity","decent","delight","design","develop","developer","developers","dilute","distributed","documents","donations","dragging","easiest","editing","edition","email","emails","especially","excellent","executing","experience","fashion","favorite","features","feeling","files","filters","finances","format","formats","found","freelance","frustrating","getting","going","grave","great","ground","hanging","happen","happily","hellip","highlights","highly","holds","hoped","ibank","icloud","ithoughtsx","improves","index","instant","instantly","integrations","interface","intriguing","invoicing","itches","jumping","keeps","kitchen","latest","lingual","lists","looks","macos","makes","management","manager","managers","managing","mapping","marked","matching","mention","mentioned","mentioning","method","middle"]
	},{
		"title": "Marked 2 holiday sale ends tomorrow",
		"url": "/2018/01/03/marked-2-holiday-sale-ends-tomorrow/",
		"tags": ["marked"],
		"date": "Jan 3<span>rd</span>, 2018",
		"ts": "1515001620",
		"summary": "Hey there. I just wanted to remind you that the Holiday sale on Marked 2 ends tomorrow. Right now, you can pick up Marked for $9.99. I would like it if you did that. P.S. I&rsquo;m actually mostly done with the Marked 2 update with Scrivener 3 and MindNode 5 support. And halfway done with the Best of 2017 macOS edition. And editing Systematic for tomorrow. And a video project you&rsquo;ll like. Just in case you were also looking for a status report. P.P.S. I also updated mdless with a few bugfixes and minor improvements. Nothing to write home about, but improvements nonetheless",
		"keywords": ["marked","brett","holiday","marked","mindnode","nothing","right","scrivener","systematic","bugfixes","editing","edition","halfway","improvements","looking","macos","mdless","minor","mostly","nonetheless","project","remind","report","rsquo","status","support","tomorrow","updated","video","wanted","write"]
	},{
		"title": "Best of 2017: iOS Apps",
		"url": "/2018/01/01/best-of-2017-ios-apps/",
		"tags": ["editor","fitness","keyboard","macos","social","tools","video"],
		"date": "Jan 1<span>st</span>, 2018",
		"ts": "1514830980",
		"summary": "Can you feel the nervous excitement? It&rsquo;s that time of year again. You know, time for Brett&rsquo;s Yearly Top Apps Lists. Here&rsquo;s the first list of apps I loved using in 2017, starting on iOS. You&rsquo;d think I&rsquo;d start writing these sooner and have them already to go by now, but no. I didn&rsquo;t. I&rsquo;ll be working on the Mac edition next. As always, these are highlights, not complete lists. Of course I had to leave many out. There are hundreds of apps on my phone. Nobody has time to talk about all of them, no matter how good they are. Exist.io I have now completed enough \"quantified self\" data entry in Exist to really start seeing correlations. With the addition of custom tags, it&rsquo;s become a great insight into my daily habits. Momento Diary/Journal I&rsquo;ve switched entirely to short journal entries in Exist, but I love the Slogger-esque way that Momento pulls in all of my social media and gives me a calendar format of it. For me, my social media activity is the best journal of a day. MySleepButton Still my favorite sleep app, works every time. Unless I drink caffeine too late in the day. Then there&rsquo;s no helping me. New voice packs and sleep modes were added this year. Insight Timer The best meditation timer, and flexible enough to be useful for all kinds of sequenced, timed events. Also see TimeGlass, an excellent timer utility with multiple timers and a lot of flexibility. Tab Pro I miss the older guitar tab apps I used that have since disappeared, but Tab Pro offers a pretty good set of tools for finding and playing tabs. Best I&rsquo;ve found so far. Tonebridge Tonebridge interfaces with Tab Pro, generating a set of guitar effects to match the original recording of a song. Use it with any guitar interface to practice some Guns N&rsquo; Roses with appropriate Slash effects (or whatever you&rsquo;re into). GuitarTuna This is the best guitar (and any stringed instrument) tuner I&rsquo;ve found. Pro Metronome This has been my favorite metronome app for some time, and the addition of an Apple Watch app and even an Apple TV app have made it my go-to. The TV app is more useful than you might think, by the way. Nuzzel I&rsquo;ve found Nuzzle to be extremely good at gathering content I want to see. It&rsquo;s not great for breaking out of my bubble, but I&rsquo;ve been heading to AllSides to even things out. theSkimm I love Skimm for catching up on news in a hurry. My daily&hellip;",
		"keywords": ["apple","iphone","store","affinity","airmeasure","allsides","alone","amazon","annotable","apple","arcade","augmenting","background","brave","brett","capturing","clone","conduct","creating","deliveries","diary","drafts","editing","edition","editorial","enlight","entertainment","exist","export","gboard","github","goofing","google","grammarly","guitartuna","halide","hemingway","highlight","highly","insight","journal","keeping","keyboards","lists","macbook","maker","making","mapping","metro","metronome","mindmeister","mindnode","momento","music","myfonts","mysleepbutton","nerdier","nerding","night","nobody","notes","noting","nuzzel","nuzzle","paprika","passive","personal","photo","photofox","photos","pixelmator","point","projects","prompt","prosing","puzzle","reality","roses","screens","severed","shazam","similar","skimm","slash","slice","slogger","speed","staying","story","streamtome","stuff","tapmeasure","timeglass","timer","today","tonebridge","unsplash","vellum","wallpapers","watch","whatthefont","working","writer","yearly","absolute","access","accurate","activity","adblocker","added","adults","advanced","affinity","again","aging","airmeasure","allsides","alone","amazing","amazon","angles","annotable","annotation","apple","arcade","article","aspect","augmenting","automatically","available","background","backlink","balance","balanced","based","basic","battery","battle","beating","beautiful","because","before","blend","blocking","blockquote","brave","breakfast","breaking","bretts","brettterpstra","brilliant","browser","bubble","build","built","bunch","cabinets","caffeine","calendar","calloutlist","camera","capture","capturing","catching","category","cause","ceiling","challenge","challenges","changed","characters","checking","choice","choose","cities","class","client","clients","clone","close","coding","combination","companion","compared","completed","completions","complex","compositing","conduct","confused","connected","constellation","content","contrast","control","convenience","corner","correlations","creating","custom","daily","deleted","deliveries"]
	},{
		"title": "30% off CleanMyMac (and every MacPaw app) for the next 3 days",
		"url": "/2017/12/26/30-percent-off-macpaw-christmas-sale/",
		"tags": [],
		"date": "Dec 26<span>th</span>, 2017",
		"ts": "1514296800",
		"summary": "For the next 3 days, MacPaw is offering a 30% off sale on every app in their suite, including CleanMyMac 3, Gemini, MacHider, and CleanMyPC. I&rsquo;ve talked a lot about CleanMyMac 3, (even included it in my last e-book, 60 Mac Tips: Volume 2), and I use it regularly for keeping my system lean and mean, as well as maintenance tasks and secure file deletion (among other things). I also use Gemini, and it&rsquo;s especially handy for locating duplicate files taking up space. Honestly, it&rsquo;s the best out of the multiple apps I&rsquo;ve tried for that purpose, matching files with minor variations that others wouldn&rsquo;t pick up on and determining their level of difference. So if you&rsquo;re looking for some end of year savings on some best-in-class apps, take advantage of the great deals on CleanMyMac 3, Gemini, MacHider, CleanMyPC at the MacPaw Store",
		"keywords": ["gemini","machider","christmas","cleanmymac","discount","macpaw","cleanmymac","cleanmypc","gemini","honestly","machider","macpaw","store","volume","advantage","among","class","deals","deletion","determining","difference","duplicate","especially","files","great","handy","included","including","keeping","level","locating","looking","maintenance","matching","minor","multiple","offering","others","regularly","rsquo","savings","secure","space","suite","system","taking","talked","tasks","tried","variations","wouldn"]
	},{
		"title": "Happy Holidays: Marked 2 25% off",
		"url": "/2017/12/21/happy-holidays-marked-2-25-percent-off/",
		"tags": ["marked"],
		"date": "Dec 21<span>st</span>, 2017",
		"ts": "1513889040",
		"summary": "As we hit the end of the year, I&rsquo;m offering Marked 2 for $9.99 (normally $13.99), on both the direct version and in the Mac App Store. I know that not everybody has friends and family that are as interested (or in need of) Markdown tools as they are, but feel free to pass the news on to anyone you think could use it. Put it on a hand-drawn coupon. It makes a way better gift than a \"1 free hug\" coupon, which is never as well-received as you think",
		"keywords": ["discount","markdown","marked","productivity","happy","holidays","markdown","marked","store","anyone","coupon","direct","everybody","family","friends","interested","makes","normally","offering","received","rsquo","think","tools","version"]
	},{
		"title": "12StarApps - Discounts on apps from EU indie devs",
		"url": "/2017/12/21/12starapps-discounts-on-apps-from-eu-indie-devs/",
		"tags": ["macos"],
		"date": "Dec 21<span>st</span>, 2017",
		"ts": "1513880400",
		"summary": "After posting about App Santa 2017, Daniel Alm (developer of Timing) let me know about 12★Apps, a sale on apps from indie developers in the European Union. Until January 2nd, some great apps are 25%&ndash;70% off their normal prices. I&rsquo;ve used almost every app on this list and it&rsquo;s an amazing collection of quality tools: Notebooks (71% off) Notebooks for Mac (52% off) Working Copy (30% off) GIF&rsquo;ted (25% off) Submerge (25% off) iStopMotion for iPad (50% off) mimoLive Reporter (50% off) QuickScale (68% off) Carbo (39% off) Prizmo for iOS (27% off) Prizmo for Mac (30% off) PocketCAS for iOS (50% off) PocketCAS for Mac (50% off) Timing (25% off) VideoGrade (35% off) Where To? (71% off) Remote Buddy (20% off) Money for iOS (58% off) Money for Mac (50% off) ColorSnapper 2 (30% off) Byword for iOS (50% off) Byword for Mac (46% off) Linky (44% off) You might also want to check out Eltima&rsquo;s gamified holiday sale on all of their apps, including Folx PRO, Commander One, and Elmedia Player",
		"keywords": ["discount","europe","holiday","indie","buddy","byword","carbo","colorsnapper","commander","daniel","elmedia","eltima","european","linky","money","notebooks","player","pocketcas","prizmo","quickscale","remote","reporter","santa","submerge","timing","union","videograde","where","working","almost","amazing","appcamp","brettterpstra","check","class","collection","deals","details","developer","developers","eltima","gamified","girls","great","height","holiday","https","istopmotion","image","including","indie","loading","media","mimolive","ndash","normal","noscript","original","picture","posting","prices","quality","rsquo","santa","source","srcset","starapps","supports","timingapp","title","tools","uploads","width"]
	},{
		"title": "MightyDeals: 1400 Fully Customizable Infographic Templates - only $24",
		"url": "/2017/12/21/mightydeals-1400-fully-customizable-infographic-templates-only-24-dollars/",
		"tags": ["sponsor"],
		"date": "Dec 21<span>st</span>, 2017",
		"ts": "1513857600",
		"summary": "Thanks to MightyDeals for sponsoring BrettTerpstra.com this week! Get your message across in an entertaining and shareable way. This info-packed bundle features 1400 colorful Infographic Templates perfect for any industry from social media and marketing to medical. All highly customizable with your preferred editing programs. Templates are designed in a 16x9 aspect ratio, ready for modern displays. Each template comes in multiple formats (PPT, PPTX, KEY, PSD, EPS, AI, JPEG) so they&rsquo;re fully customizable to suit your needs. Edit in: The templates cover a wide variety of subjects, including marketing, diagrams, charts, education, medicine and more, so you&rsquo;re sure to have a stockpile of graphics for every project. Normally, this huge bundle sells for $1400, but for a limited time only, you can get all 1400 Infographic templates for only $24! That&rsquo;s a savings of 98% off the regular price. If you previously purchased this deal, you can get just the new items for only $10",
		"keywords": ["infographics","templates","brettterpstra","illustrator","infographic","keynote","mightydeals","normally","photoshop","powerpoint","templates","thanks","visit","across","artistic","aspect","bundle","charts","colorful","comes","cover","customizable","designed","diagrams","displays","editing","education","entertaining","features","formats","fully","graphics","highly","including","industry","items","limited","marketing","media","medical","medicine","message","modern","multiple","needs","overflow","packed","preferred","previously","price","programs","project","purchased","ratio","ready","regular","rsquo","savings","sells","shareable","social","sponsoring","stockpile","subjects","template","templates","today","toolbox","variety"]
	},{
		"title": "Web Excursions for December 20, 2017",
		"url": "/2017/12/20/web-excursions-for-december-20-2017/",
		"tags": ["bookmarks"],
		"date": "Dec 20<span>th</span>, 2017",
		"ts": "1513778400",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. ImpostorRoster This might be one of my favorite things of the year. You&rsquo;re not alone in your imposter syndrome. Sustainable Software: A User Perspective Via Luis Queirós: \"Thinking about software and humans. Free and utilitarian or expensive and pleasing?\" VoodooPad acquired by Primate Labs VoodooPad has been switched owners again, this time to Primate Labs. Here&rsquo;s hoping that there&rsquo;s a renewed push on development, I&rsquo;d love to get back into it. MarsEdit 4 - Powerful web publishing from your Mac. After a few years of quiet updates, MarsEdit gets a full version bump. If you don&rsquo;t remember, it&rsquo;s a desktop blog editing application (macOS) that works with WordPress, Blogger, Tumblr, Movable Type, and many other systems. ColorHelper - Packages - Package Control One of my new favorite Sublime Text packages. ColorHelper makes work with colors easier by providing inline color previews in your documents (ST3 build 3118+) and offers tooltips with color previews of stylesheet colors, provides color translation, and allows the storing and accessing of favorite colors in color palettes",
		"keywords": ["marsedit","source","sublime","blogger","cleanmymac","colorhelper","control","impostorroster","marsedit","movable","package","packages","perspective","powerful","primate","queir","software","sublime","sustainable","thinking","tumblr","voodoopad","wordpress","absolute","accessing","acquired","again","allows","alone","blockquote","border","brettterpstra","brought","build","class","color","colors","desktop","development","display","documents","easier","editing","excursions","expensive","favorite","height","hidden","hoping","https","humans","image","impactradius","imposter","impostorroster","inline","ldquo","loading","macos","macpaw","makes","marsedit","media","medium","noscript","offers","original","owners","packagecontrol","packages","palettes","partnership","perspective","picture","pleasing","position","previews","provides","providing","publishing","queiros","quiet","rdquo","remember","renewed","rsquo","software","source","speed","srcset","storing","style","stylesheet","sustainable","sweater","switched","syndrome","systems","title","tools","tooltips","translation","updates","uploads","utilitarian","version","visibility","voodoopad","width","works","years"]
	},{
		"title": "App Santa 2017 supports AppCamp4Girls",
		"url": "/2017/12/19/app-santa-2017-supports-appcamp4girls/",
		"tags": ["appstore"],
		"date": "Dec 19<span>th</span>, 2017",
		"ts": "1513706700",
		"summary": "Just a note that this year&rsquo;s App Santa has gone live with savings of up to 80% on award-winning apps from independent developers until December 26th. And 25% of the Affiliate revenue goes to AppCamp4Girls, one of my favorite organizations and a very worthy cause. Note: all links in this post are linked to Realmac&rsquo;s affiliate token, so purchasing from a link here will directly benefit AppCamp4Girls, not me. iOS Games: Hidden Folks, Mini Metro, SmartOthello, Alto&rsquo;s Adventure, Conduct AR!, Tengami, Steredenn, Shadowmatic, Prune, and Burly Men at Sea. iOS Apps: Twitterrific, Star Walk 2, Halide , WaterMinder, Green Kitchen, Chronicle, Castro, Deliveries, Tap Forms 5 Organizer, Screens, and Linea. Mac Apps: Twitterrific, Deliveries, Screens, Focused, Chronicle, Paste, Unclutter, and Tap Forms 5 Organizer",
		"keywords": ["games","iphone","realmac","santa","adventure","affiliate","appcamp","burly","castro","check","chronicle","conduct","deliveries","focused","folks","forms","games","girls","green","halide","hidden","kitchen","linea","metro","organizer","paste","prune","realmac","santa","screens","shadowmatic","smartothello","steredenn","tengami","twitterrific","unclutter","waterminder","affiliate","award","benefit","cause","developers","directly","favorite","included","independent","linked","links","organizations","purchasing","revenue","rsquo","savings","support","token","winning","worthy"]
	},{
		"title": "Communicate smarter with TextExpander",
		"url": "/2017/12/14/communicate-smarter-with-textexpander/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Dec 14<span>th</span>, 2017",
		"ts": "1513256400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander helps you communicate smarter. What do we mean by that? Let&rsquo;s say you get home from a conference. You&rsquo;ve got a collection of new contacts, and you want to follow up. You can create a single TextExpander snippet with your follow-up message, perfectly worded with no typos. Use fill-in fields for the contact name and a custom subject, and presto, you&rsquo;re breezing through that stack of business cards in minutes, instead of hours. You can also share your snippet with colleagues, and everyone gets things done faster, and more consistently. Consistent, company-wide messaging is simple with shared snippet groups. That&rsquo;s the power and the magic of snippets, and it&rsquo;s just one example of what you can do with TextExpander. Also check out the new Past and Future Dates snippet group. It&rsquo;s a great demonstration of a small subset of TextExpander&rsquo;s capabilities. Visit TextExpander.com/podcast for 20% off your first year",
		"keywords": ["productivityt","smile","textexpander","brettterpstra","consistent","dates","textexpander","thanks","visit","breezing","business","capabilities","cards","check","colleagues","collection","company","conference","consistently","contact","contacts","create","custom","demonstration","everyone","example","faster","fields","first","great","group","groups","helps","hours","magic","message","messaging","minutes","perfectly","podcast","presto","rsquo","share","shared","simple","single","small","smarter","snippet","snippets","sponsoring","stack","subset","through","typos","worded"]
	},{
		"title": "A great deal on Curio Core, the ultimate brainstorming app",
		"url": "/2017/12/13/a-great-deal-on-curio-core-the-ultimate-brainstorming-app/",
		"tags": ["productivity"],
		"date": "Dec 13<span>th</span>, 2017",
		"ts": "1513198800",
		"summary": "I almost missed a chance to point to the Curio Core sale, but it&rsquo;s been extended for a week so there&rsquo;s still time to get it at 33% off. If you&rsquo;re not familiar with Curio, it&rsquo;s basically what I consider the ultimate in brainstorming apps. It&rsquo;s also great for project management and information gathering. You can integrate mind maps, outlines, text, images, file attachments and more, all in a free-form space that can adapt to fit your needs. I&rsquo;ve written about it many times over the years. The Core edition is the most basic of the three available versions, but it packs all of the power an individual would need to use Curio&rsquo;s tools to their fullest. Grab it while it&rsquo;s on sale, marked down from $60 to $39.99",
		"keywords": ["curio","adapt","almost","attachments","available","basic","brainstorming","chance","consider","edition","extended","familiar","fullest","gathering","great","images","individual","information","integrate","management","marked","missed","needs","outlines","packs","point","project","rsquo","space","times","tools","ultimate","versions","while","written","years"]
	},{
		"title": "A MailMate command for SaneBox SaneAttachments",
		"url": "/2017/12/13/a-mailmate-command-for-sanebox-saneattachments/",
		"tags": ["email","mailmate","scripting"],
		"date": "Dec 13<span>th</span>, 2017",
		"ts": "1513188720",
		"summary": "MailMate is my email app of choice on macOS, and not only because it supports Markdown. It&rsquo;s customizable to an extreme, and for a nerd like me it allows me to use exactly the email management and organization system I choose (i.e. \"spend too much time refining and modifying\"). I use it with Readdle&rsquo;s Spark on iOS and have it correspond tags to Gmail labels, use Gmail style single-key shortcuts, and all kinds of other fun stuff. MailMate was one of my 2016 picks for best productivity apps. SaneBox is a service that intelligently sorts my email into categories. My inbox only contains emails that are actually of importance, other messages get sorted into \"Later\", \"Bulk\", \"News\", \"Reading\", etc.. Also, \"BlackHole\" for senders I never want to see again but don&rsquo;t want to click a sketchy \"unsubscribe\" link. It&rsquo;s easily trainable and completely indispensable. One of its features is \"SaneAttachments,\" which automatically finds emails with large attachments, moves them to Dropbox, and replaces the email with one containing only the Dropbox links. The originals are saved for a period of time, then cleared out of your mailbox. I love this feature. My only issue with it is that the links go to the Dropbox website. Obviously, that&rsquo;s the best solution for cross-platform compatibility. But when I&rsquo;m on my Mac, getting to the files requires opening the link in a browser and then using Dropbox&rsquo;s slightly inconsistent interface to reveal the files locally. So I wrote a MailMate bundle command to reveal the files directly in Finder with a keystroke. I started a MailMateMate bundle on GitHub. Right now it only has two commands, and one of them is completely useless since MailMate comes with a \"Copy Message URL\" command built in. But the new command, \"Reveal SaneAttachments,\" is delightful, if I may say so. Hit ⌘Y, choose the command, and it will scan the email body for all of the file links, then open a Finder window with all of the files from that message selected. To install this custom bundle, download the latest release from GitHub, unzip it, and place the entire \".mmbundle\" folder into . Once it&rsquo;s there, you can select a message with SaneAttachments and hit ⌘Y (Command-Y) to run it. If you&rsquo;re into git and want to easily keep the bundle updated, you can clone the repo in Terminal: I don&rsquo;t know how many more I&rsquo;ll add, but there might be more fun stuff coming. If you&rsquo;re a bit of a nerd (er&hellip;",
		"keywords": ["bundle","command","productivity","sanebox","blackhole","bundles","command","dropbox","finder","github","gmail","later","library","mailmate","mailmatemate","markdown","message","readdle","reading","reveal","right","saneattachments","sanebox","spark","support","terminal","worth","again","allows","apple","attachments","automatic","automatically","because","brettterpstra","browser","built","bundle","categories","choice","choose","class","cleared","click","clone","comes","coming","command","commands","compatibility","completely","containing","contains","conversation","cross","custom","customizable","delightful","directly","download","easily","effortless","email","emailicon","emails","entire","everyone","extreme","feature","features","files","finds","folder","freron","getting","github","haven","height","highlight","highlighter","https","image","importance","inbox","inconsistent","indispensable","install","intelligently","interface","itunes","keystroke","kinds","labels","language","latest","ldquo","links","loading","locally","macos","mailbox","management","media","message","messages","mmbundle","mmbundle","modifying","moves","needed","nerdery","noscript","opening","organization","original","originals","picks","picture","plaintext","platform","productivity","rdquo","readdle","refining","release","replaces","requires","reveal","rouge","rsquo","sanebox","saved","selected","senders","service","shortcuts","since","single","sketchy","slightly","solution","sorted","sorts","source","spark","spend","srcset","started","starters","strong","stuff","style","supports","suppose","system","taken","title","topics","trainable","ttscoff","unsubscribe","unzip","updated","uploads","useless","using","website","width","window","wrote"]
	},{
		"title": "A few tips for podcast editing in Logic",
		"url": "/2017/12/12/a-few-tips-for-podcast-editing-in-logic/",
		"tags": ["macos","podcasting"],
		"date": "Dec 12<span>th</span>, 2017",
		"ts": "1513108740",
		"summary": "I&rsquo;ve been editing podcasts in Logic for a few years, but have only recently learned a few tips that made me realize I&rsquo;ve essentially been doing it wrong the whole time. I&rsquo;m sure Logic veterans will smack their heads reading these, but for anyone new to producing podcasts with Logic, they might be great time (and frustration) savers. Credit for teaching me a lot of these goes to Aaron Dowd, creator of The Podcast Dude podcast and the Successful Podcasting Course. He&rsquo;s a pro, and I&rsquo;ve learned a lot in the last month that I hadn&rsquo;t after years of using Logic. There are a lot of things in the control bar (top of the window, where the time/tempo are) that you&rsquo;ll never need when editing podcasts. Things like BPM, for example. You can clean it up significantly by using the dropdown on the right of the \"LCD\" display and choosing Customize Control Bar and Display&hellip;. Note that you can have different \"screensets\" for different types of recording/editing. Use 1—4 to switch between them. Pick a placeholder (or create a new one) to set up for podcast editing, then once you&rsquo;re done customizing, choose Save as Defaults. Then you won&rsquo;t lose your \"normal\" control bar in the process. I&rsquo;ve trimmed mine down to just what you see below. I use keyboard shortcuts for almost every button on the control bar, so there&rsquo;s really no point in having them. Varispeed is a feature I didn&rsquo;t realize existed until recently, but had always wished for. It lets you speed up the audio playback so you can basically listen through your podcast at 2x while editing. Once the toolbar item is enabled, just use ⌃F (Control-F) to toggle it on and off. (I think that&rsquo;s the default, but I might have edited that one. We&rsquo;ll get to that below.) Once it&rsquo;s up, ensure that the type is set to Speed Only (click the top line for a menu), then double click on the percentage to edit it anywhere between -50% and 100% (100% being double normal playback speed). While playing back you can just hit the shortcut to speed up and then toggle it back off to return to normal speed. Scrubbing! I only use this one when there are issues with background noise. It&rsquo;s most helpful when you&rsquo;re trying to put together more than two participants, but even when there&rsquo;s just a microphone picking up too much ambient noise, it removes all the parts where the person isn&rsquo;t talking. It doesn&rsquo;t silence&hellip;",
		"keywords": ["editing","logic","podcast","aaron","another","audio","commands","compressor","control","credit","customize","defaults","display","ecamm","generally","happy","hyper","jason","leave","logic","podcast","podcasting","presets","recorder","region","remove","removing","scrubbing","silence","snell","speed","split","successful","template","templates","tracks","varispeed","while","zooming","action","adjust","admittedly","again","almost","alterations","ambient","anyone","anywhere","arises","assign","assigned","assignment","audio","automation","background","basic","because","beginning","below","between","brettterpstra","button","changed","choose","choosing","class","clean","clearly","click","clips","combination","combo","command","commands","control","controls","create","creating","creator","customize","customizing","default","describe","different","display","doesn","doing","double","dropdown","easiest","edited","editing","enabled","entire","episode","especially","essentially","everything","example","except","existed","exports","feature","files","first","frustration","great","handy","having","heads","height","hellip","helpful","horizontally","https","hundred","image","inserts","intro","issues","keybindings","keyboard","ldquo","learn","learned","learning","length","library","likely","listen","loading","makes","media","microphone","multiple","music","necessity","noise","normal","noscript","obvious","ordered","original","outro","participants","parts","persist","person","picking","picture","placeholder","playback","playing","plugin","plugins","podcast","podcastdude","podcasting","podcasts","point","points","possible","practice","preset","presets","process","producing","project","quickly","rdquo","reading","realize","recently","recording","region","remove","removes","removing","results","return","right","ripple","rsquo","savers","saves","saving","screensets","seanwes","section","sections","settings","setup","shortcut","shortcuts","sides","significant","significantly","silence","simple","sixcolors","smack","small","source"]
	},{
		"title": "Web Excursions for December 11, 2017",
		"url": "/2017/12/11/web-excursions-for-december-11-2017/",
		"tags": ["bookmarks"],
		"date": "Dec 11<span>th</span>, 2017",
		"ts": "1513008060",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. An Open Source Etiquette Guidebook I wholeheartedly endorse the guidelines that Kent C. Dodds and Sarah Drasner lay out in this post. From \"Saying thank you for the project before making an inquiry about a new feature or filing a bug is usually appreciated\" to \"Don’t close a PR from an active contributor and reimplement the same thing yourself,\" this is a concise compendium of rules everyone involved in open source should take to heart. (And yes, I&rsquo;ve been guilty of some of these in the past and have seen the fallout, so my agreement with them has been earned through experience.) I study liars. I’ve never seen one like President Trump. I don&rsquo;t usually include politics in the roundups, but this opinion piece covers a topic in our current \"situation\" that I&rsquo;ve found morbidly fascinating. The rate and maliciousness with which Trump lies is historic. Not just for a president, but for a human. The internet makes it possible, but it also makes speedy fact-checking easier. So, break even? Not really. Shirt Pocket Watch - Snapshot Surprise! I&rsquo;ve gone from \"hoo boy, will SuperDuper still work the same with APFS\" to \"oh man, this is way better.\" Time machine-like backups with history image restore, plus your clone drive can boot to multiple historical snapshots&hellip; awesome. Sources: Apple is acquiring music recognition app Shazam I&rsquo;ve been enjoying the simplicity of \"Hey Siri, what song is this,\" and I think that Apple going ahead and outright acquiring Shazam is a prudent business move. TLDR pages Community-driven man pages similar to bropages. Concise usage examples for unix commands, from the command line",
		"keywords": ["source","trump","apple","check","community","concise","dodds","drasner","etiquette","guidebook","pocket","president","sarah","saying","setapp","shazam","shirt","snapshot","source","sources","superduper","surprise","trump","watch","access","acquiring","active","agreement","ahead","apple","appreciated","awesome","backups","before","break","brettterpstra","bropages","brought","business","checking","class","clone","close","command","commands","comments","compendium","concise","contributor","covers","drive","driven","earned","easier","endorse","enjoying","etiquette","everyone","examples","excursions","experience","fallout","fascinating","feature","filing","found","going","guidebook","guidelines","guilty","heart","height","hellip","historic","historical","history","https","human","hundreds","image","index","inquiry","internet","involved","ldquo","liars","loading","machine","makes","making","maliciousness","media","monthly","morbidly","multiple","music","noscript","original","outlook","outright","pages","partnership","picture","piece","pocket","politics","possible","president","project","prudent","rdquo","recognition","reimplement","restore","roundups","rsquo","rules","setapp","shadedgrey","shazam","shirt","similar","simplicity","situation","snapshot","snapshots","source","sources","speedy","srcset","story","study","subscription","surprise","techcrunch","thank","think","through","title","today","topic","tricks","trump","uploads","usage","usually","washingtonpost","wholeheartedly","width"]
	},{
		"title": "Stockio: the best site for free design assets",
		"url": "/2017/12/07/stockio-the-best-site-for-free-design-assets/",
		"tags": ["sponsor"],
		"date": "Dec 7<span>th</span>, 2017",
		"ts": "1512648000",
		"summary": "Thanks to Stockio for sponsoring BrettTerpstra.com this week! Design assets are the lifeblood of any creative process. Images inspire, typefaces communicate, icons clarify. Whatever the scope of your project, assets are the building blocks of your design. Any fresh source of stock assets is a boon to the design community, and the latest treasure trove of resources is stockio.com with photos, videos, vectors, icons, and even fonts, designed to inspire and stock the toolboxes of the web design industry. Stockio resources are absolutely free to download, and can be used for both personal and commercial projects. Sourced from some of the most popular asset producers, Stockio&rsquo;s assets have been handpicked to be useful to designers. Stockio has the great search options you need to take advantage of a resource this vast. When browsing images, similar photos are displayed on the download page; some of the best discoveries come by simply clicking on the next thumbnail and seeing where it takes you. You can even search by color and quickly locate photos or vectors containing the color you need. It&rsquo;s perfect when you&rsquo;re working with a brand-specific palette and need assets to match. Stockio includes enough assets to pack your toolbox until next year. There are over 4,500 icons and the collection is growing. When it comes to free fonts, you&rsquo;re spoiled for choice. There are over 11,000 free fonts on Stockio, more than you can use in a lifetime of design. And they aren&rsquo;t the usual low quality fonts you often find for free, whether you&rsquo;re looking for a typeface for a logo, or something readable for body text, there are some real gems here",
		"keywords": ["assets","design","stock","stockio","brettterpstra","design","images","sourced","stockio","thanks","whatever","advantage","asset","assets","blocks","brand","browsing","building","check","choice","clarify","clicking","collection","color","comes","commercial","community","containing","creative","design","designed","designers","designing","discoveries","displayed","download","enough","fonts","fresh","great","growing","handpicked","icons","images","includes","industry","inspire","latest","lifeblood","lifetime","looking","match","often","options","palette","personal","photos","popular","process","producers","project","projects","quality","quickly","readable","resource","resources","rsquo","scope","search","seeing","similar","simply","source","specific","spoiled","sponsoring","stock","stockio","takes","thumbnail","toolbox","toolboxes","treasure","trove","typeface","typefaces","useful","vectors","videos","where","working"]
	},{
		"title": "Task management for coders",
		"url": "/2017/12/01/task-management-for-coders/",
		"tags": ["productivity","taskpaper"],
		"date": "Dec 1<span>st</span>, 2017",
		"ts": "1512158100",
		"summary": "I&rsquo;ve had a few really good coding days in a row here, which has meant not as much blogging this week. I figure Friday is a great time to offer a quick overview of how I manage coding projects with TaskPaper and a few command line scripts, since I&rsquo;ve been doing a lot of that this week. This system is for people working on projects that involve time in Terminal. That&rsquo;s going to be mostly programmers and web developers, I think. Everyone else should probably just wait for my next fun post on mind mapping or something&hellip; I keep a TaskPaper file for each project in the root of the project folder. This gets included in a git repo, syncing to everywhere I work on the project, and allows me to go nuts with todos for a particular project without terribly cluttering up OmniFocus. I&rsquo;ve been doing this for a long time and it&rsquo;s always worked really well. When I start a new project, I just run (info below) to create a base skeleton. I can edit this directly in TaskPaper or in any text editor (or TaskMator on my iPhone). While I&rsquo;m working, I add new todo items to my Inbox using . Often todo items are bugs reported via my ticketing system, so they&rsquo;ll be a quick description with priority level and a link to the ticket. Sometimes I notice a bug while working on another one, and I&rsquo;ll add it as a todo so I don&rsquo;t get off-track. Same with new ideas for the roadmap (or feature requests from users). When I into a project folder, shows me my top todo items via a hook. I can also type at any time to see what&rsquo;s up next. works with sub-projects, listing them recursively, and even with seeing what&rsquo;s next in a project in any other folder where I&rsquo;ve used before. Global todo lists. Tags in TaskPaper are created with an syntax, and you can add a value to a tag using parentheses, e.g. , which is how I quickly sort my roadmaps and bug reports. My priority system uses 1-5, with 5 being the highest. It translates to: 1 and 2: Very low priority, but still intend to do when possible. 2s are things that I think I should tackle before 1, but still considered unimportant. 3: Important but not urgent. They definitely need to be tackled. Eventually. 4: Top priority, but not roadblocks for the current release. 5: Urgent, and must be completed in order to release this version. I regularly review the items in each priority, modifying them based on changing circumstances. Because I only work for myself&hellip;",
		"keywords": ["developer","management","action","archive","bashmarks","because","create","defaultkeybinding","definitions","eventually","everyone","features","friday","github","global","ideas","important","inbox","keybindings","marked","maybe","often","omnifocus","plaintasks","priorities","priority","project","running","search","sometimes","sublimetext","taskmator","taskpaper","taskmator","terminal","urgent","using","value","while","action","actions","adding","alias","allow","allows","animated","another","apple","archived","argument","arguments","attaching","based","bashmarks","basic","before","below","between","bitwriter","blogging","brettterpstra","built","bumped","called","caption","categories","change","changes","changing","circumstances","class","cleared","click","client","cluttering","coders","coding","command","comments","common","completed","considered","couple","create","created","creates","customers","default","defining","definitely","definitions","demoted","description","detail","developers","directly","directory","documented","doesn","doing","drill","editor","everything","everywhere","example","exist","feature","features","figure","files","filling","filter","finds","folder","format","frame","function","functionality","github","going","great","guide","happened","height","hellip","highest","highlight","highlighter","https","huyng","iphone","ideas","image","inbox","included","interesting","involve","items","itself","itunes","keybindings","language","ldquo","leading","level","listing","lists","loading","local","looks","lsquo","makes","management","managing","manually","mapping","marked","master","maybe","meant","media","mentioned","modifying","morning","mostly","mynewproject","mynewproject","myself","names","nataskpaper","navigate","needed","needs","noscript","notch","nvalt","obvious","offer","often","opens","organizing","original","originally","overload","overview","package","parentheses","particular","people","picture","plaintext","possible","priorities","priority","programmers","project","projects","prompt","pulled","pushed","quick","quickly"]
	},{
		"title": "Fight price discrimination with award-winning tigerVPN",
		"url": "/2017/11/30/fight-price-discrimination-with-award-winning-tigervpn/",
		"tags": ["sponsor"],
		"date": "Nov 30<span>th</span>, 2017",
		"ts": "1512043200",
		"summary": "Thanks to tigerVPN for sponsoring BrettTerpstra.com this week! You might be surprised to find out the flight tickets you just bought were much cheaper in a different country. The marketing industry calls this Geo-IP pricing discrimination and it happens more often than you think. When you enter a website, your device communicates with a server revealing your IP address. At first, that IP looks just like a random number, but it includes country, city, and heck, even district information. Companies like Google (especially Analytics) then map your Geo-IP, allowing marketers to estimate your spending value and shopping habits while you browse the Internet. That leads to price surges on things you buy: the higher your country ranks on the GDP list, the higher the prices. So what can you do about it? Get tigerVPN&rsquo;s privacy & geo-location app for Windows, Mac, iOS and Android and pick any of the 63 locations in over 43 countries on all continents. You can score much better prices when purchasing \"abroad,\" and on top of the immediate benefits of changing geo-locations and hopping restriction fences while traveling, your entire communication is encrypted and secure &mdash; so take that, NSA! tigerVPN launched in 2011 and has helped hundreds of thousands customers protect their privacy over the years. They&rsquo;re currently running a no-brainer promo: 77% off! For just $2.75/month you enjoy geo unblocking and privacy protection at the cost of a cup of coffee - so get tigerVPN now",
		"keywords": ["analytics","android","brettterpstra","companies","google","internet","sponsored","syndicate","thanks","windows","abroad","address","allowing","benefits","bought","brainer","browse","calls","changing","cheaper","coffee","communicates","communication","continents","countries","country","customers","device","different","discrimination","district","encrypted","enjoy","enter","entire","especially","estimate","fences","first","flight","habits","happens","helped","higher","hopping","hundreds","immediate","includes","industry","information","launched","leads","location","locations","looks","marketers","marketing","mdash","often","price","prices","pricing","privacy","promo","protect","protection","purchasing","random","ranks","revealing","rsquo","running","score","secure","server","shopping","spending","sponsoring","surges","surprised","think","thousands","tickets","tigervpn","traveling","unblocking","value","website","while","years"]
	},{
		"title": "Cyber Monday: Marked 40% off",
		"url": "/2017/11/27/cyber-monday-marked-40-percent-off/",
		"tags": ["deals","marked"],
		"date": "Nov 27<span>th</span>, 2017",
		"ts": "1511802600",
		"summary": "If I were better at marketing, I would have made sure I got Marked 2 into some roundups and spread this deal far and wide, but I&rsquo;m busy and stressed out, and I&rsquo;m bad at marketing when I&rsquo;m busy and stressed out. So you get to read about it here. For today and tomorrow only, you can get 40% off the direct version of Marked 2. That&rsquo;s the non-sandboxed version that allows more full-fledged running of your own custom scripts and processors, but is otherwise the same as the Mac App Store version. Use the coupon at checkout and get Marked for $8.39, 40% off the usual price of $13.99. Follow this link to apply the coupon automatically. Already have Marked 2? Share this coupon with anyone you think needs it! Marked can make collaborating easy with consistent previews and full CriticMarkdown support. Also, the next update got a little delayed with a couple of bugs I really wanted to fix, but I&rsquo;m going to push it out this week anyway and do some more incremental updates. In addition to the previously-teased new features, the latest version does update Scrivener support for version 3 (new document format) while maintaining compatibility with version 2. Buy Marked 2 at a discount today and get the update for free in a couple of days",
		"keywords": ["cyber","markdown","marked","monday","criticmarkdown","marked","scrivener","share","store","allows","anyone","anyway","apply","automatically","checkout","collaborating","compatibility","consistent","couple","coupon","custom","delayed","direct","discount","document","features","fledged","format","going","incremental","latest","little","maintaining","marketing","needs","previews","previously","price","processors","roundups","rsquo","running","sandboxed","scripts","spread","stressed","support","teased","think","today","tomorrow","updates","version","wanted","while"]
	},{
		"title": "Black Friday bundle: Hype, iStat Menus, and Screens for $29",
		"url": "/2017/11/24/black-friday-bundle-hype-istat-menus-and-screens-for-29-dollars/",
		"tags": [],
		"date": "Nov 24<span>th</span>, 2017",
		"ts": "1511545320",
		"summary": "I don&rsquo;t promote a lot of bundles &mdash; at least relative to the number I get notified about &mdash; and I leave gathering the best Black Friday/Cyber Monday deals to the bigger sites. But Creatable happens to be really great at asking those of us who link them what we&rsquo;d like to see offered, so I&rsquo;m excited about this deal. The Black Friday Bundle only has three apps in it. And they&rsquo;re all apps I can highly recommend. Hpye 3 is a keyframe-based editor for HTML5/CSS animations. It has all the features you&rsquo;d need, and makes animation tasks that normally require a lot of code into simple keyframe and drag transitions. You can also get Hype Reflect for previewing live on iOS. iStat Menus 6 is pretty much the de facto standard in system monitoring tools. A customizable collection of charts and indicators that sit in your menu bar, reporting on stats such as CPU, GPU, network, and disk usage, and it can even do weather, calendar and time management tasks. Screens 4. I love Screens 4. As a VNC (Remote Desktop) client for connecting to remote machines, Screens has been the my favorite 3rd-party tool for a long time, on both Mac and iOS. Version 4 added a few features that were notably missing versus Apple&rsquo;s default screen sharing app, including drag-and-drop file transfer support. It also got a speed boost, resulting in reduced screen lag and ultra-sharp image. The usual cost for all three of these is about $100. This bundle is priced at $29.99. It&rsquo;s a good deal no matter how you look at it. If you need at least 2 of these apps, this would be a good time to buy",
		"keywords": ["black","deals","friday","istat","screens","apple","black","bundle","creatable","cyber","desktop","friday","menus","monday","reflect","remote","screens","version","added","animation","animations","asking","based","bigger","boost","bundle","bundles","calendar","charts","client","collection","connecting","customizable","deals","default","editor","excited","facto","favorite","features","gathering","great","happens","highly","istat","image","including","indicators","keyframe","leave","machines","makes","management","mdash","missing","monitoring","network","normally","notably","notified","offered","party","previewing","priced","promote","recommend","reduced","relative","remote","reporting","resulting","rsquo","screen","sharing","sharp","simple","sites","speed","standard","stats","support","system","tasks","tools","transitions","ultra","usage","versus","weather"]
	},{
		"title": "The Successful Podcasting online course from Aaron Dowd",
		"url": "/2017/11/22/the-successful-podcasting-online-course-from-aaron-dowd/",
		"tags": ["sponsor"],
		"date": "Nov 22<span>nd</span>, 2017",
		"ts": "1511378100",
		"summary": "Thanks to Aaron Dowd for sponsoring BrettTerpstra.com this week and promoting his new Successful Podcasting online course! I&rsquo;ve known Aaron since Systematic was on 5by5, where he was the audio editor. He&rsquo;s a pro, with a bunch of videos on podcasting to his credit and years of experience in both creating and producing &lsquo;casts. Take advantage of his expertise! Update: The Successful Podcasting courses are now available as a subscription: $99/month gets you access to Successful Podcasting and the Logic and GB courses, as well as a whole bunch of other great courses on seanwes.com. My name is Aaron Dowd, and I love helping people make podcasts. The knowledge shared in the podcasts I&rsquo;ve been listening to since 2010 have helped me find sanity and work I love doing. I owe so much to the folks who have shared what they&rsquo;ve learned in podcasts over the years; people like Brett and Merlin Mann and David Sparks and Katie Floyd from Mac Power Users. They&rsquo;ve taught me so many amazing things and helped me connect with so many other awesome podcasters and people who are passionate about what they do. I learned so much from them over the years, and I&rsquo;ve always hoped I&rsquo;d someday be able to help other people the same way. This week I launched an online course called Successful Podcasting that I wrote and recorded (with help) in 2016&ndash;2017. I wanted to share everything I&rsquo;ve learned so far about making podcasts to help anyone who wants to learn how to be a great podcaster. The course runs online, and includes 9 Modules with 64 Videos. It’s normally $699, but right now I’m offering $200 off. You’ll also get access to Logic Pro X for Podcasters and Podcasting With GarageBand (screencast courses to help you learn these great app). Get hours of instruction and tips for $499! Registration is only open until Friday, so if you&rsquo;ve been thinking about starting a podcast, I&rsquo;d love to help. Sign up today",
		"keywords": ["aaron","online","podcasting","tutorial","aaron","brett","brettterpstra","david","floyd","friday","garageband","katie","logic","merlin","modules","podcasters","podcasting","registration","sparks","successful","systematic","thanks","users","videos","access","advantage","amazing","anyone","audio","available","awesome","brettterpstra","bunch","called","casts","class","connect","courses","creating","credit","doing","editor","everything","experience","expertise","folks","friends","great","height","helped","helping","hoped","hours","https","image","includes","instruction","knowledge","launched","learn","learned","listening","loading","lsquo","making","media","membership","ndash","nofollow","normally","noscript","offering","online","original","passionate","people","picture","podcast","podcaster","podcasters","podcasting","podcasts","producing","promoting","recorded","right","rsquo","sanity","screencast","seanwes","share","shared","since","someday","source","sponsoring","srcset","starting","strong","subscription","successful","taught","thinking","title","today","uploads","videos","wanted","wants","where","whole","width","wrote","years"]
	},{
		"title": "Web Excursions for November 17, 2017",
		"url": "/2017/11/17/web-excursions-for-november-17-2017/",
		"tags": ["bookmarks"],
		"date": "Nov 17<span>th</span>, 2017",
		"ts": "1510950900",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Insight.io GitHub code browser I&rsquo;ve long used the OctoTree Chrome extension for browsing GitHub with a full tree view of the folders and files. Insight.io adds some full-fledged IDE features to this. Code navigation, class and method references search, definition lookup, and more. (Also see my other favorite Chrome extensions) Tetra - Automatic Call Notes An AI-based notetaker for phone calls. You can tag a spot in the conversation as a marker, and get a summary of the call afterward. I would love to figure out a way to do this with podcasting, getting show notes and markers delivered to me automatically&hellip; Datasette: instantly create and publish an API for your SQLite databases A tool for creating and publishing JSON APIs for SQLite databases, instantly creating a url-based interface for accessing (but not writing) your data via JSON(o) calls. Neal Preston: Exhilarated and Exhausted \"I want the reader at the end of this book to feel like they&rsquo;ve just spent a year on the road with Zeppelin with one day off, then six months with Guns &lsquo;n&rsquo; Roses, with one day off and then five years with Bruce Springsteen. Exhilarated and exhausted.\" -Neal Preston: Legendary rock tour photographer Neal Preston&rsquo;s coffee table book. I haven&rsquo;t bought this, yet, but it&rsquo;s on my wish list. How to use sudo with Touch ID on your Mac Cabel Sasser tweeted a tip for enabling MacBook Pro Touch Bar touch ID for sudo commands in Terminal. Serenity Caldwell explains it in detail on iMore",
		"keywords": ["github","productivity","terminal","touch","automatic","bruce","cabel","caldwell","chrome","cleanmymac","datasette","exhausted","exhilarated","github","insight","legendary","macbook","notes","octotree","preston","roses","sqlite","sasser","serenity","springsteen","terminal","tetra","touch","zeppelin","accessing","afterward","automatically","based","bought","brought","browser","browsing","calls","class","coffee","commands","conversation","create","creating","databases","definition","delivered","detail","enabling","excursions","exhausted","explains","extension","extensions","favorite","features","figure","files","fledged","folders","getting","haven","hellip","imore","instantly","interface","lookup","lsquo","marker","markers","method","navigation","notes","notetaker","partnership","phone","photographer","podcasting","publish","publishing","reader","references","rsquo","search","speed","spent","summary","table","tools","touch","tweeted","writing","years"]
	},{
		"title": "MightyDeals: 26 fabulous script fonts for $9",
		"url": "/2017/11/16/mightydeals-26-fabulous-script-fonts-for-9-dollars/",
		"tags": ["sponsor"],
		"date": "Nov 16<span>th</span>, 2017",
		"ts": "1510833600",
		"summary": "Thanks to MightyDeals for sponsoring BrettTerpstra.com this week! Make room in your typeface toolbox, because with this fontastic deal you&rsquo;ll take home 26 professional script fonts. Take advantage of the OpenType features, multilingual characters and more as you put your latest designs to good use on everything from greeting cards to art prints. 26 fabulous fonts in 1 discounted deal. Tons of OpenType Features - stylistic alternates, ligatures, extra characters, punctuation Great fonts for greeting cards, posters, T-shirts, business cards, totes, mugs, prints, and more Speak Globally with multilingual support",
		"keywords": ["fonts","script","brettterpstra","bundle","check","features","globally","great","highlights","mightydeals","opentype","script","speak","thanks","advantage","alternates","because","business","cards","characters","designs","discounted","everything","extra","fabulous","features","fontastic","fonts","greeting","latest","ligatures","multilingual","posters","prints","professional","punctuation","rsquo","script","shirts","sponsoring","stylistic","support","today","toolbox","totes","typeface"]
	},{
		"title": "Universal Mac organization with Unclutter (and it's 40% off!)",
		"url": "/2017/11/15/mac-organization-with-unclutter/",
		"tags": ["macos","productivity"],
		"date": "Nov 15<span>th</span>, 2017",
		"ts": "1510771920",
		"summary": "Unclutter has been around for a while now, and it&rsquo;s just as intriguing to me as it was when it was released. It&rsquo;s a utility that combines clipboard history, interim file management, and a notepad all in one app with a clever (and elegant) interface. (Oh, hey. If you already know about Unclutter and just want the sale link, here you go.) To open the Unclutter panel, you just put your cursor over the menu bar at the top of the screen and scroll down (i.e. 2-finger swipe down, or a scroll wheel, or possibly a ball if you still like those mighty mouse things and the ball didn&rsquo;t gum up on you years ago.) The gesture to open it can also be customized with alternatives like holding down a modifier key or having it just open automatically after a delay. When the panel slides down, you have three panes across your screen. Clipboard, files, and notes. The widths can be configured and individual panels can be rearranged and be disabled, so Unclutter can fill just the functions you need without being, well, cluttered. The clipboard pane provides a history of everything you copy. Text, images, files, etc., and you can choose items from the history to re-paste. I honestly don&rsquo;t know how people survive without some kind of clipboard history (e.g. Keyboard Maestro, LaunchBar, Alfred, etc.). Having to constantly remember that you put something in your clipboard and it will disappear if you forget to paste it before you copy something else is agitating. Unclutter&rsquo;s clipboard history works perfectly for any standard usage, providing a visual overview of what&rsquo;s been in your clipboard with any item clickable to paste it again. You can also star items to add them to favorites and keep an easily-accessible list of common clippings available. The files pane is a primarily a temporary holding area. Like Yoink and the Dropzone Drop Bar, you can use it as a place to drag files to while you get to the place where you want to put them. Collect files from multiple places, switch Finder windows or apps, and drag them back out. Unlike Yoink and other tools, Unclutter actually moves the file to an interim folder rather than using File Promises. Generally I prefer the \"promises\" method, but there are a few nice things about this method: files persist between app launches and reboots, and you can set the temporary folder to be in Dropbox, so you can actually have your \"holding area\" sync across multiple machines and devices. Folders in&hellip;",
		"keywords": ["unclutter","utility","alfred","applications","clipboard","collect","command","documents","dropbox","dropzone","files","finder","folders","generally","having","keyboard","launchbar","maestro","notes","promises","unclutter","unlike","using","yoink","accessible","across","added","again","agitating","alias","alternatives","arranged","automatically","available","based","before","between","brettterpstra","capabilities","choose","class","clever","click","clickable","clipboard","clippings","cluttered","combines","combining","common","complex","configured","constantly","create","cursor","customized","dhrlcg","dedicated","devices","disable","disabled","disappear","displayed","doesn","dragged","dragging","easily","elegant","everyone","everything","favorites","feature","files","finding","finger","folder","forget","functions","generally","gesture","great","having","height","history","holding","honestly","https","icons","image","images","individual","inexpensive","interface","interim","intriguing","items","jcmvhdgfibguuy","keyboard","launches","ldquo","little","loading","machines","management","media","mentioning","method","mighty","modal","modifier","mouse","moves","moving","multiple","needs","noscript","notepad","notes","nvalt","organization","organized","original","overview","paddle","panel","panels","panes","paste","people","perfectly","permanent","persist","picture","places","possibly","prefer","primarily","promises","provides","providing","quickly","rather","rdquo","rearranged","reboots","redir","released","remember","right","rsquo","screen","scroll","scrolling","search","searched","similar","slides","sorted","source","srcset","standard","summary","survive","swipe","switch","systems","temporary","title","tools","unclutter","unclutterapp","uploads","usage","using","utility","various","vbwfya","visual","wheel","where","while","width","widths","windows","within","works","years"]
	},{
		"title": "TextExpander: Communicate Smarter",
		"url": "/2017/11/09/textexpander-communicate-smarter/",
		"tags": ["marketing","personal","sponsor","textexpander"],
		"date": "Nov 9<span>th</span>, 2017",
		"ts": "1510228800",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Let&rsquo;s say you launch a new product or service. You&rsquo;ll want to update everyone&rsquo;s signature&hellip; Without TextExpander, your marketing person would send an email with the new text to everyone, and maybe half your company would update. With TextExpander, your marketing person edits the shared snippet, and it&rsquo;s instantly available to everyone on your team, on all their devices. They didn&rsquo;t need to do anything, the right person made the edits, and everyone is up to date. That&rsquo;s the power and the magic of shared snippets and just one example of what your team can do to communicate smarter with TextExpander. Visit TextExpander.com/podcast for 20% off your first year",
		"keywords": ["productivity","smile","textexpander","brettterpstra","textexpander","thanks","visit","available","company","devices","edits","email","everyone","example","first","hellip","instantly","launch","magic","marketing","maybe","message","person","podcast","product","right","rsquo","service","shared","signature","smarter","snippet","snippets","sponsoring"]
	},{
		"title": "macOS KeyBindings for SearchLink",
		"url": "/2017/11/08/macos-keybindings-for-searchlink/",
		"tags": ["keybindings","searchlink"],
		"date": "Nov 8<span>th</span>, 2017",
		"ts": "1510169460",
		"summary": "SearchLink is one of the tools I&rsquo;ve created that I use almost every day, so I&rsquo;ve added a few bindings for it to my KeyBindings project. These will insert the basic syntax for SearchLink input, and you can add custom bindings for custom searches. For details on adding these to your system, see the KeyBindings project as well as my original blog post on this project. Once these are installed, you can use them in any Cocoa application. They&rsquo;re all bound to (control-command-g), with the various search types bound to the next letter. So hitting and then typing will wrap the selected text as for a Google search with SearchLink. Included bindings are: Here&rsquo;s the code. You can also find this in context on GitHub: As an example there are a couple I use for my own blog searches. It should be pretty obvious how to modify these&hellip; Read more about how to use these and see the full set on the KeyBindings project page. And seriously, if you haven&rsquo;t dug into SearchLink yet&hellip",
		"keywords": ["defaultkeybindings","amazon","apple","brettterpstra","cocoa","github","google","included","keybindings","music","projects","searchlink","software","store","syntax","twitter","above","added","adding","align","almost","basic","bindings","bound","brettterpstra","center","class","colgroup","colspan","command","commands","context","control","couple","created","custom","deletebackward","deletetomark","details","example","github","haven","hellip","highlight","highlighter","hitting","https","input","inserttext","installed","keybinding","keybindings","language","letter","madness","modify","moveleft","moveright","obvious","original","plaintext","project","projects","rouge","rsquo","search","searches","searchlink","section","selected","seriously","setmark","style","syntax","system","table","tbody","thead","tools","ttscoff","types","typing","various","within"]
	},{
		"title": "An update to PopMaker extension generator for PopClip",
		"url": "/2017/11/07/an-update-to-popmaker-extension-generator-for-popclip/",
		"tags": ["macos","popclip","popmaker"],
		"date": "Nov 7<span>th</span>, 2017",
		"ts": "1510069920",
		"summary": "Back in 2014 I created a little app that generates custom PopClip extensions. It broke on 10.13, so I&rsquo;m updating it for the latest OS. PopMaker was created in response to the number of requests I got for what were essentially the same extension. Either one to surround text with custom prefix/suffix, or to create a custom search extension to send the selected text to a search engine or a local url handler (Evernote, nvALT, etc.). The new version still only creates search and text surround extensions. I started working on a whole system for custom script extensions, but ultimately it was too much effort that needed to go elsewhere. If you know enough about coding to write a custom script, you can probably figure out the rest. I added a project page with details. See below for the updated download. PopMaker v0.3 Download PopMaker v0.3 A Mac application for generating customizable PopClip extensions Published 05/12/14. Updated 10/21/18. Changelog Donate &bull; More info&hellip",
		"keywords": ["pilot","changelog","donate","download","either","evernote","popclip","popmaker","published","updated","added","below","broke","coding","create","created","creates","custom","customizable","details","download","effort","elsewhere","engine","enough","essentially","extension","extensions","figure","generates","generating","handler","hellip","latest","little","local","needed","nvalt","prefix","project","requests","response","rsquo","script","search","selected","started","suffix","surround","system","updated","updating","version","whole","working","write"]
	},{
		"title": "WALTR 2 is 30% off",
		"url": "/2017/11/01/waltr-2-is-30-percent-off/",
		"tags": [],
		"date": "Nov 1<span>st</span>, 2017",
		"ts": "1509551100",
		"summary": "Because I&rsquo;ve written about WALTR 2 previously, I wanted to mention it&rsquo;s on sale with a 30% discount right now. WALTR 2 is the insanely fast tool for getting video and audio in any format (including FLAC and 4K) from your Mac to your iOS device&rsquo;s audio/video collections. It works over USB or WiFi with just a drag and drop for automatic conversion and transfer. The 20% discount on Paw I mentioned recently ends today, so if you&rsquo;re a dev working with REST APIs, don&rsquo;t miss out on that one",
		"keywords": ["capture","screen","video","waltr","because","waltr","audio","automatic","collections","conversion","device","discount","format","getting","including","insanely","mention","mentioned","previously","recently","right","rsquo","today","video","wanted","working","works","written"]
	},{
		"title": "The iTextEditors \"purge\"",
		"url": "/2017/10/31/the-itexteditors-purge/",
		"tags": ["itexteditors"],
		"date": "Oct 31<span>st</span>, 2017",
		"ts": "1509468180",
		"summary": "Ooh, scary. The latest round of updates to iTextEditors saw a significantly higher number of deletions than additions. A purge of the chart to match The App Store Purge. Sad to see almost 20 editors go, but the list is trimmer now, and the good ones are easier to spot. Happy Halloween. I haven&rsquo;t had time to go out and dig for the latest additions, so if you have a new favorite that&rsquo;s not listed, please submit it",
		"keywords": ["halloween","happy","purge","store","additions","almost","chart","deletions","easier","editors","favorite","haven","higher","itexteditors","latest","listed","match","purge","round","rsquo","scary","significantly","trimmer","updates"]
	},{
		"title": "A few new shell tricks",
		"url": "/2017/10/30/a-few-new-shell-tricks/",
		"tags": ["terminal"],
		"date": "Oct 30<span>th</span>, 2017",
		"ts": "1509382440",
		"summary": "As part of my continuing \"Bash Fun\" series, I have a few more tricks for Terminal junkies. These work in Bash and Zsh, and probably elsewhere. To use any of these, just put them in a file and source them from your login profile (, etc.). This first one is super simple. It just takes a tab-indented list from STDIN and outputs a Markdown bullet list in Terminal. It removes blank lines and maintains indentation using . You can just run qlist and type the list in Terminal, ending input with on a blank line, or pipe input in from or a file. Next, a function to quickly list internal and WAN ip addresses. It uses for the local IP, and then dig with the OpenDNS resolver for the WAN address. It works just as well with icanhazip.com using instead of the command, but I have more faith in the OpenDNS method being futureproof. Updated: Thanks to comments from Keith Rollin and Daniel Whicker the script now iterates through all available network interfaces to find one that&rsquo;s active. **Also, Kai Wells has created a fish version of . Lastly, a function to convert hex color string to RGB using . This one takes a 6-character hex code (e.g. ) and converts it to an RGB string, (e.g. ). The leading hash () is optional and will be cleared out if it exists. The hex string is case-insensitive, so will work as well. If the input given is 3 characters, it will be automatically expanded, doubling each character, so becomes . If you want to include a CSS transparency indicator in the output (RGBA), you can include a second argument that consists of a float between 0 and 1, e.g. . becomes . If you want just the numbers without the , change the line to . Then returns . For fish users, a simplified version of this function from Kai Wells",
		"keywords": ["address","markdown","shell","convert","daniel","keith","lastly","markdown","opendns","quickly","rollin","stdin","stdout","terminal","thanks","updated","wells","whicker","write","active","address","addresses","alias","argument","automatically","available","becomes","between","blank","bullet","change","character","characters","cleared","clipboard","color","command","comments","consists","continuing","convert","converts","created","doubling","elsewhere","ending","exists","expanded","faith","first","float","function","futureproof","icanhazip","indentation","indented","indicator","input","insensitive","interfaces","internal","iterates","junkies","leading","local","login","machine","maintains","markdown","method","network","numbers","optional","output","outputs","piping","profile","qlist","quick","quickly","removes","resolver","returns","rsquo","script","second","series","shortcut","simple","simplified","source","string","strings","super","takes","through","transparency","tricks","users","using","version","works"]
	},{
		"title": "Things I've learned from doing yoga",
		"url": "/2017/10/27/things-ive-learned-from-doing-yoga/",
		"tags": ["health","personal"],
		"date": "Oct 27<span>th</span>, 2017",
		"ts": "1509116460",
		"summary": "I missed my yoga class this morning due to an upset stomach. I want to take a minute here while it&rsquo;s giving me a break to talk about why I don&rsquo;t like missing yoga. Last time I posted about exercise, I&rsquo;d lost 20 pounds and was feeling better every day. As I write this, I&rsquo;ve lost 60 pounds an have maintained that for 6 months. I&rsquo;ve been focusing on building strength and flexibility in the areas I was weakest, and that&rsquo;s preventing all of the injuries I used to be most susceptible to. I&rsquo;ve even gotten my carpal tunnel issues under control with daily wrist stretches and strengthening. And all of this is great, amazing even, but there are a few things about yoga specifically that have helped me in areas I didn&rsquo;t expect. These are things that they talk about in yoga classes, but as someone just coming in and trying to understand the moves, it&rsquo;s hard to focus on the finer aspects. But it was worth it when the concepts finally clicked for me. Breath is focus, and in yoga (and Tai Chi and other flow-based practices), breath is essential. You move with your breath, and it leads you into and out of each movement in the flow. Inhale into down dog, exhale into lunge, inhale up, exhale forward fold, and so on. Learning to focus my movements on my breath and keep my breath slow and even requires just enough concentration to clear my head of everything else. When I go into a twist or stretch, it&rsquo;s easy to find myself holding my breath. But once I&rsquo;m in a position, exhaling slowly almost always allows me to move deeper into it. I&rsquo;ve often heard the phrase \"breathe into your body part\" from instructors, which sounds corny at first but it&rsquo;s a mental game that I&rsquo;ve found very helpful. In my daily life, learning to breathe has been a game changer. I&rsquo;ve practiced multiple breathing exercises (Prāṇāyāma) and each has a different and surprisingly profound effect on my state of mind. Ujjayi breath, or whisper breath, is basically just constricting the back of your throat slightly as if you were going to whisper. It&rsquo;s a loud breath that makes it easier for me to focus. If you have an Apple Watch bugging you to breath, using Ujjayi breath makes the little break more effective. I learned Sitali Pranayama, or cooling breath, which is basically just curling your tongue into a straw (if you&rsquo;re genetically disposed to that) and breathing deeply through it. It looks ridiculous&hellip;",
		"keywords": ["forrest","practice","pranayama","apple","breath","breathing","closing","discipline","eagle","flexibility","forrest","holding","increase","inhale","learning","letting","looser","minnesota","pranayama","sitali","strength","ujjayi","vritti","watch","weight","working","active","activity","ailments","allowed","allows","almost","amazing","anatomically","animals","answer","anywhere","applicable","areas","aspects","awkward","balance","based","basic","basis","because","benefits","bottom","break","breath","breathe","breathing","brettterpstra","bugging","building","cardio","carpal","chair","changed","changer","class","classes","clear","clicked","clothing","cobra","coming","completely","computer","concentration","concepts","constricting","control","cooling","corny","count","couple","creating","cross","curling","daily","deeper","deeply","developed","developing","difference","different","directions","directly","discipline","disposed","drastically","driveway","eagle","eaglearmbalance","easier","easily","effective","enjoy","enough","equipment","especially","essential","eventually","everyone","everything","exercise","exercises","exhale","exhaling","expect","extended","factors","feeling","figuratively","figure","finally","finds","finer","finite","first","flexibility","flexible","focus","focusing","forrestyoga","found","front","frustrated","genetically","getting","giving","going","gotten","gravity","great","grouchiness","group","hands","happen","hardest","headaches","health","heard","height","hellip","helped","helpful","holding","holds","honest","horrible","https","image","implementing","incorporate","increasingly","inhale","injure","injuries","instructors","issues","jiggling","keyboard","knees","ldquo","leading","leads","learned","learning","leave","letting","literally","little","loading","looks","looser","lower","lunge","maintained","makes","males","martial","mdash","media","mental","mentioned","minute","minutes","missed","missing","morning","movement","movements","moves","multiple","muscles","muscular","myself","noscript","often","original","overwhelmed"]
	},{
		"title": "Logr: logging/debugging utility for Bash scripts",
		"url": "/2017/10/26/logr-logging-slash-debugging-utility-for-bash-scripts/",
		"tags": ["terminal"],
		"date": "Oct 26<span>th</span>, 2017",
		"ts": "1509038880",
		"summary": "A while back I started working on a tool for debugging in Bash scripts. I basically just wanted a shorthand for using the command in Bash. Logr has grown over time, so I thought I&rsquo;d share it as a project. It&rsquo;s a work in progress, really, and I&rsquo;m very open to suggestions. I set up a project page with full configuration and usage details. I won&rsquo;t post a bunch of code in this post, but I&rsquo;ll give a quick example and you can decide if you&rsquo;d like to see more&hellip; All the output can be sent to STDERR as well as a custom logfile, or silenced so you can just watch with in another window. If this sounds useful, check out the project page",
		"keywords": ["stderr","another","bunch","check","command","configuration","custom","debugging","decide","details","example","grown","hellip","logfile","output","project","quick","rsquo","scripts","share","shorthand","silenced","sounds","started","suggestions","thought","usage","useful","using","wanted","watch","while","window","working"]
	},{
		"title": "iTunesIcon 2.3",
		"url": "/2017/10/25/itunesicon-2-dot-3/",
		"tags": ["iphone","itunesicon","macos","scripting","search"],
		"date": "Oct 25<span>th</span>, 2017",
		"ts": "1508953620",
		"summary": "I&rsquo;ve updated iTunesIcon, my little Automator App for grabbing the high res versions of iOS and MAS app icons directly from iTunes. Version 2.2 had proven a bit buggy after some minor search API changes. Defaults to 512px size now, unless (small, 60px) or (medium, 100px) are specified in the search string If ImageMagick is installed, it now rounds the corners of iOS icons automatically (code inspired by Brad Jasper) Replaces original download with rounded version, converting to png if necessary Other minor cleanups and improvements Oh yeah, and a new icon which, if I may say so, is delightful See the iTunesIcon project page for more info on installing ImageMagick. It works just fine without it, but the rounded corners are a nice touch. ItunesIcon v2.4 Download ItunesIcon v2.4 An application for quickly retrieving the high-res icon for any Mac or iOS apps. Published 02/15/14. Updated 09/01/21. Changelog Donate &bull; More info&hellip",
		"keywords": ["artwork","automator","itunes","automator","changelog","changes","defaults","donate","download","github","imagemagick","itunesicon","jasper","published","replaces","support","updated","version","automatically","buggy","changes","cleanups","converting","corners","delightful","development","directly","download","grabbing","hellip","itunes","itunesicon","icons","improvements","inspired","installed","installing","little","medium","minor","necessary","original","project","proven","quickly","retrieving","rounded","rounds","rsquo","search","small","string","touch","updated","version","versions","works"]
	},{
		"title": "Have you tried rebooting?",
		"url": "/2017/10/20/have-you-tried-rebooting/",
		"tags": ["macos","quicktip"],
		"date": "Oct 20<span>th</span>, 2017",
		"ts": "1508504400",
		"summary": "Last week I started having issues on High Sierra that I couldn&rsquo;t resolve. Hours spent in Activity Monitor, Console, and surfing StackExchange sites led me to no further clues. The primary issue was increasingly frequent hang times, which led to horrible Skype calls, long waits in photo editing apps, and a general inability to use my MacBook Pro. For interested nerds, the problem included almost every app recording a spindump daily by the end. Spotlight results were missing more and more often, and the process was working overtime and not getting anywhere. Then a ton of type messages in Console. I cleaned up the drive, repaired the disk, cleared the caches, killed background processes, and yes, I tried rebooting. The problem persisted even when logging into a guest account. I found the solution (though not a solid explanation) in an old forum thread about a similar issue back on 10.8: Reboot into Safe Mode and then reboot normally. It&rsquo;s been fine for a week now. Step 4 (wait for macOS) can take a while. In my case it ran a bunch of disk and filesystem checks. If you want to see more of what it&rsquo;s doing, make sure to boot in verbose mode. This is usually done by holding ⌘V while booting, but I&rsquo;m not sure that works if you&rsquo;re also holding Shift. I always boot in Verbose mode, which you can turn on from Terminal with: (It can also be enabled with tools like TinkerTool.) You&rsquo;ll see a boot sequence that will look familiar to any Linux users, and while a lot of the messages are hard to decipher, you&rsquo;ll at least know what parts are taking time. I&rsquo;m told that this process invalidates caches that normally persist on reboot. This is actually really useful information as I&rsquo;ve had issues with font caches and preference caches that I just couldn&rsquo;t seem to clear out before. This may be my new \"ctrl-alt-delete\" tip for problems I don&rsquo;t recognize&hellip",
		"keywords": ["macos","reboot","activity","console","hours","linux","macbook","monitor","reboot","shift","sierra","skype","spotlight","stackexchange","terminal","tinkertool","verbose","account","again","almost","anywhere","background","before","booting","bresink","brettterpstra","bunch","button","caches","calls","checks","chime","class","cleaned","clear","cleared","clues","computer","couldn","daily","decipher","doing","drive","editing","enabled","execute","explanation","familiar","filesystem","forum","found","frequent","fsctl","general","getting","guest","having","height","hellip","highlight","highlighter","holding","horrible","https","image","inability","included","increasingly","information","interested","invalidates","issues","killed","language","ldquo","loading","logging","macos","mdworker","media","messages","missing","nerds","normally","noscript","nvram","often","original","overtime","parts","persist","persisted","photo","picture","plaintext","preference","press","primary","problem","problems","process","processes","rdquo","reboot","rebooting","recognize","recording","repaired","resolve","restart","results","rouge","rsquo","sequence","shift","similar","sites","solid","solution","source","spent","spindump","srcset","started","surfing","system","taking","thread","times","title","tools","tried","uploads","useful","users","usually","verbose","waits","while","width","working","works"]
	},{
		"title": "The Autumn Font Sale: 126+ Premium Typefaces for $9",
		"url": "/2017/10/19/the-autumn-font-sale-126-plus-premium-typefaces-for-9-dollars/",
		"tags": ["sponsor"],
		"date": "Oct 19<span>th</span>, 2017",
		"ts": "1508418000",
		"summary": "Thanks to MightyDeals for sponsoring BrettTerpstra.com this week! This Autumn Font Sale is overloaded with more than 120 gorgeous typefaces, culled from 31 different font families. You&rsquo;ll find a wide variety of styles ranging from vintage to whimsical, not to mention a slew of alternate typefaces. You&rsquo;re bound to find the perfect font for your next project in this collection. 120+ Unique typefaces in 1 deeply discounted deal 31 different font families A full range of styles - vintage, fancy, cartoon, modern, and more OpenType Features - stylistic alternates, ligatures, multi-lingual support Wide variety great for any printed project - greeting cards, posters, T-shirts, mugs, prints, business cards, branding Normally, this huge collection sells for $1550, but for a limited time you can get all 120+ typefaces for a $9 (99% off the regular price!). Or get the bundle including BOTH the Desktop and Web fonts for only 12",
		"keywords": ["alessandro","andrew","arnold","avatar","axact","buckingham","calvin","codecanyon","customer","klein","lloyd","michele","olympics","palace","schwarzenegger","summer","support","webber","autumn","brettterpstra","check","desktop","features","highlights","mightydeals","normally","opentype","thanks","unique","alternate","alternates","bound","branding","bundle","business","cards","cartoon","collection","culled","deeply","different","discounted","expand","families","fancy","fonts","gorgeous","great","greeting","including","ligatures","limited","lingual","mention","modern","multi","overloaded","posters","price","printed","prints","project","range","ranging","regular","rsquo","sells","shirts","sponsoring","styles","stylistic","support","today","toolbox","typeface","typefaces","variety","vintage","whimsical"]
	},{
		"title": "Cardhop for Mac: contacts done right",
		"url": "/2017/10/18/cardhop-for-mac-contacts-done-right/",
		"tags": ["appreview","macos"],
		"date": "Oct 18<span>th</span>, 2017",
		"ts": "1508339700",
		"summary": "Flexibits just released their new Mac contact management app, Cardhop. I&rsquo;ve been beta testing this app for a bit and it immediately became as much a part of my workflow as Fantastical (not coincidentally also by Flexibits), which is an app I use all day, every day. Cardhop is similar to what FullContact has tried to be, and has some features you&rsquo;ll find in Interact Contacts for iOS, but as it stands on the Mac right now, this is the most elegant contact management solution I&rsquo;ve seen. Just like Fantastical on the Mac, Cardhop sits in your menu bar, and you can bring it up with a key combo or a click. The window pops up, showing today&rsquo;s birthdays and your recent contacts (and optionally a sidebar with all of your contact groups). At the top sits a universal entry field, already focused and ready for you to type. Start typing part of a name and it will filter the list. Type until you find the contact you want and click to interact with it, or just use the entry bar: type \"email ben k\" (or even \"ben k email\") and send an email to the primary email address for the first match of Ben K. Or type \"email elle work\" to start an email to Elle&rsquo;s work email instead of her default address. You can also create new contacts by typing a name that doesn&rsquo;t exist along with things like phone numbers and email addresses, and they&rsquo;ll all be intelligently parsed and included in the new contact. You can update contacts just as easily by typing enough of a name to match, and then continuing with new information. Type \"Ben K 555-1212\" and add that phone number to Ben&rsquo;s contact card. It can also parse entire blocks of text, such as email signatures, which you can get to Cardhop either by copying from an email, hitting the keyboard shortcut, and pasting, or just use the included Service to right click and send it directly. Cardhop makes use of Contact groups, which is great for me. I&rsquo;d previously used apps that let me add #tags in the notes field and do cool things with those. This was faster than building groups and dragging contacts around, so I&rsquo;ve never used the official \"groups\" all that much. With Cardhop it&rsquo;s easy to add a contact to a group by using a notation when adding or updating a contact, and easy to interact with the group (e.g. send a group email) by starting out with a command like \"email /betatesters\". When you type an action word, if the first match doesn&rsquo;t have an appropriate&hellip;",
		"keywords": ["contacts","fantastical","flexibits","because","cardhop","check","contact","contacts","fantastical","flexibits","fullcontact","interact","macstories","michael","service","simmons","store","voorhees","action","adding","address","addresses","another","appeal","asked","autocomplete","automatically","became","because","betatesters","birthdays","blocks","boring","bring","building","click","coincidentally","combo","command","computer","contact","contacts","continuing","convenient","copying","create","cumbersome","database","default","delicious","delights","designed","directly","doesn","dragging","easily","either","elegant","email","enough","entire","entry","everyone","exist","faster","features","field","filter","first","focused","friend","great","group","groups","having","hitting","iphone","ideal","included","information","intelligently","interact","keyboard","language","launch","limited","lsquo","makes","management","match","matching","natural","notation","notes","numbers","official","often","optionally","overkill","parse","parsed","pasting","people","phone","potentially","previously","price","primary","ready","recent","released","relied","response","right","rsquo","sandwich","saving","segment","shortcut","showing","sidebar","signatures","similar","solution","stands","starting","story","straight","subtle","testing","think","through","today","trick","tried","trudge","typing","universal","updating","using","window","workflow","wouldn","wrote"]
	},{
		"title": "Updated Mail vacuuming script",
		"url": "/2017/10/18/updated-mail-vacuuming-script/",
		"tags": ["macos"],
		"date": "Oct 18<span>th</span>, 2017",
		"ts": "1508331600",
		"summary": "Another year, another new operating system, another update to the Mail Vacuuming script that I first posted in 2012. It&rsquo;s an AppleScript that performs the simple task of optimizing the database that Mail.app uses for all of your messages, speeding up load and search times. The latest version of Mail now uses a sandboxed container (in addition to a V5 bump). I personally haven&rsquo;t used Mail in years, so the fixes came from @lbutlr. The gist is updated, and the code is below",
		"keywords": ["apple","optimize","sqlite","vacuum","another","applescript","vacuuming","another","below","container","database","first","fixes","haven","latest","lbutlr","messages","operating","optimizing","performs","personally","posted","rsquo","sandboxed","script","search","simple","speeding","system","times","updated","version","years"]
	},{
		"title": "Web Excursions for October 17, 2017",
		"url": "/2017/10/17/web-excursions-for-october-17-2017/",
		"tags": ["bookmarks"],
		"date": "Oct 17<span>th</span>, 2017",
		"ts": "1508270400",
		"summary": "Web excursions brought to you in partnership with Tower, the absolute best Git GUI for macOS. Announcing the 1Password command-line tool public beta If you don&rsquo;t already know I&rsquo;m a huge 1Password fan, let me tell you: I&rsquo;m a huge 1Password fan. And it&rsquo;s not just because they consistently cater to my nerdy desires&hellip; Touché - Touch bar for everyone In case you missed it back when the Touch Bar was first introduced, Daniel Jalkut has a great tool for emulating it on your Mac. It works well with High Sierra and I&rsquo;ve been using it to test out Touch Bar features on my (aging) rMBP. Undisturbed I don&rsquo;t generally go for distraction-removing apps, site blockers, single-taskers, etc., but this is really handy. It can enable and disable Do Not Disturb on your Mac, and disables badges on dock icons. Undisturbed can be toggled on and off from the menubar. I think everyone knows how distracting badge icons can be, but also how handy they are. A way to toggle them on and off quickly without entirely disabling them is a welcome tool. Jim&rsquo;s Matrix Macro A Keyboard Maestro macro for TaskPaper from Jim Krenz. It takes a task list using 2 key tags (@important and @due) and creates 4 separate views replicating the Eisenhower Decision Matrix espoused by Stephen Covey. Paperlogix Document Scanner on the App Store An intriguing new document scanner app for iOS. It features rules and workflows for automating the sorting, organization, and archiving (with folders, tags, and drag-and-drop) of the documents you scan. One person&rsquo;s history of Twitter, from beginning to end A great read from Mike Montiero. I remember the early days of twttr, and I know what Twitter is now, but I&rsquo;d kind of forgotten how we got here&hellip; If you&rsquo;re using Git, you need Tower. Check it out today",
		"keywords": ["iphone","macos","announcing","check","covey","daniel","decision","disturb","document","eisenhower","jalkut","keyboard","krenz","macro","maestro","matrix","method","montiero","paperlogix","password","scanner","sierra","stephen","store","taskpaper","touch","tower","twitter","undisturbed","absolute","agilebits","aging","announcing","apple","archiving","automating","badge","badges","because","beginning","blockers","brett","brettterpstra","brought","cater","class","command","consistently","creates","desires","disable","disables","disabling","distracting","distraction","document","documents","downloads","emulating","entirely","enzeller","espoused","everyone","excursions","features","first","folders","forgotten","generally","great","handy","height","hellip","history","https","icons","image","important","intriguing","introduced","itunes","knows","loading","macos","macro","maestromacros","management","matrix","media","medium","menubar","missed","monteiro","nerdy","noscript","organization","original","paperlogix","partnership","password","person","picture","public","quickly","remember","removing","replicating","rsquo","rules","scanner","separate","single","sorting","source","srcset","sweater","takes","taskers","think","title","today","toggle","toggled","touche","tower","twitter","twttr","undisturbed","uploads","using","views","welcome","width","wikipedia","workflows","works"]
	},{
		"title": "Hey devs, Paw is 20% off",
		"url": "/2017/10/17/paw-is-20-percent-off/",
		"tags": ["developer"],
		"date": "Oct 17<span>th</span>, 2017",
		"ts": "1508260440",
		"summary": "This post is primarily to let you know about the 20% discount on Paw, but I also want to tell you why I love it. Paw is a tool for testing APIs and other HTTP requests. That obviously has a finite audience, but I think there are plenty of API developers (and developers who use web APIs) among my readers, so it&rsquo;s worth mentioning. Paw has every possible option I could want: easy ways to fill in request parameters, multiple ways to view responses (with configurable auto-detection of text, JSON, JavaScript, etc.), JSON highlighting and exploration tools, saved sessions with call history, the choice of HTTP library to use, proxy handling, and just about everything else a developer could want. Here&rsquo;s a quick shot of a test for my Titlecase API that I set up in about 60 seconds. So if you do any work with APIs, whether building them or implementing them in your apps and websites, I do highly recommend picking Paw up. Especially while it&rsquo;s 20% off&hellip",
		"keywords": ["github","interface","javascript","programming","especially","github","javascript","titlecase","among","audience","building","choice","cloud","configurable","debugging","detection","developer","developers","discount","everything","exploration","finite","handling","hellip","highlighting","highly","history","implementing","integration","library","mentioning","multiple","parameters","picking","plenty","possible","primarily","proxy","quick","readers","recommend","requests","responses","rsquo","saved","seconds","service","sessions","teams","testing","think","tools","websites","while","worth"]
	},{
		"title": "PDFpen Family: new PDFpen 3 for iOS!",
		"url": "/2017/10/12/smile-and-the-pdfpen-family-new-pdfpen-3-for-ios/",
		"tags": ["sponsor"],
		"date": "Oct 12<span>th</span>, 2017",
		"ts": "1507806000",
		"summary": "Thanks to Smile and the PDFpen Family for sponsoring BrettTerpstra.com this week! Edit PDFs like the professional you are, with the PDFpen Family. PDFpen for macOS is the ultimate PDF editing tool, your Swiss Army knife for PDFs. PDFpen Scan+ adds scanning and OCR to your mobile toolkit. Scan and OCR when away from your desk and scanner. Scan receipts with ease. And the new PDFpen 3 for iPad & iPhone combines our PDF tools with the new iOS 11 Files infrastructure, making it incredibly easy to access files from a variety of sources, including Dropbox, Google Drive, and anything you can reach via Transmit",
		"keywords": ["pdfpen","smile","brettterpstra","drive","dropbox","family","files","google","pdfpen","smile","swiss","thanks","access","combines","details","editing","files","iphone","including","incredibly","infrastructure","knife","macos","making","mobile","professional","reach","receipts","scanner","scanning","sources","sponsoring","toolkit","tools","ultimate","variety"]
	},{
		"title": "The 60 Mac Tips winners",
		"url": "/2017/10/09/the-60-mac-tips-winners/",
		"tags": ["giveaway"],
		"date": "Oct 9<span>th</span>, 2017",
		"ts": "1507574100",
		"summary": "Congrats to the six winners of the full 60 Mac Tips shebang! Volumes 1 and 2 on iBooks and streaming/download on Vimeo. For those who didn&rsquo;t win, you can pick up a copy and support independent writers and Mac nerds! A reminder that the iBooks and Vimeo versions contain the exact same tips, just different ways of getting to them",
		"keywords": ["david","field","guides","ibooks","macsparky","sparks","vimeo","bouchut","congrats","david","derek","hartington","ittersum","jimmy","marek","petru","ronan","thanks","vimeo","volume","volumes","watkin","apple","brettterpstra","class","contain","different","download","drawing","entered","everyone","exact","getting","giveaway","height","https","ibooks","image","independent","itunes","loading","media","nerds","noscript","ondemand","original","picture","reminder","rsquo","shebang","source","srcset","streaming","strong","support","tipsv","title","uploads","versions","vimeo","volume","width","winners","writers"]
	},{
		"title": "Markdown Service Tools 2.16",
		"url": "/2017/10/07/markdown-service-tools-2-dot-16/",
		"tags": ["markdown","markdownservices","service"],
		"date": "Oct 7<span>th</span>, 2017",
		"ts": "1507399860",
		"summary": "First, a quick reminder that there&rsquo;s still time to enter the 60 Mac Tips giveaway and win $80 worth of awesome mac tips in iBooks and Vimeo streaming/download formats! And now, a quick note that I&rsquo;ve improved the \"Clean Up Smart Quotes\" service in the Markdown Service Tools. I also renamed it to \"Clean Up Smart Punctuation,\" so if you have the Smart Quotes version installed, you&rsquo;ll need to delete that to avoid duplication. The service now also converts invisible whitespace characters. These happen a lot when clipping from websites where horrible WYSIWYG editors have inserted a bunch of non-breaking spaces () and the clipper&rsquo;s entity conversion turns those into control characters. Then markup like emphasis breaks. So now you can just run \"Clean Up Smart Punctuation\" and it will convert curly quotes, guillemots, ellipses, and remove invisible characters that make debugging without an advanced code editor quite difficult",
		"keywords": ["macos","markdown","service","system","tools","clean","first","markdown","punctuation","quotes","service","smart","tools","vimeo","wysiwyg","advanced","avoid","awesome","breaking","breaks","bunch","characters","clipper","clipping","control","conversion","convert","converts","curly","debugging","difficult","download","duplication","editor","editors","ellipses","emphasis","enter","entity","formats","giveaway","guillemots","happen","horrible","ibooks","improved","inserted","installed","invisible","markup","project","quick","quotes","reminder","remove","renamed","rsquo","service","spaces","streaming","turns","version","websites","where","whitespace","worth"]
	},{
		"title": "Mailbutler 2.0: popular productivity-boosting email extension now provides Gmail support",
		"url": "/2017/10/05/mailbutler-2-dot-0-popular-productivity-boosting-email-extension-now-provides-gmail-support/",
		"tags": ["sponsor"],
		"date": "Oct 5<span>th</span>, 2017",
		"ts": "1507201200",
		"summary": "Thanks to Mailbutler for sponsoring BrettTerpstra.com this week! Mailbutler &mdash; the productivity-enhancing email software that&rsquo;s already conquered Apple Mail &mdash; has become available for Gmail, too. And that&rsquo;s great news for multiple reasons. Mailbutler is a supercharged personal email assistant. It keeps the native interface of the email client, be it Apple Mail or Gmail, and improves its functionality by adding to it an array of helpful tools. Using Mailbutler&rsquo;s features, users are able to process emails faster and more effectively, saving hours every day for other tasks. Mailbutler now allows Gmail users to send emails later by scheduling them for a certain date and time, turn tasks into items for their to-do lists, temporarily snooze emails, get a followup reminder when a response to an email hasn&rsquo;t been received, be notified when a recipient opens an email, and much more. In addition, Mailbutler will remind users about possibly omitted email attachments, undo sending an email, and upload attachments to the cloud. The latest version, Mailbutler 2.0, has some exciting changes and is now available as a public beta. Learn more and test it yourself",
		"keywords": ["email","mailbutler","productivity","apple","brettterpstra","gmail","learn","mailbutler","sponsored","syndicate","thanks","using","adding","allows","array","assistant","attachments","available","certain","changes","client","cloud","conquered","effectively","email","emails","enhancing","exciting","faster","features","followup","functionality","great","helpful","hours","improves","interface","items","keeps","later","latest","lists","mdash","multiple","native","notified","omitted","opens","personal","possibly","process","productivity","public","reasons","received","recipient","remind","reminder","response","rsquo","saving","scheduling","sending","snooze","software","sponsoring","supercharged","tasks","temporarily","tools","upload","users","version"]
	},{
		"title": "Win a free copy of 60 Mac Tips: Volume 2",
		"url": "/2017/10/04/giveaway-60-mac-tips/",
		"tags": ["giveaway"],
		"date": "Oct 4<span>th</span>, 2017",
		"ts": "1507139460",
		"summary": "To help promote 60 Mac Tips: Volume 2, I&rsquo;m running a giveaway. Six winners (drawn by KILLOTRON Giveaway Robot X1) will get both volume one and volume two, in both the iBooks version and the Vimeo streaming versions. In case you missed the announcement yesterday, 60 Mac Tips: Volume 2 is the second (obviously, because it&rsquo;s brilliantly titled to ensure clarity) installment of \"60 Tips\" in the MacSparky Field Guide series. The first one came out a few years ago, and it&rsquo;s been updated as well. Tips that didn&rsquo;t work anymore have been replaced, and tips that changed have been updated. So that&rsquo;s 120 Mac tips from a couple of pros2. Both the iBooks and Vimeo versions have the exact same tips, but the streaming version is a bit more universal, given you can access it from any device. I mean, there are Mac users with Android phones, (I&rsquo;m told). If you can&rsquo;t get the iBooks version in your country, or just prefer to save a few gigs in your iCloud storage, you have options. In return for this amazing opportunity to win an $80 bundle of 120 tips and almost four hours of video, I ask only that you share this post far and wide. Sure, it will statistically lower your chances of winning a random drawing, but c&rsquo;mon.3 Here&rsquo;s a link to make it easy: The drawing will occur on Monday, October 9th, 2017 at 12:00pm CST. Winners will receive 60 Mac Tips Volumes 1 & 2, in both iBooks and streaming/download format (Vimeo), an $80US value. All you need to do is enter is your name and email, one entry per person, duplicate entries automatically deleted. I promise, as always, your email is never used for anything other than notifying the winners, and the database is cleared after every giveaway. One entry per person, winners will be notified automatically. Sorry, this giveaway has ended. Don&rsquo;t forget to share. Please and thank you! He got an upgrade this year. Facial recognition or something.&nbsp;↩ I&rsquo;m going to just go ahead and call myself that. Forgive my lack of Minnesotan humility.&nbsp;↩ It also doesn&rsquo;t increase your chances of winning, because I hate that. No \"share to enter\" crap.&nbsp;↩",
		"keywords": ["brett","david","field","guides","ibooks","macsparky","sparks","terpstra","vimeo","android","everybody","facebook","facial","fbrettterpstra","fgiveaway","field","forgive","fvideo","giveaway","guide","killotron","macsparky","minnesotan","monday","robot","share","sorry","twitter","vimeo","volume","volumes","winners","access","ahead","almost","amazing","announcement","anymore","apple","automatically","backlink","because","brettterpstra","brilliantly","bundle","buttons","chances","changed","clarity","class","cleared","country","couple","database","deleted","device","doesn","download","drawing","duplicate","email","ended","endnotes","enter","entries","entry","exact","facebook","first","fnref","footnote","footnotes","forget","format","giveaway","going","height","hours","https","humility","ibooks","icloud","image","increase","installment","intent","itunes","ldquo","loading","lower","media","million","missed","myself","noscript","noteref","notified","notifying","occur","options","original","person","phones","picture","prefer","promise","promote","random","rdquo","receive","recognition","referer","replaced","return","reversefootnote","rsquo","running","second","series","share","sharer","sorry","source","srcset","statistically","storage","streaming","thank","tipsgiveaway","title","titled","ttscoff","twitter","universal","updated","upgrade","uploads","users","value","version","versions","video","volume","width","winners","winning","worth","years","yesterday"]
	},{
		"title": "60 Mac Tips: Volume 2",
		"url": "/2017/10/03/60-mac-tips-volume-2/",
		"tags": ["writing"],
		"date": "Oct 3<span>rd</span>, 2017",
		"ts": "1507047000",
		"summary": "A few years ago, back when the Macworld conference was still a thing, I did a presentation with David Sparks and Merlin Mann. We delivered 60 Mac tips in 60 minutes. It was quite a feat, and a dizzying amount of information. David and I decided to turn that into a more usable compendium, and released 60 Mac Tips on iBooks. Today we&rsquo;re announcing Volume 2. Volume 2 is a collection of entirely new tricks and tips to make you more efficient on your Mac. 60 screencasts and two hours of video demonstrating and explaining each tip. I joined David and Katie on this week&rsquo;s Mac Power Users to talk about creating the book. They&rsquo;re geared toward everyone, from beginner to advanced. To me the difference between a \"user\" and a \"power user\" is their level of curiosity, not their current level of skill. If you&rsquo;re someone who buys a book like this, you have the curiosity. We&rsquo;re aiming to give you new skills. I had a great time working with David on this, and I hope it shows in the final product. I think you&rsquo;ll enjoy it. You can get the new book in the iBooks Store for your Mac, iPad or iPhone. The iBooks Store version was created in iBooks Author and includes the highest quality interactivity available. We&rsquo;re also offering this book as a streaming/downloadable product from Vimeo. The Vimeo version also includes closed-captioning and higher fidelity video (1080 vs. 720 in the iBook). 60 Mac Tips, Volume 2 from David Sparks on Vimeo. We also updated Volume 1 to version 1.2 on iBooks. We replaced tips that didn&rsquo;t work anymore, and updated tips that have changed. The update is free on iBooks if you own the first volume already. Otherwise, you can get it on the iBooks Store or Vimeo Streaming/Download",
		"keywords": ["david","field","guides","ibooks","macos","macsparky","sparks","vimeo","apple","author","automator","david","download","katie","macworld","merlin","notes","photos","safari","sparks","spotlight","store","streaming","terminal","today","topics","users","vimeo","volume","advanced","aiming","amount","announcing","anymore","apple","available","beginner","between","brettterpstra","byline","captioning","changed","class","closed","collection","compendium","conference","created","creating","curiosity","decided","delivered","demonstrating","difference","dizzying","downloadable","efficient","enjoy","entirely","everyone","explaining","fidelity","first","frameborder","geared","gosparkygo","great","header","height","higher","highest","hours","https","ibook","ibooks","iphone","ibooks","iframe","image","includes","information","interactivity","itunes","joined","keyboard","ldquo","level","loading","macos","macsparky","media","merlinmann","minutes","mozallowfullscreen","noscript","offering","ondemand","original","party","picture","player","portrait","presentation","product","quality","rdquo","relay","released","replaced","rsquo","screencasts","shortcuts","shows","skill","skills","small","source","srcset","streaming","think","third","tipsvol","tipsv","title","toward","tricks","updated","uploads","usable","version","video","vimeo","volume","webkitallowfullscreen","width","working","years"]
	},{
		"title": "Jamf: Easily Manage and Protect Your Apple Devices at Work",
		"url": "/2017/09/28/jamf-easily-manage-and-protect-your-apple-devices-at-work/",
		"tags": ["sponsor"],
		"date": "Sep 28<span>th</span>, 2017",
		"ts": "1506596400",
		"summary": "Thanks to Jamf Now for sponsoring BrettTerpstra.com this week! Apple device management can be time-consuming work, especially if IT is not your day job. Make iOS and macOS device management easy so you can spend your valuable time doing other work. Jamf Now is a cloud-based device management solution for the iPad, iPhone, and Mac devices in your workplace. Easily configure email and Wi-Fi networks, distribute apps to your team, protect sensitive data, and even lock or wipe a device from anywhere. Jamf Now was designed to be fast, accessible, and affordable so you can support your users without help from IT. Start today by managing your first 3 devices for free. Add more for just $2 a month, per device. Create your free account today",
		"keywords": ["apple","iphone","apple","brettterpstra","create","easily","sponsored","syndicate","thanks","accessible","account","affordable","anywhere","based","cloud","configure","consuming","designed","device","devices","distribute","doing","email","especially","first","iphone","macos","management","managing","networks","protect","sensitive","solution","spend","sponsoring","support","today","users","valuable","workplace"]
	},{
		"title": "MultiMarkdown Composer 4 (+Giveaway)",
		"url": "/2017/09/26/multimarkdown-composer-4-plus-giveaway/",
		"tags": ["editor","markdown","multimarkdown","texteditor"],
		"date": "Sep 26<span>th</span>, 2017",
		"ts": "1506448860",
		"summary": "MultiMarkdown Composer has been my top pick for serious Markdown editing for quite a while now. Version 4 is a big upgrade from the previous version, and I&rsquo;m excited it&rsquo;s finally available to the public. I&rsquo;m going to talk about a few features, but if you already know how great Composer is, you can always jump to the giveaway form. MultiMarkdown Composer 4 has been in the works for a few years now, undergoing a complete rewrite. Long enough, in fact, that it&rsquo;s been through a couple names in the process. Its final incarnation is a free \"Basic\" app on the Mac App Store, with in-app purchase for the Standard and Pro versions. It was worth the wait: it&rsquo;s fast and packed with amazing features you don&rsquo;t find in other editors. In the process of the rewrite, Fletcher Penney wrote a whole new version of MultiMarkdown. MultiMarkdown 6 is technically still in beta, but is well-tested and I haven&rsquo;t had a single issue with it in MMD Composer 4. There are a few syntax changes to note. Most of them won&rsquo;t be an issue, though changes like requiring table captions to be after the table instead of accepting it either at top or bottom might throw a few people (and existing MMD 5 documents) off. Some of the new syntax, though, is brilliant. First, let&rsquo;s talk about why this is my favorite editor. Back in 2012 I penned a list of features that my dream markdown editor would have (and a followup). A healthy number of these made it into the first version of MultiMarkdown Composer, and more with each version. Here are some of the features from my list that are available in MultiMarkdown Composer: Bold/italics shortcuts Maintain indentation when hitting return Automatically continue lists, incrementing numbered lists automatically Automatically pair common characters (brackets, parens, backticks, quotes, etc.) If a paired character is typed while text is selected, wrap the text in the pair Pasting a link with text selected creates link syntax Autocomplete reference titles, so typing a square bracket creates a pair and then typing inside of it searches the document for any (or footnotes) lines and uses typeahead completion. Table of Contents Shortcuts for indenting lines and paragraphs and moving them up and down Tools to turn text into lists and convert lists between bullet and numbered One of my favorites: ⌘↩ will start a new line without inserting a linebreak in the current line The editor&hellip;",
		"keywords": ["composer","fletcher","multimarkdown","penney","autocomplete","automatically","basic","change","check","clean","composer","contents","criticmarkup","custom","document","editor","export","first","fletcher","friday","giveaway","google","history","latex","limit","maintain","markdown","marked","microsoft","multimarkdown","opendocument","pages","pasting","penney","pretentious","preview","print","references","robot","scrivener","shortcuts","sorry","soulmen","standard","stats","store","table","textexpander","textpack","theme","tools","tracking","ulysses","version","versions","wherever","winners","abilities","ability","accept","accepted","accepting","added","advanced","allow","allowing","amazing","announcing","apostrophes","apple","automatically","available","avoid","backticks","backward","basic","becoming","between","block","blockquotes","blocks","bottom","bracket","brackets","brettterpstra","brilliant","bullet","bunch","bundle","called","captions","casing","change","changes","character","characters","chosen","class","clean","click","clunky","codes","collaborative","color","command","commands","comment","common","compare","composer","contact","contents","continue","control","controlling","convert","converted","counts","couple","create","created","creates","criticmarkup","curly","custom","customized","customizing","dashes","defined","definitely","demonstrates","depth","difference","differences","different","diffs","distribution","document","documents","doesn","double","dream","edited","editing","editor","editors","edits","either","elastic","elements","ellipses","email","emphasis","encoding","endeavors","ended","enough","enter","entities","errors","essentially","except","excited","expansion","expansions","export","favorite","favorites","feature","features","fenced","files","finally","first","fletcher","followup","footnotes","format","formatting","functionality","github","giveaway","going","great","haven","header","headers","headlines","healthy","hellip","highlighted","highlighter","highlighting","history","hitting","https","images","incarnation","included","including","incrementing","indentation","indenting","individually"]
	},{
		"title": "nvALT 2.2.8, because I got High (Sierra)",
		"url": "/2017/09/19/nvalt-2-dot-2-8-because-i-got-high-sierra/",
		"tags": ["nvalt"],
		"date": "Sep 19<span>th</span>, 2017",
		"ts": "1505829720",
		"summary": "So any and all users who&rsquo;ve upgraded to the High Sierra preview has had issues with the nvALT. I know this because of the number of emails and tweets and various other means of complaining that are absolutely not the GitHub Issues page I try so hard to point people to for such communication. Also, because I&rsquo;m running High Sierra, too. I had almost given up on a fix. Notational Velocity&rsquo;s code uses low-level file APIs, and it looked like there was no way I was going to get them all updated and working with the APFS filesystem in High Sierra. Turned out it was just an incorrect volume capabilities check (credit to Jacob Bandes-Storch). A couple of other fixes (credit to Vivek Gani) and it&rsquo;s running fine. If you&rsquo;re already on High Sierra, you&rsquo;ll have to download directly (below), and for everyone else you should see the automatic update and I highly recommend using it. Here&rsquo;s to nvALT&rsquo;s survival until BitWriter gets back on track! Love, Brett (and David, who is in no way responsible for the contents of this post.) nvALT v2.2.8 (128) Download nvALT v2.2.8 (128) A fork of Notational Velocity with MultiMarkdown preview and advanced Markdown editing capabilities. Other good stuff. Published 06/08/13. Updated 09/19/17. Changelog Donate &bull; More info&hellip; Hey, thanks Brett! You're welcome. Or me on GitHub! P.S. I accidentally found this \"positive\" remix of the song referenced in the title. Funny",
		"keywords": ["apple","config","github","graphics","interface","iphone","processing","programming","sierra","bandes","bitwriter","brett","changelog","david","donate","download","funny","github","issues","jacob","markdown","multimarkdown","notational","published","sierra","storch","turned","updated","velocity","vivek","accidentally","advanced","almost","automatic","because","below","capabilities","check","communication","complaining","contents","couple","credit","directly","download","editing","emails","everyone","filesystem","fixes","found","going","hellip","highly","incorrect","issues","level","looked","nvalt","people","point","positive","preview","recommend","referenced","remix","responsible","rsquo","running","stuff","survival","thanks","title","track","tweets","updated","upgraded","users","using","various","volume","welcome","working"]
	},{
		"title": "Web Excursions for September 18, 2017",
		"url": "/2017/09/18/web-excursions-for-september-18-2017/",
		"tags": ["bookmarks"],
		"date": "Sep 18<span>th</span>, 2017",
		"ts": "1505758980",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Paste for Mac 25% off If you don&rsquo;t have a clipboard manager yet, Paste is great. Unlimited clipboard history, pinboard views with previews, and a lot more. 25% off right now. Sublime Text 3 So Sublime 3 is finally official. I&rsquo;ve been using it in beta for long enough that this isn&rsquo;t a huge deal, but despite Atom having a larger developer community, I&rsquo;ve stuck with Sublime primarily because it&rsquo;s stable, it has every package I need, and it&rsquo;s not an Electron app. gerardroche/sublime-monokai-free A really nice version of Monokai for Sublime Text 3. I found a link in the description to ColorSchemeUnit which looks like a great unit testing tool for those publishing Sublime themes. 0k/shyaml: YAML for command line Probably because of my Jekyll usage and Ruby in general, I&rsquo;ve taken to creating most configuration files in YAML instead of JSON. Parsing it from a bash script has always been a pain, though&hellip; Dieselgeek This will only be of interest to VW and Audi owners who happen to enjoy saving a ton of money by getting their hands dirty. But seriously, with cheap replacement parts and detailed tutorial videos, I&rsquo;ve already saved over $1000 over taking my aging TT to a mechanic. (And that&rsquo;s not even including the money that Harold Kachelmyer helped me save on a clutch replacement…) FLAC to MP3 Mac - Convert FLAC to MP3 Format on Mac OS A macOS app for speedy conversion of FLAC to MP3 and other audio formats",
		"keywords": ["macos","sierra","volkswagen","cleanmymac","colorschemeunit","convert","dieselgeek","electron","format","harold","jekyll","kachelmyer","monokai","parsing","paste","sublime","unlimited","absolute","aging","audio","because","border","brettterpstra","brought","cheap","class","click","clipboard","clutch","color","command","community","configuration","conversion","creating","default","description","detailed","developer","dieselgeek","dirty","display","enjoy","enough","excursions","files","finally","flactomp","formats","found","general","gerardroche","getting","github","great","hands","happen","having","height","hellip","helped","hidden","history","https","image","impactradius","including","interest","jcmvhdgfibguuy","larger","loading","looks","macos","macpaw","manager","mechanic","media","money","monokai","noscript","official","original","owners","package","paddle","partnership","parts","picture","pinboard","position","previews","primarily","princessharold","publishing","redir","replacement","right","rsquo","saved","saving","scheme","script","seriously","shyaml","source","speed","speedy","srcset","stable","stuck","style","sublime","sublimetext","taken","taking","testing","themes","title","tools","tutorial","twitter","uploads","usage","using","vbwfya","version","videos","views","visibility","width"]
	},{
		"title": "The PDFpen family: Edit PDFs like a Pro",
		"url": "/2017/09/14/the-pdfpen-family-edit-pdfs-like-a-pro/",
		"tags": ["sponsor"],
		"date": "Sep 14<span>th</span>, 2017",
		"ts": "1505386800",
		"summary": "Thanks to the PDFpen Family for sponsoring BrettTerpstra.com this week! Edit PDFs like a Pro with the PDFpen Family: PDFpen for macOS, PDFpen for iPad & iPhone, and PDFpen Scan+. PDFpen for macOS is the ultimate PDF editing tool, your Swiss Army knife of PDF. PDFpen Scan+ adds scanning and OCR to your mobile toolkit. OCR when away from your desk and scanner, and scan receipts with ease. Break the scan-print-sign-fax cycle with the PDFpen Family. Do it all paperless style. Add text and graphics, make corrections, and much more. Visit smilesoftware.com/brett to learn more about the PDFpen Family",
		"keywords": ["pdfpen","smile","break","brettterpstra","family","pdfpen","swiss","thanks","visit","brett","corrections","cycle","device","editing","empowers","graphics","iphone","knife","learn","macos","mobile","paperless","print","receipts","scanner","scanning","smilesoftware","sponsoring","style","toolkit","ultimate"]
	},{
		"title": "Add favicons to Safari tabs with Faviconographer",
		"url": "/2017/09/11/add-favicons-to-safari-tabs-with-faviconographer/",
		"tags": ["browser","macos","safari"],
		"date": "Sep 11<span>th</span>, 2017",
		"ts": "1505145120",
		"summary": "Last month John Gruber mentioned a widespread complaint about Safari&rsquo;s lack of favicons in tabs. I agree. So did Daniel Alm (developer of Timing), so he put together a helper app to do it. Released today, Faviconographer is a \"hack,\" of course, but one that does a great job of serving the single purpose of adding those icons to your tabs. It&rsquo;s not as clean as Chrome&rsquo;s built in solution, but if the lack of favicons is one of few things keeping you from using Safari, it&rsquo;s a good solution. The app runs in the background and uses the macOS Accessibility API. It sends no data about your browsing (it doesn&rsquo;t even save it to disk). It just waits for tabs to load, grabs the favicon, and applies it to the tab in the tab bar. There are a few limitations, but it works. Faviconographer is free. You can read a bit more about the backstory and motivation, as well as grab the download at faviconographer.com",
		"keywords": ["accessibility","icons","accessibility","chrome","daniel","faviconographer","gruber","released","safari","timing","adding","agree","applies","background","backstory","browsing","built","clean","complaint","developer","doesn","download","favicon","faviconographer","favicons","grabs","great","helper","icons","keeping","limitations","macos","mentioned","motivation","rsquo","sends","serving","single","solution","today","together","using","waits","widespread","works"]
	},{
		"title": "It's the last day of the Learn Ulysses sale",
		"url": "/2017/09/05/its-the-day-of-the-learn-ulysses-sale/",
		"tags": ["video"],
		"date": "Sep 5<span>th</span>, 2017",
		"ts": "1504638600",
		"summary": "I just wanted to mention that today is the last day of the Learn Ulysses intro sale. Starting tomorrow the price will go up to $29, but you can still get the intro price of $23 for a few more hours. On the launch day for the video course the Systematic episode with Shawn Blanc wasn&rsquo;t published yet, but it is now. There&rsquo;s a good discussion of Ulysses, this video course, and a good talk about Ulysses&rsquo; change to a subscription model. If you&rsquo;re a Ulysses user, or someone who wants be, this series is a polished and highly useful resource from some trusted content creators. Go take advantage of the intro price while it lasts! Don&rsquo;t forget Ulysses is available on Setapp",
		"keywords": ["iphone","macos","tutorial","ulysses","writing","blanc","learn","setapp","shawn","starting","systematic","ulysses","advantage","available","change","content","creators","discussion","episode","forget","highly","hours","intro","lasts","launch","mention","model","polished","price","published","resource","rsquo","series","subscription","today","tomorrow","trusted","useful","video","wanted","wants","while"]
	},{
		"title": "Sideshow (Sidecar 3.0) for Simplify",
		"url": "/2017/08/30/sideshow-sidecar-3-dot-0-for-simplify/",
		"tags": ["macos","sideshow","simplify"],
		"date": "Aug 30<span>th</span>, 2017",
		"ts": "1504098000",
		"summary": "You may or may not recall my Sidecar jacket for Simplify, the macOS controller for Spotify and iTunes (and others). Sidecar is my \"Minimalist Yet Huge\" version, and I still use it every day. I just released a new version. It&rsquo;s now called Sideshow, mostly because I ran into trouble making the existing version update in Simplify. So this is technically Sidecar 3.0. It adds one major change: adaptive sizing. Previously I&rsquo;d needed to have a version for a 13\" display and another for a 15\" retina display, but I figured out how to have adapt itself based on the current screen size (I think, let me know if you find otherwise). The width of the player, font sizes, etc. will all adjust to provide a fairly uniform experience across display sizes and types. It also measures and updates the length of the text for the artist and title displays, adapting the placements to show as much of possible of both. When hovering over the jacket, controls appear for previous track, play/pause, and next track. You can still Command-click anywhere along the progress meter to set the play position. Clicking anywhere on the jacket will still toggle play/pause, and shift-click skips to the next track (because double click stopped working). Check it out on the project page, or just download below. Sideshow v3 Download Sideshow v3 An adaptive full-screen jacket for Simplify 3.0+. Published 06/17/13. Updated 08/29/17. Changelog Donate &bull; More info&hellip",
		"keywords": ["controller","itunes","music","spotify","changelog","check","clicking","command","donate","download","minimalist","previously","published","sidecar","sideshow","simplify","spotify","updated","across","adapt","adapting","adaptive","adjust","another","anywhere","appear","artist","based","because","below","called","change","click","controller","controls","display","displays","double","download","experience","fairly","figured","hellip","hovering","itunes","itself","jacket","length","macos","major","making","measures","meter","mostly","needed","others","pause","placements","player","position","possible","project","recall","released","retina","rsquo","screen","shift","sizes","sizing","skips","stopped","technically","think","title","toggle","track","trouble","types","updates","version","width","working"]
	},{
		"title": "The Learn Ulysses video course",
		"url": "/2017/08/29/the-learn-ulysses-video-course/",
		"tags": ["video"],
		"date": "Aug 29<span>th</span>, 2017",
		"ts": "1504012260",
		"summary": "If you like Ulysses, the powerful writing app for Mac and iOS, or even if you&rsquo;re trying to figure out why you should like it, there&rsquo;s good news today. Shawn Blanc and The Sweet Setup have released a new video series called Learn Ulysses. It&rsquo;s a series of 7 video tutorials to walk through all of Ulysses&rsquo; features (both Mac and iOS), as well as tips and tricks, hidden gems, and interviews with users who are making the most of the writing app. I would be remiss not to acknowledge the recent uproar over Ulysses&rsquo; switch to a subscription-only model. I got a chance to talk to Shawn about his thoughts on the change, and that interview will be up on Systematic on Thursday. For the record, Shawn isn&rsquo;t affiliated with the Soulmen (makers of Ulysses), and this video series was in editing phase by the time the switch was officially made. Just in case you were wondering. The course is $29 US, but the intro price is $23. If you&rsquo;re looking to ramp up your Ulysses skills, go check it out",
		"keywords": ["iphone","macos","tutorial","ulysses","writing","blanc","learn","setup","shawn","soulmen","systematic","thursday","ulysses","affiliated","called","chance","change","check","editing","features","figure","hidden","interview","interviews","intro","looking","makers","making","model","officially","phase","powerful","price","recent","record","released","remiss","rsquo","series","skills","subscription","switch","thoughts","through","today","tricks","trying","tutorials","uproar","users","video","wondering","writing"]
	},{
		"title": "​Zengobi’s End of Summer and Back to School Sale!",
		"url": "/2017/08/24/zengobis-end-of-summer-and-back-to-school-sale/",
		"tags": ["sponsor"],
		"date": "Aug 24<span>th</span>, 2017",
		"ts": "1503577800",
		"summary": "Thanks to ​Zengobi for sponsoring BrettTerpstra.com this week! To celebrate the end of summer and to reward the many students and professors heading back to school, we’re happy to offer special limited-time discounts on new Curio 11 Professional and Standard licenses, including our already-discounted Curio 11 Pro Academic license! The faster you act the more you save. Discounts of up to 33% are available for a very limited time! Curio is an intuitive, freeform notebook environment with all the integrated tools you need to take notes, brainstorm ideas, collect research, and organize your tasks and documents. A single, incredibly powerful application where you can be more productive and focus on getting things done. In Curio, create a project to represent a real-world project that you’re working on. Next fill it with everything related to that project including notes, images, PDF’s, documents, web links, multimedia, and much, much more. You can place this information anywhere on Curio’s freeform idea spaces. Or use Curio’s integrated mind maps, lists, tables, index cards, albums, pinboards, and stacks to organize your data into powerful collections. Next, associate tags, flags, checkboxes, and dates for easy searching and task management. The key point is that everything related to your project is stored, managed, and tracked within a single project file using a single, well-integrated application. Curio is perfect in the workplace or on campus for taking notes, collecting research, and brainstorming ideas. You’ll be amazed at what you can do with Curio",
		"keywords": ["curio","school","zengobi","academic","brettterpstra","curio","discounts","professional","sponsored","standard","syndicate","thanks","vsayd","zengobi","academia","advantage","albums","amazed","anywhere","associate","available","biggest","blockquote","brainstorm","brainstorming","brettterpstra","campus","cards","celebrate","checkboxes","class","collect","collecting","collections","create","curioscreenshot","dates","discounted","discounts","documents","environment","everything","faster","flags","focus","freeform","getting","happy","heading","height","https","ideas","image","images","including","incredibly","index","information","integrated","intuitive","license","licenses","limited","links","lists","loading","managed","management","media","multimedia","nofollow","noscript","notebook","notes","offer","organize","original","picture","pinboards","point","powerful","productive","professionals","professors","project","related","research","reward","school","searching","single","source","spaces","special","sponsoring","srcset","stacks","stored","students","summer","tables","taking","tasks","thousands","title","tools","tracked","uploads","using","where","width","within","working","workplace","world"]
	},{
		"title": "Tagging files from the macOS command line",
		"url": "/2017/08/22/tagging-files-from-the-command-line/",
		"tags": ["macos","scripting","tagging","terminal","vitag"],
		"date": "Aug 22<span>nd</span>, 2017",
		"ts": "1503426600",
		"summary": "Let&rsquo;s address the headline first. This post is about the tags on files that Apple started supporting in Mavericks. Up until iOS 11, they didn&rsquo;t work on iOS devices, so they eventually became \"Finder tags.\" I think \"Apple Tags\" is going to have to be the nomenclature moving forward (now that they&rsquo;re starting to work on iOS as well), but I don&rsquo;t think it&rsquo;s a widely accepted phrase yet. So I&rsquo;ll use \"Finder tags\" for a little while longer. I have a handful of scripts for manipulating tags from the command line, including the most complete (and useful to me) one, vitag. There&rsquo;s an excellent CLI from James Berry called \"tag\" that I use frequently, but I sometimes implement more \"down and dirty\" techniques in scripts.1 If you&rsquo;re just looking for a ready-to-go tool, grab tag and skip the rest of this. Last weekend I wrote a script to handle cleaning up my system&rsquo;s tags, merging synonymous tags, fixing spacing and punctuation, making casing and pluralization consistent, and various other nitpicks that have gotten messy in my taxonomy over time. It used the same basic Ruby classes that I used in vitag, which you can reference on GitHub for a more full-fledged version of these tips. I&rsquo;m not ready to publish this last script yet, but I thought I&rsquo;d point out a few simple tricks for those working on their own solutions. Tags are stored in extended attributes on the files, in a metadata attribute with the key . Trying to view them using the tool almost always results in a hex dump, and converting it results in a binary plist, and converting that gives you messy results. I can parse that response, split lines, remove commas, etc., and turn it into an array of tags I can work with. Tags are written to files using . They need to be passed to in Plist format (XML) with an array of string elements containing the tags. When you write tags to the file using , it will obliterate any existing tags, so note that if you want to add tags instead of replacing them, you need to read the tags into an array as shown above, modify and update the array, then write the whole thing back to the file. The colors associated with tags like \"Blue\" and \"Orange\" (default label names) are stored in a different attribute (). This dates back a ways, and there&rsquo;s really no point in directly writing to this attribute anymore. It&rsquo;s easiest just to change the tags. Remove \"Blue\" and add \"Orange.\" Writing a&hellip;",
		"keywords": ["xattr","&#39;print","&#39;shell&#39;","apple","berry","color","doctype","dropbox","finder","finderinfo","github","james","mavericks","often","orange","plist","public","plist","propertylist","reading","remove","shell","trying","writing","above","accepted","address","almost","anymore","append","apple","apply","array","associated","attribute","attributes","automatically","backlink","basic","became","because","begin","binary","breaks","brettterpstra","building","called","casing","change","checking","class","classes","cleaning","closing","color","colors","command","commas","consistent","containing","converting","dates","default","dependencies","devices","different","directly","directory","dirty","display","doing","easiest","elements","endnotes","eventually","excellent","expand","extended","external","file&#39;s","filename","files","first","fixing","fledged","fnref","footnote","footnotes","format","found","github","gives","going","gotten","handful","handle","having","headline","height","hellip","highlight","highlighter","https","ideal","image","including","interest","intrepid","jdberry","kmditemusertags","label","labels","language","ldquo","little","loading","longer","looking","looks","making","manipulating","manpagez","master","media","merging","messy","metadata","modify","module","moving","names","nitpicks","nomenclature","noscript","noteref","nvalt","obliterate","original","output","parse","passed","phrase","picture","plaintext","plist","pluralization","plutil","point","project","projects","publish","punctuation","rdquo","reading","ready","recommend","remove","replacing","response","results","reversefootnote","rouge","rsquo","ruby&#39;","script","scripting","scripts","shelling","shellwords","showing","shown","simple","simply","snippet","solutions","sometimes","source","spacing","split","srcset","started","starting","stored","string","strings","supporting","synonymous","system","tagging","taxonomy","techniques","terminal","think","thought","title","traversal","tricks","ttscoff","uploads","useful","using"]
	},{
		"title": "Web Excursions for August 21, 2017",
		"url": "/2017/08/21/web-excursions-for-august-21-2017/",
		"tags": ["bookmarks"],
		"date": "Aug 21<span>st</span>, 2017",
		"ts": "1503333060",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Sketch for Designrs Not a huge repository, yet, but another resource site to add to your Sketch bookmarks collection. Sketchpacks I love Sketch plugins to the extent that a plugin manager is a necessity. Sketch Toolbox hasn&rsquo;t been updated for a while, and this new one is pretty sweet. Superhuman Ok, so there&rsquo;s not been any shortage of email clients in recent years, nor am I interested in replacing MailMate or Spark. I do try everything out, though, and this one looks great. Currently just in advance signup mode, but if you&rsquo;re curious, get your name on the list. Raindrop.io I&rsquo;m not switching away from Pinboard, but I am impressed with this as a bookmarking/read later tool. Imports from Pocket, Readability, and Instapaper so you can try it out easily. Spotify.me I really like the way Spotify analyzes my playlist data. Just the facts, but with some interesting notes. I am apparently high energy, with 79% of my played tracks categorizing as \"energetic,\" and zero \"chill\" tracks in my playlists. And I&rsquo;m only drinking one cup of coffee in the morning these days&hellip; Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["bookmarking","raindrop","sketch","spotify","backblaze","check","designrs","imports","instapaper","mailmate","pinboard","pocket","raindrop","readability","sketch","sketchpacks","spark","spotify","superhuman","toolbox","affordably","analyzes","another","apparently","backs","bookmarking","bookmarks","brought","categorizing","chill","clients","cloud","coffee","collection","computer","curious","drinking","easily","email","energetic","energy","entire","everything","excursions","facts","great","hellip","impressed","interested","interesting","later","looks","manager","morning","necessity","notes","partnership","played","playlist","playlists","plugin","plugins","recent","reliably","replacing","repository","resource","rsquo","securely","shortage","signup","switching","today","tracks","updated","while","years"]
	},{
		"title": "seconds: CLI for quick time interval calculation",
		"url": "/2017/08/18/seconds-cli-for-quick-time-interval-calculation/",
		"tags": ["scripting"],
		"date": "Aug 18<span>th</span>, 2017",
		"ts": "1503059400",
		"summary": "Here&rsquo;s a quick script I swear I&rsquo;ve written before but couldn&rsquo;t find. If given a string as an argument, it converts it to seconds, and if given just a series of numbers, it converts the number to a human-readable string. I needed this today when setting update intervals for Sparkle, and it&rsquo;s something I&rsquo;ve run into in the past. I usually pull up a calculator, which is annoying. There&rsquo;s probably a simple Unix way to do it that I&rsquo;ll hear about in the comments, which is ok, I still had fun writing it. Since this is mostly likely to be of use to programmers, I won&rsquo;t bother detailing how to turn it into an executable script. You got this. Arguments are numbers followed by a timespan. It works on shorthand (w = week, day = d, hours = h, minutes = m, seconds = s), but will convert most strings to this format automatically, e.g. \"2 days, 3 hours, and 30 min\" is the same as \"2d3h\". As long as the format is a number followed by strings that start with , , , , or , it&rsquo;ll figure it out. Here&rsquo;s the script. Do with it what you will",
		"keywords": ["convert","seconds","terminal","arguments","convert","since","sparkle","annoying","argument","automatically","before","bother","calculator","comments","convert","converts","couldn","detailing","executable","figure","followed","format","hours","human","intervals","likely","minutes","mostly","needed","numbers","programmers","quick","readable","rsquo","script","seconds","series","setting","shorthand","simple","string","strings","swear","timespan","today","usually","works","writing","written"]
	},{
		"title": "Timing - the Automatic Mac Time Tracking App",
		"url": "/2017/08/17/timing-the-automatic-mac-time-tracking-app/",
		"tags": ["sponsor"],
		"date": "Aug 17<span>th</span>, 2017",
		"ts": "1502967600",
		"summary": "Thanks to Timing for sponsoring BrettTerpstra.com this week! Time is your most precious resource. You need to know how you are spending it. But time tracking sucks. Big Time. (Pun intended.) The brand new Timing fixes that. It automatically tracks which apps, documents and websites you use — without start/stop timers. See how you spend your time, eliminate distracting activities, and improve your client billing. Mind you, this data is super sensitive, so Timing keeps it safe on your Mac. Not convinced yet? Read what Brett himself has to say about Timing. (Spoiler alert: he likes it, and it helps him be more productive.) Or download the free 14-day trial today and get 10% off",
		"keywords": ["daniel","timing","tracking","brett","brettterpstra","spoiler","thanks","timing","activities","alert","animated","automatically","billing","brand","brett","brettterpstra","caption","class","client","convinced","distracting","documents","doing","download","eliminate","figure","fixes","focus","frame","height","helps","himself","https","improve","intended","keeps","likes","macstories","makes","nofollow","precious","productive","resource","reviews","sensitive","source","spend","spending","sponsoring","sucks","super","tabindex","timers","timing","timingapp","today","tracking","tracks","trial","uploads","usage","websites","width","worrying"]
	},{
		"title": "Tower Git client 25% off",
		"url": "/2017/08/16/tower-git-client-25-percent-off/",
		"tags": [],
		"date": "Aug 16<span>th</span>, 2017",
		"ts": "1502902800",
		"summary": "This is a quick pointer to the 25% off sale that Creatable is offering on the Tower git client for Mac. Tower is my favorite Git client, and repeatedly one of my top apps, but it&rsquo;s a steep price at the current $79 US. This link will bring it down to $59",
		"keywords": ["tower","creatable","tower","bring","client","favorite","offering","pointer","price","quick","repeatedly","rsquo","steep"]
	},{
		"title": "styleStealer: add your web design to Marked with a click",
		"url": "/2017/08/16/stylestealer-add-your-web-design-to-marked-with-a-click/",
		"tags": ["bookmarklet","javascript","marked","scripting"],
		"date": "Aug 16<span>th</span>, 2017",
		"ts": "1502884800",
		"summary": "Creating custom styles for Marked 2 is pretty easy&hellip; if you know CSS. I&rsquo;ve started work on building an actual templating system, but it hasn&rsquo;t come to fruition yet. In the meantime, I present styleStealer, a bookmarklet to make grabbing a site&rsquo;s design and applying it to your Markdown preview in Marked a simple process. To use it, just drag the bookmarklet below to your bookmarks/favorites bar (tested in Safari and Chrome). If your Chromium browser doesn&rsquo;t allow bookmarklets (like Arc), download the styleStealer extension version and follow the instructions here. Click the bookmark. When a blue bar appears across the top of the page, you&rsquo;ll be in inspection mode. Hovering over elements will outline the closest container elements, and show their selector at the top of the screen. Click a container that holds the entire article but not any sidebars or excess cruft. Watch a stylesheet magically appear. Click the text once to select all, then copy and paste into a text file. Save as \"site name.css\". In Marked > Preferences > Style, click the plus sign under the custom style list and locate your new css file. Make sure you&rsquo;ve selected the new style in the style picker on a preview window to check it out! It&rsquo;s not 100% perfect on all sites as there are a lot of variables to deal with when trying to detect and replicate styling using JavaScript alone. But in my testing it&rsquo;s been pretty awesome. Recent security changes in WebKit make it difficult to parse styles via JavaScript on most pages. styleStealer uses XHR requests to reload cross-domain stylesheets. The script uses computed rules for most styles, parsing stylesheets mostly for imports/webfonts. When a container is chosen, it injects standard elements into the selected container and then reads their applied styles. It reads only style rules relevant to display in Marked, creating a relatively simple stylesheet. Output is specifically formatted to be a stylesheet in Marked, meaning: Selectors are previxed with Marked&rsquo;s container ID for specificity Standard comment header is added to the top The prefix is added when the styleStealer.steal() function is called, and is easily removed. All extra text is contained in heredocs in the script and is easily editable. Come up with a great one that would be useful to others? Feel free to add it here or contact me with it",
		"keywords": ["cascading","custom","marked","sheets","style","chrome","chromium","click","creating","hovering","javascript","markdown","marked","output","preferences","recent","safari","selectors","standard","style","watch","webkit","across","added","allow","alone","appear","appears","applied","applying","article","awesome","below","bookmark","bookmarklet","bookmarklets","bookmarks","browser","building","called","changes","check","chosen","click","closest","comment","computed","contact","contained","container","contains","content","creating","cross","cruft","custom","design","detect","difficult","display","doesn","domain","download","easily","editable","elements","entire","extension","extra","favorites","formatted","fruition","function","grabbing","great","header","hellip","heredocs","holds","imports","injects","inspection","instructions","magically","match","meaning","meantime","mostly","notes","others","outline","pages","parse","parsing","paste","picker","prefix","preview","previxed","process","reads","relatively","relevant","reload","removed","replicate","requests","rsquo","rules","screen","script","section","security","selected","selector","sidebars","simple","sites","specifically","specificity","standard","started","steal","style","stylestealer","styles","stylesheet","stylesheets","styling","system","templating","tested","testing","trying","under","useful","using","usually","variables","version","webfonts","window"]
	},{
		"title": "Automatic release notes from Git commit messages",
		"url": "/2017/08/14/automatic-release-notes-from-git-commit-messages/",
		"tags": ["developer"],
		"date": "Aug 14<span>th</span>, 2017",
		"ts": "1502715600",
		"summary": "I thought I&rsquo;d share the script I&rsquo;m using to generate changelogs for Marked releases using git commit messages. A lot of it is tailored to my own setup, and would require some customization to make it work with a different workflow. Also, it&rsquo;s messy code, for which I apologize. Ultimately it should have just been a procedural script, but I started to go somewhere else with it before I realized that wasn&rsquo;t what I was getting paid for. Anyway, when I&rsquo;m working on Marked, I use keywords in my git commits to specify things I want to appear in the release notes later. For a long time I would just output a pretty-formatted log and then use one-off scripts and Sublime Text to generate my release notes. This script is my current method of automating it. ChangeLogger uses to find the commit hash for the last tag, which in my workflow (git-flow) are only created for releases. Thus the commit hash of the last tag is where the next changelog begins. Lines in commit messages can have one of three keywords at the beginning, anything without a keyword is not included in the changelog. The keywords are \"NEW\", \"FIXED\", and \"IMPROVED\". The script also accepts \"FIX\" and \"IMPROVEMENT\", and these can have hyphens before (as Markdown lists) and colons after, but that&rsquo;s all stripped either way. The header for the changes gets the app name and version information. These are pulled from Xcode Info.plist files and . It outputs formatted in the way my documentation generator needs for creating the release notes pages. That&rsquo;s currently hardcoded, but probably easy to modify as needed. The script has no library dependencies, so it should be self-contained. The few config options it has are commented at the top. If this sounds intriguing, and you&rsquo;re feeling forgiving about a mess of pointless class structures, feel free to grab it",
		"keywords": ["notes","release","workflow","anyway","changelogger","example","fixed","improved","improvement","markdown","marked","sublime","workflow","xcode","accepts","apologize","appear","automating","before","beginning","begins","changelog","changelogs","changes","class","colons","commented","commit","commits","config","contained","created","creating","customization","dependencies","different","either","feeling","files","forgiving","formatted","generator","getting","hardcoded","header","hyphens","included","information","intriguing","keyword","keywords","later","library","lists","messages","messy","method","modify","needed","needs","notes","options","output","outputs","pages","plist","pointless","procedural","pulled","realized","release","releases","repository","rsquo","script","scripts","setup","share","somewhere","sounds","specifics","specify","started","stripped","structures","tailored","thought","using","version","where","workflow","working"]
	},{
		"title": "Communicate smarter with TextExpander",
		"url": "/2017/08/10/communicate-smarter-with-textexpander/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Aug 10<span>th</span>, 2017",
		"ts": "1502368200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander is perfect for standardizing and improving the written replies you do every day. Bring order to your meeting notes with a fillable template. Write a customizable reference request once, then use it every time you need it. Recall your best words. Instantly, repeatedly. TextExpander can format dates, autocorrect misspellings, and search your collected knowledge with a few letters and a hotkey. Share with others, and make everyone more productive. Try TextExpander free for 30 days. TextExpander subscriptions include software for Mac, iPad, iPhone, and Windows. Get started quickly with our pre-made public groups! Visit textexpander.com/brett to start your free trial",
		"keywords": ["smile","textexpander","brettterpstra","bring","collaborate","crossover","emails","forms","instantly","quickly","recall","share","slack","snippet","snippets","textexpander","thanks","through","visit","windows","write","autocorrect","brett","check","collected","communication","customizable","dates","everyone","fillable","format","groups","hotkey","iphone","improving","knowledge","letters","links","meeting","misspellings","notes","others","productive","public","quickly","repeatedly","repetitive","replies","search","snippets","software","sponsoring","standardizing","started","subscriptions","template","textexpander","through","trial","tricks","words","written"]
	},{
		"title": "Regarding punctuated tags",
		"url": "/2017/08/09/regarding-punctuated-tags/",
		"tags": ["tagging"],
		"date": "Aug 9<span>th</span>, 2017",
		"ts": "1502290320",
		"summary": "I&rsquo;m at the CMD-D conference in Santa Clara this morning. I&rsquo;m actually a couple hours early because my body is still on Central time. So I figured I&rsquo;d take a minute and answer the most common question that I got after my last appearance on Mac Power Users. I mentioned (kind of in passing) that you can nest tags using punctuation, in my case a colon. Here&rsquo;s an example: So in my system, there&rsquo;s also a tag, in this case it would be . (Context tags are the only tags I capitalize, and I don&rsquo;t know why, but I&rsquo;m consistent.) My auto-filer would take the file with the above tag, find the freelance folder inside of my base Work folder, and then file it under jappleseed/scripting. The way my system works, if there was a folder tagged @script even deeper within the @jappleseed folder, it would file it there instead of creating the folder at the base. So that&rsquo;s why I started using these punctuation-split tags. There are some additional benefits, though. Spotlight breaks the tag up on the punctuation when searching. This means that I can still search for and find all of my script files, regardless of the preceding portion of the tag. But I can also search and create an automatic boolean AND search, as if I&rsquo;d searched . The file will also show up for the search and . It also makes autocomplete work more efficiently for you. Once you&rsquo;ve tagged a file with any subtag, it will show up in autocomplete for you after just typing \"free,\" letting you tag the file with all three tags at once. When I&rsquo;m using these grouped tags, I start the tag with a colon as well: . It doesn&rsquo;t affect Spotlight&rsquo;s ability to search in any way, but helps keep my nested tags together in the list. This system doesn&rsquo;t help with tag pollution (having too many tags), but that helps keep the lists neater. You can also do searches like \"NOT tag::\" to exclude any tags starting with a colon. That also works with other punctuation, so in my system I can get a list of all project folders in a given context with . So basically you&rsquo;re creating nested groups that are children of a particular tag. You can then have a smart folder for all of the \"jappleseed\" client files, and use Spotlight within that folder to find various tags. You can even set Finder to group by tags in the list, so it creates an automatic visual \"folder\" hierarchy for each smart folder. It&rsquo;s not a necessary tool. You could always just&hellip;",
		"keywords": ["punctuation","users","central","clara","context","finder","santa","spotlight","users","ability","above","answer","appearance","autocomplete","autocompletion","automatic","because","benefits","boolean","breaks","capitalize","children","client","colon","combination","common","conference","consistent","context","couple","create","creates","creating","deeper","doesn","efficiently","example","figured","filer","files","filing","folder","folders","freelance","group","grouped","groups","having","helps","hierarchy","hours","inside","jappleseed","letting","lists","makes","mentioned","minute","morning","neater","necessary","nested","particular","passing","pollution","portion","preceding","project","punctuation","regardless","rsquo","script","scripting","search","searched","searches","searching","separately","shortcut","smart","split","started","starting","subtag","system","tagged","together","typing","under","using","various","visual","within","works"]
	},{
		"title": "Marked 2 tips: Document navigation",
		"url": "/2017/08/08/marked-2-tips-document-navigation/",
		"tags": ["marked"],
		"date": "Aug 8<span>th</span>, 2017",
		"ts": "1502197200",
		"summary": "Another in my irregularly-update series of Marked 2 tips and tricks. There are a lot of document navigation features in Marked, and many that have evolved since the last time I wrote about this. This particular tip is about Marked&rsquo;s special tools for navigating long documents. You may already know that while previewing a Markdown document, you can click the \"hamburger\" icon in the lower right of the preview window status bar to open up a table of contents. More my speed, you can also just hit to toggle it. There are some tricks hidden in there&hellip; The table of contents is generated automatically from headlines in the document. It won&rsquo;t show up if there aren&rsquo;t any headlines. But any number of ATX () or Setext (/) headlines will create a hierarchical navigation. It&rsquo;s always best to nest these in order, with only one top level headline (H1), H2 as sections, and then H3 as chapters or subsections, etc.. That&rsquo;s just good form in general, but it definitely makes navigation easier. Much like the rest of Marked, when the TOC is open, you can use keyboard shortcuts to navigate it. and will navigate up and down, and return (or ) will open the highlighted header. Pressing the Space bar will open up a filter field at the top of the TOC. It&rsquo;s immediately focused, so you can just type Space and then start typing a search query. This is a fuzzy matching filter, so you can type any part of the headline, even with missing letters, and filter the list to show only matches. Once you see the one you&rsquo;re looking for, hitting Tab or ctrl-n will jump back to the list so you can select the one you want. By the way, you can type \"?\" in any preview window to show available keyboard commands. You can also access the filter directly by hitting when the TOC isn&rsquo;t showing. This will pop up the TOC with the filter field focused, and it will hide again as soon as you open a selection. In Preferences under the Preview tab, you can enable \"Table of contents tracks scroll position.\" With this on, the current viewing area is highllighted in the table of contents, moving as you scroll. This also means that if your TOC is long enough to scroll, it will always be scrolled to the same area as your current position in the document. You can also manually include a copy of the table of contents in your document using the special syntax . You can also define a maximum level like this: . That would show only the first two levels of&hellip;",
		"keywords": ["contents","markdown","marked","reading","table","another","autoscroll","bookmarks","choosing","click","collapsible","coming","contents","escape","headlines","holding","hovering","inserting","keyboard","markdown","marked","preferences","pressing","preview","sadly","setext","shift","shortcuts","space","special","syntax","table","typing","using","webkit","ability","access","accidentally","again","allowing","anywhere","associated","automatically","autoscrolling","available","based","because","before","below","between","bookmark","bookmarks","brettterpstra","bummer","changes","chapters","check","class","clear","click","clickable","clicking","collapse","collapsed","collapsible","collapsing","comes","coming","command","commands","contents","corner","create","created","cropped","cursor","deeply","define","definitely","details","dimmed","directly","document","documents","easier","editorial","elements","elsewhere","enabled","enough","entire","evolved","expand","exported","feature","features","field","filter","first","focused","format","fuzzy","general","generated","hamburger","handiest","handy","happens","header","headline","headlines","height","hellip","hidden","hierarchical","highlighted","highlighter","highllighted","hitting","holding","hovering","https","image","included","includes","indicated","information","inserted","inserting","intra","irregularly","issues","itself","keyboard","language","ldquo","length","letters","level","levels","links","literal","loading","looking","lower","magnify","makes","manually","markdown","marked","marker","markers","matches","matching","maximum","media","mention","minimap","missing","mouse","moving","navigate","navigating","navigation","nearest","nested","newer","noscript","numbers","numerical","offering","offset","ordering","original","overview","pages","particular","performing","picture","placed","plaintext","point","position","positioned","positioning","preview","previewing","proportions","query","quickly","rdquo","reading","recommend","relate","relative","remedy","replace","return","reveal","reverse","reviewing","right","rouge","rsquo","saved"]
	},{
		"title": "Talking tags with David and Katie",
		"url": "/2017/08/07/talking-tags-with-david-and-katie/",
		"tags": ["podcast","tagging"],
		"date": "Aug 7<span>th</span>, 2017",
		"ts": "1502131200",
		"summary": "I had the pleasure once again of joining David Sparks and Katie Floyd on Mac Power Users episode 390. While we&rsquo;ve discussed tagging (probably every time I&rsquo;ve ever been on the show), it&rsquo;s been years since we dove deeper into the subject. Things have changed since we all talked back on episode 45. The Files app in iOS 11 has started syncing tags, and that alone is a huge burst of hope for those of us whose primary sticking point was the uselessness of all our tagging efforts once we started doing more on our iPads. We discussed more about the the state of tagging on Mac and iOS, past, present, and future. We also dug into the \"why,\" the \"how,\" and a bit of the \"how not\" (i.e. mistakes to avoid when developing a tag taxonomy for yourself). Check out the episode on Relay.fm",
		"keywords": ["brett","icloud","iphone","terpstra","users","check","david","files","floyd","katie","relay","sparks","users","while","again","alone","avoid","burst","changed","deeper","developing","discussed","doing","efforts","episode","ipads","joining","mistakes","point","primary","rsquo","since","started","sticking","syncing","tagging","talked","taxonomy","uselessness","whose","years"]
	},{
		"title": "Quantify everything with Exist.io custom tracking",
		"url": "/2017/08/02/quantify-everything-with-exist-dot-io-custom-tracking/",
		"tags": ["health","quantified"],
		"date": "Aug 2<span>nd</span>, 2017",
		"ts": "1501691880",
		"summary": "Ever since I wrote Slogger, I&rsquo;ve been working toward a more \"quantified self.\" I&rsquo;m really bad at correlating events in my life beyond a couple of days. Did the bad night&rsquo;s sleep last week lead to eating things the next day I normally wouldn&rsquo;t, which led to increased stress and decreased physical activity over following days, which resulted in the way I&rsquo;m feeling today? Now that I&rsquo;m actually healthy enough to notice these things, I really want to know. I want all of that data, but I&rsquo;m not great at recording it in the moment, and often forget things by my end-of-day check-in. That&rsquo;s where apps like Exist.io have come in. Much like Slogger, they pull together all of the data sources that my Apple watch, iPhone, social media accounts, and even Last.fm and Spotify accounts create, automatically combining it to start drawing correlations. These are often humorous and obvious, but the more sources you add and the more data you record, the more interesting (and useful) things get. A while ago they added Apple Health data, so my circles, my steps, and even my sleep are all recorded. You can also add Gmail and see how many messages you send and receive each day, and Calendar data to see how busy your day was (at least with planned activities). All great data. What&rsquo;s been missing, though, is the ability to record very fine-grained personal data. I&rsquo;ve long planned an app that was essentially a database, with tiered levels where you could create nested checklists for common and uncommon things that happen in your life. Start a new medication? Check it off. Find yourself unusually uncoordinated? Check it off. Gathering that data easily and in a manner that&rsquo;s simpler to statistically analyze is something I haven&rsquo;t found a great solution for. Well, Exist just added Custom Tracking, which allows you to create tags for any possible event, food/drink, medication, or even feeling. I can track what medications I take, what kind of exercise I got, whether I have a headache, and whether I felt productive or lackluster (or any other feeling I want to add). And all of those tags eventually build correlations with each other and all of the other automatically-collected data in Exist. It&rsquo;s not exactly what I planned for this app in my head, particularly because I can&rsquo;t easily quantify each tag. I can add \"coffee,\" but if I want to mention more than one coffee, I have to&hellip;",
		"keywords": ["exist","quantified","tracking","android","apple","calendar","check","custom","exist","gathering","gmail","health","momento","slogger","spotify","tracking","ability","account","accounts","activities","activity","added","allows","although","analyze","aside","aspects","automatically","because","between","beyond","build","check","checked","checklists","circles","coffee","coffees","collected","combining","comments","common","correlating","correlations","couple","create","database","decreased","drawing","drink","easier","easily","eating","enough","essentially","events","eventually","excited","exercise","favorite","feeling","finally","forget","found","gathering","going","grained","great","happen","haven","headache","healthy","humorous","iphone","implementation","increased","interesting","intriguing","lackluster","levels","media","medication","medications","mention","messages","missing","music","nested","night","normally","obvious","often","overall","particularly","personal","physical","planned","possible","productive","quantified","quantify","rated","receive","record","recorded","recording","resulted","rsquo","simple","simpler","since","sleep","social","solution","sources","statistical","statistically","steps","stress","tiered","times","today","together","toward","track","trying","tweeted","uncommon","uncoordinated","unusually","useful","watch","where","while","working","wouldn","wrote"]
	},{
		"title": "Long-form writing with Marked 2, plus 2.5.11 teaser!",
		"url": "/2017/08/01/long-form-writing-with-marked-2-plus-2-dot-5-11-teaser/",
		"tags": ["marked"],
		"date": "Aug 1<span>st</span>, 2017",
		"ts": "1501605840",
		"summary": "The next update to Marked 2 (2.5.11) is almost ready. It&rsquo;s a free update, and should be ready in the next week (maybe two). If you&rsquo;re not already a user, you can grab a free trial, and if you choose to buy now (and support development of this and BitWriter), these new features will be handed to you automatically when testing is finished. As a tangential aside, things are a bit tight for me right now as I work on multiple unfinished (and thus far unpaid) projects. If you feel like offering a show of support for upcoming projects, feel free to donate or pledge continuing support with a subscription! Because I&rsquo;ve made a lot of low-level changes to improve efficiency in this release, I&rsquo;d be glad to have some beta testers. If you&rsquo;re interested, please contact me and I&rsquo;ll hook you up. In the meantime, here&rsquo;s a quick teaser of a few new features. IA Writer includes Marked has always done its best to normalize between various flavors of Markdown and special syntax. It has its own format for handling file transclusion, and supports mmdmerge, Leanpub, MultiMarkdown transclude syntax, and GitBook index files. The next version adds support for IA Writer file include syntax (), and handles detecting and properly formatting for the type of file included, such as text, image, csv&hellip; CSV tables! Admittedly I cribbed this feature from IA Writer as I worked to support their syntax. I love it, though. If an included file is a CSV (or TSV), Marked will automatically turn it into a table in the output. Obviously this isn&rsquo;t going to work with overly complex spreadsheets, but anything that should reasonably turn into a table does. Tufte! A new style called Ink that&rsquo;s replacing Antique. It&rsquo;s based on Edward Tufte&rsquo;s work (and Dave Liepmann&rsquo;s CSS), and looks pretty great. The original Antique will remain available in the MarkedCustomStyles repository. Fullscreen TOC When switching to Full Screen mode with a preview window, the table of contents becomes a left sidebar, fixed in place unless explicitly hidden with ⌘T. Fullscreen and popup modes can be toggled in both Full Screen and windowed previews. The documentation in the 2.5.11 has received a lot of love. Because Marked&rsquo;s feature set has grown to include a vast number of writing tools, I want to highlight a few existing features here. You can add external documents in an index file or include them anywhere in the text&hellip;",
		"keywords": ["marked","tutorial","writing","admittedly","antique","because","bitwriter","boundaries","document","drafts","editor","edward","entire","external","files","folders","fullscreen","gitbook","gitbookio","hovering","included","leanpub","liepmann","markdown","marked","markedcustomstyles","multi","multimarkdown","plnooprhobv","preferences","pressing","return","summary","screen","scrivener","special","statistics","support","syntax","teach","tease","textbundle","transclude","tufte","ulysses","while","writer","writing","advantage","almost","antiquevsink","anywhere","aside","associated","automatic","automatically","available","based","becomes","between","blogging","books","bottom","brettterpstra","built","called","change","changes","chapter","chart","choose","class","clicking","coded","collated","color","comes","complex","contact","contents","continuing","cribbed","default","detecting","development","directly","display","displayed","displaying","document","documents","donate","dragging","easier","easily","editing","editor","edwardtufte","efficiency","entire","examples","explicitly","extensive","external","feature","features","figcaption","figure","filedocumentpreviewfeatures","fileincludes","filename","files","finish","finished","fixed","flavors","fletcher","folder","format","formatting","gitbook","github","going","great","grown","handed","handled","handles","handling","height","hellip","hidden","highlight","highlighter","howdoisplitamultimarkdowndocumentintoseveralparts","https","image","improve","improving","includeboundaries","included","includes","including","index","indexes","interested","knows","language","ldquo","leanpub","level","lists","little","loading","looks","maintaining","manual","markdown","marked","markedicon","master","maybe","meantime","media","merge","metadata","modes","mouse","multi","multimarkdown","multiple","needed","nested","newer","normalize","noscript","offering","original","output","overly","pages","parent","picture","plaintext","playlist","pledge","popup","pressing","preview","previewed","previewing","previews","processing","projects","proofreading","properly","publication","publishing","quick","rdquo","ready","reasonably","received"]
	},{
		"title": "An easy fix for IPv6 router woes",
		"url": "/2017/07/28/an-easy-fix-for-ipv6-router-woes/",
		"tags": ["apple","network"],
		"date": "Jul 28<span>th</span>, 2017",
		"ts": "1501251360",
		"summary": "I have a pretty good home networking setup with my AirPort Extreme. The wireless is fast, AirPlay works everywhere, and I have secure access to my always-on Mac mini via dynamic IP, with media storage, local web development hosts, FTP access, homebridge, and more. Well, I did&hellip; My ISP, Spectrum (nee Charter) recently switched to assigning IPv6 addresses to all dynamic IP clients. This basically broke everything in my setup. After a few failures and some frustration (networking is not my strong point), I found the solution in a 2015 article by my friend from the TUAW days, Steve Sande. On an AirPort Extreme, you can just pop up AirPort utility (on your Mac or your iOS device) and edit your router settings. Go to the Internet tab, select the Internet Options button at the bottom, and uncheck \"Enable IPv6 Connection Sharing.\" Boom. Done. Everything is working again, from dynamic external IP to AirPlay on all devices. Hope that helps anyone else with the same issue",
		"keywords": ["airport","charter","extreme","spectrum","airplay","airport","charter","everything","extreme","internet","options","sande","sharing","spectrum","steve","access","addresses","again","anyone","article","assigning","bottom","broke","button","clients","development","device","devices","dynamic","everything","everywhere","external","failures","found","friend","frustration","hellip","helps","homebridge","hosts","local","media","networking","point","recently","router","secure","settings","setup","solution","storage","strong","switched","uncheck","utility","wireless","working","works"]
	},{
		"title": "Hyper Key Vim-style navigation with Karabiner Elements",
		"url": "/2017/07/26/hyper-key-vim-navigation-with-karabiner-elements/",
		"tags": ["hyper","keyboard"],
		"date": "Jul 26<span>th</span>, 2017",
		"ts": "1501074000",
		"summary": "Now that I have my Hyper key working with Karabiner Elements, there&rsquo;s one other feature I&rsquo;ve been missing from the old setup: I used to be able to hold the s and d simultaneously to turn h, j, k, and l into vim navigation keys (←, ↑, ↓, →). That kind of simultaneous keypress mapping isn&rsquo;t currently possible in the Sierra version of Karabiner, so I created a new solution. If you already have the Hyper key set up (turning Caps Lock into command-control-option-shift), this solution will let Hyper+h/j/k/l work as Vim navigation, and holding Caps Lock and Tab together will make them function as home, page up, page down, and end. I also added forward delete to Hyper+x, but mostly because I&rsquo;ve been using a Matias Laptop Pro keyboard and it doesn&rsquo;t have a convenient one built in. There&rsquo;s an example setup provided with Karabiner Elements for doing similar with the Spacebar. I found this untenable because it was too easy to get an accidental simultaneous keystroke when typing, and I started missing letters. The Hyper key is one that I don&rsquo;t press while typing quickly. The Tab key as modification that makes the ↖/↘/⇞/⇟ keys work can suffer the same issue, but it&rsquo;s less likely I&rsquo;ll have accidental simultaneous keystrokes. It&rsquo;s worked fine thus far with the default setting of 1000. As a bonus, Tab works as Fn any time it&rsquo;s held while hitting another key, so you can use it as a function key modifier with any combination. I use my function row as function keys, so I have to hold function to use things like the volume keys, and having that at my pinky is pretty handy. Clicking \"Import\" will add three rules to the Complex Modifications tab of Karabiner Elements. Click \"Add rule\" and then enable all of the rules under the \"Hyper key vim navigation\" section. You&rsquo;ll have to do it one at a time, clicking \"Add rule\" each time. They&rsquo;re separated so that if you don&rsquo;t need the ⇞/⇟ functionality, you can skip that as well as the \"Tab as fn\" rule. For a more manual approach, my current file is available in a gist. Following that link will show it with the Vim navigation settings highlighted. If you&rsquo;ve done any customization at all, be careful not to overwrite it when editing",
		"keywords": ["hyper","karabiner","click","clicking","complex","elements","fhyper","fkarabiner","fshare","hyper","import","karabiner","laptop","matias","modifications","sierra","spacebar","accidental","added","alone","another","approach","arrows","assets","assuming","available","basic","because","bonus","bookmarklet","brettterpstra","built","button","careful","class","clicking","cloudfront","color","combination","command","complex","control","convenient","created","customization","default","doesn","doing","editing","elements","example","examples","feature","found","function","functionality","github","handy","having","height","highlighted","highlighter","hitting","holding","https","hyper","image","import","important","installable","installed","instructions","karabiner","keyboard","keypress","keystroke","keystrokes","language","ldquo","letters","likely","loading","makes","manual","mapping","margin","master","media","milliseconds","missing","modifications","modifier","mostly","navigation","noscript","original","overwrite","picture","pinky","plaintext","possible","press","quickly","rdquo","rouge","rsquo","rules","section","separated","setting","settings","setup","shift","similar","simultaneous","simultaneously","solution","source","space","srcset","started","style","suffer","tekezo","timeout","title","together","ttscoff","turning","typing","under","untenable","uploads","using","version","volume","while","width","worked","working","works","zqkbu"]
	},{
		"title": "appinfo: get app details quickly in Terminal",
		"url": "/2017/07/25/appinfo-get-app-details-quickly-in-terminal/",
		"tags": ["scripting","terminal"],
		"date": "Jul 25<span>th</span>, 2017",
		"ts": "1500987600",
		"summary": "I wrote a (relatively) quick script to automate a somewhat repetitive task for me: checking for basic information about an application installed on my Mac. It will quickly tell you the basic details about your app, and can be pretty easily customized. Location: where the first instance of your app is found based on spotlight results Bundle ID: the bundle identifier for the application (e.g. ) Size: The size of the application bundle (in human readable format) Version: the version of the installed binary Released: the release date of the app (based on Created Date) Purchased: if the app came from the Mac App Store, it will tell you the date you purchased it Last Used: the last time the application was launched Category: the primary App Store category of the app (most apps these days provide this info even if they&rsquo;re not sold through the MAS) Copyright: the copyright line from the App Bundle Icon: if you use iTerm2 and have the utility installed, it will display a small version of the icon Grab the gist. Save it as in a location in your . Make it executable (). To run it, just type , where is a string to search for. All arguments are concatenated, so you can use spaces without quoting, e.g. . It&rsquo;s not an overly complex search, basically just \"kind:app args list\". The script uses the Spotlight CLI to locate the specified application. This just turned out to be faster than my older methods that would first check default application folders and then fall back to a spotlight search. It uses mdls to gather most of the info, but you can look at the function to see how to pull info straight from the apps Info.plist file. You can customize the fields returned by directly editing the config section at the top of the script. It&rsquo;s a hash where each entry contains the metadataquery key and the \"pretty\" name used for output display. You can also turn off the icon display by setting to false. It&rsquo;s handy to me. I&rsquo;m not sure it&rsquo;s of much use to most people, but I thought I&rsquo;d share. Grab the script from this gist",
		"keywords": ["mdless","spotlight","store","bundle","category","copyright","created","installation","location","purchased","released","spotlight","store","usage","version","arguments","automate","based","basic","binary","bundle","category","check","checking","complex","concatenated","config","contains","copyright","customize","customized","default","details","directly","display","easily","editing","entry","executable","false","faster","fields","first","folders","format","found","function","gather","handy","human","iterm","identifier","information","installed","instance","launched","location","metadataquery","methods","older","output","overly","people","plist","primary","purchased","quick","quickly","quoting","readable","relatively","release","repetitive","results","returned","rsquo","script","search","section","setting","share","small","somewhat","spaces","spotlight","straight","string","tells","thought","through","turned","utility","version","where","wrote"]
	},{
		"title": "Web Excursions for July 24, 2017",
		"url": "/2017/07/24/web-excursions-for-july-24-2017/",
		"tags": ["bookmarks"],
		"date": "Jul 24<span>th</span>, 2017",
		"ts": "1500917940",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Transmit 5 This update of Panic&rsquo;s FTP app, Transmit, adds new sync features (support for local-to-local and remote-to-remote), new speed improvements, but most interestingly, new cloud support for 10 services, including Backblaze B2, Box, Google Drive, DreamObjects, Dropbox, Microsoft Azure, and Rackspace Cloud Files. ohoachuck/wwdc-downloader: WWDC 2017 video downloader script A downloader script for grabbing all of the WWDC 2017 videos. Written in Swift with no external dependencies. Omni Group Automation As mentioned by Sal Soghoian on Systematic, Omni Automation represents a huge step forward for iOS scriptability. Currently implemented in all Omni apps, this could essentially add AppleScript-like automation power to iOS. Cracking the code behind Apple&rsquo;s App Store promo card design equinux figured out how to make scannable promo codes (like iTunes gift cards) for iTunes and Mac App Stores. I don&rsquo;t have an immediately useful application for this, but I see possibilities&hellip; Connected Earth A fun app for visualization of travel and communication connectedness around the globe. From the developers of Cosmic Watch. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["itunes","store","apple","applescript","automation","azure","backblaze","check","cloud","connected","cosmic","cracking","dreamobjects","drive","dropbox","earth","files","google","group","microsoft","panic","rackspace","soghoian","store","stores","swift","systematic","watch","written","affordably","automation","backs","behind","brought","cards","cloud","codes","communication","computer","connectedness","dependencies","design","developers","downloader","entire","equinux","essentially","everything","excursions","external","features","figured","globe","grabbing","hellip","itunes","implemented","improvements","including","interestingly","local","mentioned","ohoachuck","partnership","possibilities","promo","reliably","remote","represents","rsquo","scannable","script","scriptability","securely","services","speed","support","today","travel","useful","video","videos","visualization"]
	},{
		"title": "Macstock 2017 and a Spotlight tip",
		"url": "/2017/07/19/macstock-2017-and-a-spotlight-tip/",
		"tags": ["macstock","spotlight"],
		"date": "Jul 19<span>th</span>, 2017",
		"ts": "1500465600",
		"summary": "Macstock this year was a blast. I came home with a feeling very similar to what I used to get from Macworld. I got to connect with a lot of people I admire, and meet a lot of new people. Plus, I got to speak. It was the most fun I&rsquo;ve had presenting, and I look forward to speaking at Macstock again in the future. My talk was about using Spotlight and how to take it further. During the talk I mentioned that I&rsquo;d be posting a version that got a bit nerdier than the 20-minute talk could. That will be up soon (hopefully this week). In the meantime, here&rsquo;s a copy of the slides from the talk. I&rsquo;ve learned not to put too much info into slides, so without me talking it&rsquo;s less interesting. If I can find a video of the whole shebang, I&rsquo;ll link that. I will mention here, though, that I received a lot of feedback on one particular point that apparently a lot of people don&rsquo;t know: when building criteria (predicate editor) for a smart folder or search (in any app) holding down the Option key (⌥) turns the symbols into , and clicking that will create a nested group. The new group can be set to Any, All, or None (OR, AND, AND NOT booleans). When that&rsquo;s nested within another boolean group you can do pretty complex things. For example, say you nest an Any group inside an All group. The nested Any group only has to have one criteria match to evaluate to true, and then it will count as true for the All group. So you could have three nested Any groups inside an All, and if one criteria from each nested group is true, then the All condition passes. To summarize, the big tip here is holding down Option to create nested boolean groups in predicate editors. Side notes: you can drag and drop criteria between groups, and deleting the top level container item for a group moves the contents up the chain rather than removing them all. That can be a boon or an impediment, depending on your intentions. More to come! Oh, and some photos",
		"keywords": ["chicago","macstock","woodstock","cartwright","keynotedhtmlplayer","macstock","macworld","photo","spotlight","admire","again","albums","another","apparently","assets","between","blast","boolean","booleans","brettterpstra","building","chain","circlesixdesign","class","clicking","complex","connect","container","contents","count","courtesy","create","criteria","deleting","depending","editor","editors","example","feedback","feeling","figcaption","figure","flickr","folder","group","groups","height","highlighter","holding","hopefully","https","image","impediment","inside","intentions","interesting","language","learned","level","loading","macstock","macstockconferenceandexpo","match","meantime","media","mention","mentioned","minute","moves","nerdier","nested","noscript","notes","original","particular","passes","people","photos","picture","plaintext","player","point","posting","predicate","presenting","rather","received","removing","rouge","rsquo","search","share","shebang","similar","slides","smart","source","speak","speaking","spotlight","srcset","summarize","symbols","talking","title","turns","unleashing","uploads","using","version","video","whole","width","within"]
	},{
		"title": "Web Excursions for July 14, 2017 (Chrome Edition)",
		"url": "/2017/07/14/web-excursions-for-july-14-2017-chrome-edition/",
		"tags": ["bookmarks"],
		"date": "Jul 14<span>th</span>, 2017",
		"ts": "1500037200",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Let&rsquo;s start with one non-Chrome link&hellip; Can iPad replace my laptop? An in-depth look at the current state of the question \"Can iPad really replace my laptop?\" The rest of this week&rsquo;s web excursions are some of my current favorite (and most-used) Chrome extensions. I try a lot of them, so we&rsquo;ll start with an essential for anyone who has more extensions at any given time than are ever going to be necessary. Extensions Manager (aka Switcher) And when you get to the point where you just have too many extensions, use Extension manager to quickly enable and disable them, and create sets of extensions for bulk enable/disable as circumstance requires. Toby Still my favorite for managing sets of tabs with titles, labels, and easy drag and drop sorting. OneTab OneTab is the de facto solution for saving tab sets. Click the extension button and the whole window is saved to an organized list where you can drag between sets and remove tabs as needed. Tip: export OneTab lists as plain text for easy bulk editing and import the result back in to clean up long lists. Tab Manager This one scratches an itch for me. I use Toby and Pinboard to organize tabs, which is way easier if I can just save a whole window, but I hate having my sessions include irrelevant pages, and sorting them all is a pain. With Tab Manager, you can see all of your tabs as a list and manipulate them in myriad ways (close, move, re-order). See also OneTab&hellip; Copy All Urls A handy plugin (similar to my TabLinks extension for Safari) that copies all of your open tabs as a list of text links. Like TabLinks, it allows a template so you can, say, copy as a bullet list of Markdown URLs with page titles. Relevance - Smart Tab Organizer An interesting extension that uses an algorithm based on the times tabs are active to sort them by \"relevance.\" Tab Extract Allows you to extract tabs based on a title search to a new window from the url bar. It&rsquo;s handier than it might sound, especially for use with any of the tab-set-saving extensions. Octotree This one is indispensable for GitHub browsing. It gives you a full tree view on the left side of the page of the files in any repo. You can quickly navigate between files and explore repos where you wouldn&rsquo;t even know what to search for in the GitHub&hellip;",
		"keywords": ["allows","check","chrome","click","extension","extensions","extract","github","keyboard","manager","markdown","octotree","onetab","organizer","pinboard","relevance","safari","setapp","shortcuts","smart","switcher","tablinks","video","access","across","active","algorithm","allows","anyone","based","between","brought","browsing","bullet","button","circumstance","clean","close","copies","create","depth","disable","easier","editing","especially","essential","excursions","explore","export","extension","extensions","extract","extras","facto","favorite","files","gives","going","handier","handy","having","hellip","hundreds","import","indispensable","interesting","irrelevant","keyboard","labels","laptop","links","lists","manager","managers","managing","manipulate","monthly","myriad","navigate","navigation","necessary","needed","organize","organized","pages","partnership","pause","plugin","point","quick","quickly","relevance","remove","replace","repos","requires","rewind","rsquo","saved","saving","scratches","search","sessions","similar","solution","sorting","sound","subscription","switcher","template","times","title","titles","today","video","where","whole","window","wouldn"]
	},{
		"title": "Communicate smarter with TextExpander",
		"url": "/2017/07/12/communicate-smarter-with-textexpander/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Jul 12<span>th</span>, 2017",
		"ts": "1499885400",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Use TextExpander to eliminate boilerplate drudgery. Using TextExpander for text expansion does more than just speed up your typing. TextExpander is perfect for standardizing and improving the written replies you do every day. Gather, perfect, and share your knowledge. Recall your best words instantly, repeatedly. TextExpander can format dates, autocorrect misspellings, and search your collected knowledge with a few letters and a hotkey. Share with others, and make everyone more productive. Try TextExpander free for 30 days. TextExpander subscriptions include software for Mac, iPad, iPhone, and Windows. Get started quickly with our pre-made public groups! TextExpander How-To: Keep Your Team On-Message With TextExpander Snippets TextExpander How-To: Use Snippet Group Prefixes for Faster Text Snippets, Easier Team Sharing TextExpander Tip: Use the Web, Share Links Faster With Text Snippets and Shortcuts TextExpander Tip: Try Our iOS Keyboard and One-Tap Text Snippet Keys TextExpander Crossover: Collaborate better in Slack with text snippets Visit textexpander.com/brett to start your free trial",
		"keywords": ["smile","textexpander","brettterpstra","collaborate","crossover","easier","faster","gather","group","keyboard","links","message","prefixes","recall","share","sharing","shortcuts","slack","snippet","snippets","textexpander","thanks","using","visit","windows","autocorrect","boilerplate","brett","check","collected","dates","drudgery","eliminate","everyone","expansion","format","groups","hotkey","iphone","improving","instantly","knowledge","letters","links","misspellings","others","productive","public","quickly","repeatedly","replies","search","share","snippets","software","speed","sponsoring","standardizing","started","subscriptions","textexpander","trial","tricks","typing","words","written"]
	},{
		"title": "Multi-app wikis with the ExtraInfo Service",
		"url": "/2017/07/06/multi-app-wikis-with-the-extrainfo-service/",
		"tags": ["notes","productivity"],
		"date": "Jul 6<span>th</span>, 2017",
		"ts": "1499377260",
		"summary": "I apologize for the slow posting over the last couple of weeks. Between working on BitWriter, Marked 2, a couple of freelance projects, and entertaining a visiting family of 5, it&rsquo;s been a rough period for getting any \"extracurricular\" projects done. That being said, I did wrap up version 1.0 of a tool I&rsquo;ve been using on my own for a while. It&rsquo;s called the \"ExtraInfo Service,\" and is basically a reimagining of the ExtraInfo script for TaskPaper. I just wanted it to work everywhere&hellip; Now you can use a tag like \"@map(ExtraInfo Documentation)\" anywhere in your notes, and running the service on it will open up a mind map that&rsquo;s linked back to your current document. If it doesn&rsquo;t already exist, it creates it for you, complete with placeholder variables so it&rsquo;s ready to rock, and if it does exist it will just jump straight to editing it. It&rsquo;s configurable, and you can change the @keywords, add and remove apps and template types, and start building a multi-app wiki of information. A short screencast would make a lot more sense than this picture, but you know, time&hellip; What you see is an nvALT note that was created from a line in an OmniOutliner document (which it links back to). The nvALT note contains a link to an iThoughtsX mind map, and the main node of that map links back to the nvALT note. Ok, back to work",
		"keywords": ["extrainfo","taskpaper","between","bitwriter","extrainfo","marked","omnioutliner","service","taskpaper","anywhere","apologize","building","called","change","configurable","contains","couple","created","creates","details","document","doesn","downloads","editing","entertaining","everywhere","exist","extracurricular","family","freelance","getting","hellip","ithoughtsx","information","keywords","linked","links","multi","notes","nvalt","picture","placeholder","posting","project","projects","ready","reimagining","remove","rough","rsquo","running","screencast","script","sense","service","short","straight","template","types","using","variables","version","visiting","wanted","weeks","while","working"]
	},{
		"title": "Web Excursions for July 03, 2017",
		"url": "/2017/07/03/web-excursions-for-july-03-2017/",
		"tags": ["bookmarks"],
		"date": "Jul 3<span>rd</span>, 2017",
		"ts": "1499101920",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Made With ARKit A \"hand-picked curation of the coolest stuff made with ARKit.\" This one is one of my favorites. Early Macintosh Emulation Comes to the Archive Time to fire up Dark Castle. The Ultimate Collection of Google Font Pairings A beautifully laid-out collection of 50 font pairings from Google Fonts. YouTube Converter 2 from Softorino Softorino teased SYC2 a little while ago, and now it&rsquo;s officially released. Instantly download videos and music, create audio, video, or ringtone files, and quickly add it to libraries on your Mac or iOS device. It works with more than just YouTube, too, including Facebook, Vimeo, Vevo, Soundcloud, Bandcamp, and more. The Ringer - Stainless Steel Cast Iron Cleaner I got this tip from the Systematic episode with Dean Pribetic. It&rsquo;s basically high quality chainmail, designed for cleaning a cast iron pan without detergent. Wet, scrub, wipe dry. I bought it immediately and I can vouch that it&rsquo;s a brilliant solution. Best Headphones for Sleep I&rsquo;m still a dedicated user of SleepPhones, but Pzizz (my favorite \"background music\" sleep app) has published a review of a few other options, including some inexpensive solutions. Down Etc A few years ago I stayed at a (new at the time) hotel in San Francisco, and the pillows were so amazing I had to inquire at the front desk about where they were from. They emailed me an address for Down Etc., and I let it sit for a couple of years. Got one recently, and it&rsquo;s as awesome as I remember. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["arkit","fonts","google","sleep","youtube","arkit","archive","bandcamp","bonus","castle","check","cleaner","collection","comes","converter","emulation","facebook","fonts","francisco","google","headphones","instantly","macintosh","mindmeister","pairings","pribetic","pzizz","ringer","sleep","sleepphones","softorino","soundcloud","stainless","steel","stuff","systematic","ultimate","vimeo","youtube","address","amazing","audio","awesome","background","beautifully","boosting","bought","brainstorming","brilliant","brought","chainmail","cleaning","collaborating","collaborative","collection","coolest","couple","create","curation","dedicated","designed","detergent","device","download","emailed","episode","excursions","favorite","favorites","files","front","hotel","including","inexpensive","inquire","libraries","little","mapping","music","officially","options","pairings","partnership","picked","pillows","productivity","published","quality","quickly","recently","released","remember","ringtone","rsquo","scrub","sleep","software","solution","solutions","stayed","stuff","teased","video","videos","vouch","where","while","works","years"]
	},{
		"title": "The Trading Cryptocurrencies video course",
		"url": "/2017/06/29/the-trading-cryptocurrencies-video-course/",
		"tags": ["sponsor"],
		"date": "Jun 29<span>th</span>, 2017",
		"ts": "1498734000",
		"summary": "Thanks to Andreas Zeitler and the Trading Cryptocurrencies video course for sponsoring BrettTerpstra.com this week! Cryptocurrencies like Bitcoin, Ethereum, Liecoin, or Ripple, have seen an unprecedented gain in interest this year. Some websites claim 600% more users.1 And the total amount of money put into cryptocurrencies is now $114,000,000,000, up $37,500,000,000 since May 1st.2 Being frustrated myself with traditional investments, I turned to crypto. They say \"never set more than you&rsquo;re willing to lose,\" so I started small. Really, really small. $5 was what I didn&rsquo;t want to lose. These 5 bucks turned into over $500 in roughly three months. (If you don&rsquo;t believe me, check out my public portfolio.) This means that I doubled about every 20 days. I can&rsquo;t fake these numbers! In Trading Cryptocurrencies you get a four hour, in-depth video course on how to earn money trading Bitcoin. The tools you need to start, how you take care of your money, when to buy, and when to sell. I cannot guarantee anyone the same gains. No one can. But I&rsquo;m giving you the most important indicators so that you can do this by yourself. My goal with my video courses is to give people a head start. Trading Cryptocurrencies is divided into three main parts: Beginner, Advanced, and Pro. I carefully picked topics for each and every stage in the trading game, and answer the most important questions at the right time. This way you get a broad overview of the topic in general, and a deep dive on only those topics that I think are especially important. For everything else, I made sure to leave annotations in the video where necessary. This way you can decide which topic you want to pick up by yourself and investigate further. There&rsquo;s also an additional PDF containing a list of the most important books and videos recommended by my group of trusted traders, plus links for everything mentioned in the video. The video is easy to consume and is downloaded in one high-quality file. Technically, the course is a Full HD MP4 with chapter markers. With these you can easily skip to the chapters that excite you the most. Trading Cryptocurrencies is available for only $46.21. To make this sponsorship even better, I want to give every subscriber of this blog a little discount! You get 5% off on checkout with the code ! If you have any questions regarding the blockchain and cryptocurrency field, do not hesitate to get in touch with me! I&rsquo;m open&hellip;",
		"keywords": ["bitcoin","cryptocurrencies","advanced","andreas","beginner","bitcoin","brettterpstra","capitalization","charts","cryptocurrency","cryptocurrencies","ethereum","industry","liecoin","market","poloniex","ripple","technically","thanks","trading","zeitler","amount","andreas","annotations","answer","anyone","available","backlink","believe","blockchain","books","brett","brettterpstra","broad","bucks","cannot","carefully","chapter","chapters","charts","check","checkout","claim","class","coinmarketcap","cointracking","consume","containing","courses","crypto","cryptocurrencies","cryptocurrency","decide","depth","directly","discount","divided","doubled","downloaded","earned","easily","endnotes","especially","everything","excite","field","fnref","footnote","footnotes","frustrated","gains","general","gives","giving","group","growth","guarantee","happening","height","hesitate","highlighter","https","image","important","indicators","interest","investigate","investments","language","ldquo","leave","links","little","loading","markers","media","mentioned","money","myself","necessary","nofollow","noscript","noteref","numbers","original","overview","parts","people","picked","picture","plaintext","poloniex","portfolio","press","public","quality","questions","rdquo","recommended","related","releases","reversefootnote","right","rouge","roughly","rsquo","since","small","source","sponsoring","sponsorship","square","srcset","stage","started","subscriber","teaser","think","title","tools","topic","topics","touch","traders","trading","traditional","trusted","turned","typical","unprecedented","uploads","users","video","videos","websites","where","width","willing","zcasting","zettt"]
	},{
		"title": "World Clock Pro: a fancy international time zone converter",
		"url": "/2017/06/22/world-clock-pro-a-fancy-international-time-zone-converter/",
		"tags": ["sponsor"],
		"date": "Jun 22<span>nd</span>, 2017",
		"ts": "1498129200",
		"summary": "Thanks to World Clock Pro for sponsoring BrettTerpstra.com this week! World Clock Pro is a fancy international time zone converter for Mac, ideal for anyone who works and interacts with people from multiple countries on a frequent basis. It will become the perfect everyday companion for planning and scheduling webinars, meetings, group activities, and calls. If your work involves world time zones or you simply wish to effortlessly compare multiple time zones to reveal the most suitable time to ring your friends or family, this time zone converter is a smart choice. Learning and checking what time it is in any part of the world is fast and fun with this world clock app. Meticulously designed by a team of professional user experience designers at minimuminc.com. Multiple time zone clock Do you simultaneously work on several projects worldwide? Adjust group calls or corporate meetings easily. Add cities and timezones like GMT and UTC with a click. Enjoy a brand new experience in planning and scheduling! Time zone map + time offset visualization When it comes to arranging calls and meetings through a number of time zones, this world time zone clock makes a great solution. Select the related time zones and add them to Favorites, and visualize them on a map. Time clock converter for everyday use Convert times throughout the world in seconds, plan travel or check flight arrival times across time zones. Pick good meeting times for colleagues from different countries with a drag of a cursor, effortlessly finding the most preferable time for all of them. Live weather in every part of the globe See live weather and weather forecasts for the selected areas, not to mention every part of the world. Plan, organize and arrange any kind of outdoor activities, hassle free. MacBook Pro Touch Bar support The addition of Touch Bar support makes using this time zone calculator a more integrated and pleasant experience. Don’t settle for less, take full advantage of the latest Touch Bar functionality! Haptic feedback Feel gentle ‘clicks’ when scrolling time using a Touch Pad on newer Macs. Easy, convenient, and fun to use, World Clock Pro is a must have for any avid project manager, or any person often calling partners, relatives and friends abroad",
		"keywords": ["clock","converter","world","adjust","analog","brettterpstra","clock","convert","enjoy","favorites","haptic","learning","macbook","meticulously","multiple","sponsored","syndicate","thanks","touch","vsayd","world","abroad","across","activities","advantage","anyone","areas","arrange","arranging","arrival","basis","blockquote","brand","brettterpstra","calculator","calling","calls","check","checking","choice","cities","class","click","clicks","clock","colleagues","comes","companion","compare","convenient","converter","corporate","countries","cursor","designed","designers","different","easily","effortlessly","everyday","experience","family","fancy","features","feedback","finding","flight","forecasts","frequent","friends","functionality","gentle","globe","great","group","hassle","height","https","ideal","image","integrated","interacts","international","involves","latest","loading","makes","manager","media","meeting","meetings","mention","minimuminc","multiple","newer","nofollow","noscript","offset","often","organize","original","outdoor","partners","people","person","picture","planning","pleasant","preferable","professional","project","projects","related","relatives","reveal","scheduling","scrolling","seconds","selected","several","simple","simply","simultaneously","smart","solution","source","sponsoring","srcset","strong","suitable","support","tksibe","through","throughout","times","timezones","title","travel","uploads","using","visualization","visualize","weather","webinars","width","works","world","worldwide","zones"]
	},{
		"title": "The best cheap stuff in my kitchen",
		"url": "/2017/06/20/the-best-cheap-stuff-in-my-kitchen/",
		"tags": ["cooking"],
		"date": "Jun 20<span>th</span>, 2017",
		"ts": "1497991260",
		"summary": "Through the course of learning to cook there have been a lot of purchases necessary. Well, maybe not necessary, but having the right tools has made everything else so much easier. There are things I don&rsquo;t like (or have learned not) to skimp on: Good sauce pans and skillets, good cast iron cookware, a few awesome knives, a decent food processor, blender, and mixer. You know, the kind of things where you regret not spending enough the first time around because they only make life harder if they suck. On the flip side, there are dozens of inexpensive tools around my kitchen that I&rsquo;ve picked up either out of need or curiosity, and am repeatedly amazed at both how durable they are for the price and how much they&rsquo;ve helped make my kitchen life better. I took a look around my kitchen after cooking and noted the top things that I got for $20 or less that I use almost every time I cook. I thought it might be worth compiling a list. Ozeri digital scale ($12.73) You can spend a lot on a digital scale. Simply an accurate scale that can hold a variety of containers on it suits my needs. This little one has a digital readout and touch buttons. Like any similar implement, it tares when you turn it on, and you can choose whatever measurement units you need. Turns itself off after a timeout period, and stores easily in my rack with my cutting boards. Jenaluca herb scissors ($13.97) This is one of those things I never thought about needing and tried on a whim. It&rsquo;s a 5-bladed pair of scissors (a 5-pair?) that lets you quickly chop up fresh herbs like chives, cilantro, basil, etc. without using a cutting board. There are plenty of times I&rsquo;m happier wadding up a bunch of leaves and chopping with a chefs blade, but these have come in handy many times. The Jenaluca is the one I&rsquo;ve used, but the Utopia Kitchen version is half the price on Amazon and looks to be just as good. Prep Solutions by Progressive medium hand grater ($10.42) I am not a fan of box graters. Hard to clean, annoying to use. But I also rarely need to grate entire blocks of cheese, so I&rsquo;ve never invested in a big rotary grater. After falling in love with the microplane (zester), I got a medium and large hand grater. I do not regret this. Manual Coffee Bean Grinder By Homiry ($16.99) I don&rsquo;t use this for coffee. It would probably be great for it, but for me it&rsquo;s a great spice mill. A large-radius crank, friction based assembly (not a lot&hellip;",
		"keywords": ["kitchen","tools","utilities","abundant","almost","amazon","angle","bamboo","bench","beyond","block","carbide","ceramic","clean","coffee","depot","dirty","drawer","first","glass","grinder","handheld","holder","homiry","jenaluca","kitchen","knife","labels","lansky","mandoline","manual","measuring","multi","narrow","network","organizer","ozeri","pantry","peeler","piece","premium","prepworks","progressive","pyrex","quadsharp","rdwht","rubbermaid","second","seriously","sharpener","simply","slicer","solutions","space","spice","spicestor","spoons","stainless","steel","storage","store","target","through","tidying","totally","turns","utilities","utopia","washing","white","zester","accurate","across","adding","adhesive","ahead","almost","amazed","amazingly","angles","annoying","anyway","array","assembly","assuming","auxiliary","available","awesome","bacterial","based","basil","became","because","becoming","before","behind","bench","between","blade","bladed","blades","blender","block","blocks","board","boards","bottom","bought","bowls","brand","break","bucks","bunch","buttons","cabinet","caramelizing","ceramic","chamber","changed","cheaper","check","cheese","chefs","chives","choose","chopped","chopping","cilantro","clean","cleaning","cleanliness","clips","coffee","collapse","collapsed","collapsible","collection","collide","combination","comes","comfortable","competitors","compiling","configure","consistent","constructed","contained","containers","contents","cooking","cookware","coriander","couldn","covered","crank","cumin","cupboard","curiosity","cutter","cutting","decent","defeat","depending","designed","different","digital","dimensions","dirty","dishwasher","double","dough","dozens","drawer","dried","durable","easier","easily","either","enough","entire","everything","everywhere","excellent","execution","expensive","falling","fancy","faster","favorite","filing","finely","fingers","finish","first","flexible","forgotten","found","frees","fresh","friction","fridge","front","fronts"]
	},{
		"title": "A Hyper Key with Karabiner Elements, full instructions",
		"url": "/2017/06/15/a-hyper-key-with-karabiner-elements-full-instructions/",
		"tags": ["keybindings","keyboard","macos"],
		"date": "Jun 15<span>th</span>, 2017",
		"ts": "1497558480",
		"summary": "Yesterday I posted excitedly about full Hyper key functionality being available in macOS 10.12+. I included a snippet of a config file that has apparently led to some confusion, so I&rsquo;m elaborating here on the full configuration. As of 2024, there&rsquo;s a new option that you might find useful for this purpose (and more) called SuperKey. Check it out if this route seems like a hassle, or if you just want to see more cool apps for your Mac. The first thing you need is Karabiner Elements, and you need what is currently the bleeding edge version, 0.91.3. If you don&rsquo;t already have Karabiner Elements installed, grab the latest version at pqrs.org/latest/karabiner-elements-latest.dmg. Open Karabiner Elements and go to the Misc tab, you can check your version and update if needed by clicking the \"Check for beta updates\" button. Once it&rsquo;s running, there&rsquo;s a configuration file at that you can edit. The options required for this are not available yet in the GUI, so they have to be added into this hidden config file. The file is JSON, and breaking the formatting will cause Karabiner failure, so be sure to do any editing with care. Below is a complete version of my config file. It has no significant changes from the default other than the Hyper Key functionality. If you don&rsquo;t have any other settings in Karabiner (e.g. Simple Modifications beyond one that, say, maps caps lock to something for Hammerspoon&hellip;), you can overwrite the contents of the karabiner.json with the code below. If you do have other settings, you&rsquo;ll need to follow different directions, so skip to the next part. To edit just the Hyper key chunk into an existing config, you&rsquo;ll add the chunk below into the \"profiles\" array in the first element: Here&rsquo;s the chunk that you&rsquo;ll paste in. Be sure to keep the trailing comma after the last curly bracket. Karabiner Elements should immediately detect the change and your Hyper Key should start working. You can test by going into any app that lets you assign keyboard shortcuts, such as BetterTouchTool, and adding or editing one. Holding down Caps Lock and hitting a key should give you the result ⌘⇧⌥⌃X. Hitting Caps Lock once should give you ⎋ (Escape). Note that you should be able to modify the Escape part of the key to maintain Caps Lock functionality by changing to \"towhenalone\" value in the JSON to \"caps_lock\". Then hitting Caps Lock with no other key should still allow it to&hellip;",
		"keywords": ["bluetooth","hyper","karabiner","keyboard","macbook","magic","action","below","bettertouchtool","bluetooth","change","check","default","elements","escape","hammerspoon","hitting","holding","hopefully","hyper","karabiner","keyboard","modifications","modifier","preferences","simple","superkey","system","yesterday","aaccf","added","adding","allow","alone","apparently","array","assign","available","basic","below","beyond","bleeding","blockquote","boastr","bracket","breaking","brettterpstra","brightness","built","button","called","cause","change","changes","changing","check","chunk","class","clearer","clicking","comma","command","complex","config","configuration","confusion","consumer","contents","control","curly","default","description","detect","device","devices","different","directions","disable","disabled","dropdown","edeeb","editing","elaborating","element","elements","escape","excitedly","exists","external","false","figcaption","figure","first","formatting","function","functionality","github","githubusercontent","global","going","hassle","height","hellip","hidden","highlight","highlighter","hitting","https","hyper","identifiers","ignore","illumination","image","included","installed","internal","issues","karabiner","keyboard","keyboards","language","laptop","latest","launchpad","ldquo","loading","macos","maintain","manipulators","mappings","media","milliseconds","mission","modifications","modifiers","modify","multiple","needed","normal","noscript","optional","options","original","overwrite","paste","picture","plaintext","pointing","posted","product","profile","profiles","rdquo","required","rouge","route","rsquo","rules","running","screen","seems","selected","settings","shift","shortcuts","sierra","significant","simple","snippet","source","srcset","standalone","startup","superkey","tekezo","title","trailing","trapping","ttscoff","updates","uploads","useful","value","vendor","version","virtual","volume","where","width","working"]
	},{
		"title": "MeisterTask: supercharged team productivity",
		"url": "/2017/06/15/meistertask-supercharged-team-productivity/",
		"tags": ["sponsor"],
		"date": "Jun 15<span>th</span>, 2017",
		"ts": "1497524400",
		"summary": "Thanks to MeisterTask for sponsoring BrettTerpstra.com this week! MeisterTask combines simple, intuitive task management with powerful integrations and task automations. Best of all, the tool is real eye-candy, which makes working with it actually enjoyable. First launched in 2015, the tool has already grown a cult following among developers, designers and other creatives, and is quickly turning into one of the main competitors of established tools such as Trello, Asana and Wunderlist. MeisterTask is a web-based app and offers native apps for Windows, Android, Mac, and iOS. The sleek, gorgeous design of its iPhone and iPad apps has earned it multiple features in the App Store, where it was also named one of the Best Apps of 2015. Using MeisterTask, teams organize and manage tasks in a customizable environment that perfectly adapts to their needs. Project boards can be set up and modified to support software sprints, Kanban boards, funnels and many other agile workflows, making them suitable for any department and industry. A personalized dashboard provides each team member with an overview of their open tasks, tracked time, and notifications from other team members, bringing them up-to-date within seconds. Using \"Section Actions,\" managers can easily automate recurring steps in their team&rsquo;s workflow, ensuring team members work more consistently and get more done together. Among other things, Section Actions can be used to automatically move tasks to other projects, assign them to the right team member, or notify individual stakeholders about new tasks. MeisterTask comes readily integrated with the apps and platforms teams already use and love, such as Slack, Zendesk, GitHub, Harvest, and more than 500 other tools. MeisterTask offers a free plan with unlimited tasks, projects and collaborators, and includes up to 2 integrations. MeisterTask Pro is available for $7.50 per user/month (if paid annually) and offers unlimited integrations and Section Actions, as well as customization options, project folders, and access to the statistics and reports area, which provides managers with insight into their team&rsquo;s productivity and tracked time. Sign up today and supercharge your team&rsquo;s productivity",
		"keywords": ["meisterlabs","meistertask","productivity","trello","wunderlist","actions","among","android","asana","brettterpstra","first","github","harvest","kanban","meistertask","project","section","slack","store","thanks","trello","using","windows","wunderlist","zendesk","access","adapts","agile","among","annually","assign","automate","automatically","automations","available","based","boards","bringing","candy","collaborators","combines","comes","competitors","consistently","creatives","customizable","customization","dashboard","department","design","designers","developers","earned","easily","enjoyable","ensuring","environment","established","features","folders","funnels","gorgeous","grown","iphone","includes","individual","industry","insight","integrated","integrations","intuitive","launched","makes","making","management","managers","member","members","modified","multiple","named","native","needs","notifications","offers","options","organize","overview","perfectly","personalized","platforms","powerful","productivity","project","projects","provides","quickly","readily","recurring","reports","right","rsquo","seconds","simple","sleek","software","sponsoring","sprints","stakeholders","statistics","steps","suitable","supercharge","support","tasks","teams","today","together","tools","tracked","turning","unlimited","where","within","workflow","workflows","working"]
	},{
		"title": "Full Hyper Key functionality restored in Sierra",
		"url": "/2017/06/14/full-hyper-key-functionality-restored-in-sierra/",
		"tags": ["hyper","keyboard"],
		"date": "Jun 14<span>th</span>, 2017",
		"ts": "1497458760",
		"summary": "If you saw my note in yesterday&rsquo;s web excursions about Karabiner Elements adding the necessary tools to recreate the Hyper Key, you might have gotten excited. If you&rsquo;re like me, though, a major component of that trick was that if you hit the caps-lock key and nothing else, it functioned as the Escape key, and that part wasn&rsquo;t working. Go into Karabiner elements and hit \"Check for beta upgrades,\" and you&rsquo;ll find an updated version (0.91.3 or higher), which adds a \"toifalone\" key to a manipulator config block. See the code below to enable the good old Hyper key with full Escape functionality. Running 0.91.3 or higher, remove any existing reassignment of the Caps Lock key, then open up the configuration file at in an editor. Add the block below, probably right below \"simplemodifications\" to make sure the nesting is correct. (If you already have a complexmodifications block, you&rsquo;ll want to insert just the appropriate portion within that, not create a second block.)",
		"keywords": ["karabiner","keybinding","sierra","check","elements","enjoy","escape","hyper","karabiner","running","adding","alone","below","block","complex","config","configuration","create","editor","elements","excited","excursions","functionality","functioned","gotten","higher","major","manipulator","modifications","necessary","nesting","nothing","portion","reassignment","recreate","remove","right","rsquo","second","simple","tools","trick","updated","upgrades","version","within","working","yesterday"]
	},{
		"title": "Web Excursions for June 13, 2017",
		"url": "/2017/06/13/web-excursions-for-june-13-2017/",
		"tags": ["bookmarks"],
		"date": "Jun 13<span>th</span>, 2017",
		"ts": "1497388140",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Hyper Key in macOS Sierra with Karabiner Elements Top story: Karabiner Elements can once again provide the Hyper key we all loved before Sierra. Tunefind If you like TV, and you like music, this is awesome. It&rsquo;s a site with an index of music and songs appearing in every episode of popular shows (and movies). You can find what song was playing in the end credits without having to rewind and Shazam it, or search by artist to see where they&rsquo;ve been featured in the world of television and film. What we learned evolving an App through 20 Alphas and 10 Betas Daniel Alm writes about the development of Timing 2, tracking progress over 13 months. A well-documented look at the process of UI and functionality changes from start to finish. Songstack - discover new music I found 10 new bands this week. This may be my favorite music discovery service/Spotify integration yet. There&rsquo;s also a web version. Declawing: A new study shows we can&rsquo;t look the other way This isn&rsquo;t my normal kind of link, but the AVMA has hesitated to oppose the practice of declawing domestic cats and I think people (especially Americans) are at a particular disadvantage when it comes to being provided information on and understanding the effects of the procedure. This post is enlightening, even for me, and I&rsquo;ve always opposed declawing cats&hellip",
		"keywords": ["declawing","discovery","hyper","karabiner","music","alphas","americans","betas","cleanmymac","daniel","declawing","elements","hyper","karabiner","shazam","sierra","songstack","spotify","timing","tunefind","again","appearing","artist","awesome","bands","before","brought","changes","comes","credits","declawing","development","disadvantage","discover","discovery","documented","domestic","effects","enlightening","episode","especially","evolving","excursions","favorite","featured","finish","found","functionality","having","hellip","hesitated","index","information","integration","learned","loved","macos","movies","music","normal","oppose","opposed","particular","partnership","people","playing","popular","practice","procedure","process","rewind","rsquo","search","service","shows","songs","speed","story","study","television","think","through","tools","tracking","understanding","version","where","world","writes"]
	},{
		"title": "Trading Cryptocurrencies giveaway winners",
		"url": "/2017/06/09/trading-cryptocurrencies-giveaway-winners/",
		"tags": ["giveaway","video"],
		"date": "Jun 9<span>th</span>, 2017",
		"ts": "1497030600",
		"summary": "If you missed out, go pick up a copy &mdash; you can still use the coupon to get a discount. Learn from course creator Andreas Zeitler how to start mining and profiting from cryptocurrencies like Bitcoin",
		"keywords": ["bitcoin","blockchain","coinbase","cryptocurrency","currency","digital","andreas","bitcoin","congrats","craig","cryptocurrencies","gross","learn","lindsay","trading","zeitler","coupon","creator","cryptocurrencies","discount","giveaway","mdash","mining","missed","profiting","winners"]
	},{
		"title": "PDFpen 9: the ultimate tool for going paperless",
		"url": "/2017/06/08/pdfpen-9-the-ultimate-tool-for-going-paperless/",
		"tags": ["sponsor"],
		"date": "Jun 8<span>th</span>, 2017",
		"ts": "1496919600",
		"summary": "Thanks to PDFpen 9 for sponsoring BrettTerpstra.com this week! An enhanced Sidebar annotations view More export options A hand tool to pan and zoom Linking to other local PDF files Find and Highlight to bring attention to all appearances of a term Line numbering, which is great for legal documents &hellip; and even support for forms including calculations PDFpenPro 9 enhances Table of Contents editing, and adds OCR for Chinese, Japanese, and Korean",
		"keywords": ["document","format","pdfpen","portable","smile","software","brettterpstra","chinese","contents","highlight","japanese","korean","learn","linking","pdfpen","pdfpenpro","sidebar","table","thanks","annotations","appearances","brett","bring","calculations","documents","editing","enhanced","enhancements","enhances","export","files","forms","going","great","hellip","improve","including","legal","local","numbering","options","packs","paperless","smilesoftware","sponsoring","support","ultimate","workflow"]
	},{
		"title": "Trading Cryptocurrencies Video Course (+giveaway)",
		"url": "/2017/06/06/trading-cryptocurrencies-video-course-plus-giveaway/",
		"tags": ["bitcoin","giveaway","tutorial","video"],
		"date": "Jun 6<span>th</span>, 2017",
		"ts": "1496774520",
		"summary": "If you&rsquo;ve ever been curious about Bitcoin and other cryptocurrencies &mdash;and perhaps wondering how to make some money with them &mdash; my friend Andreas Zeitler from zCasting 3000 has a new video course documenting what he learned getting into Bitcoin and turning a profit. Andreas has brought us some great lessons at Mac OS X Screencasts including useful tutorials on Hazel and Scrivener, and is a host of Der Übercast as well as a guest writer here. He&rsquo;s a very smart guy. Last year he was looking for investment opportunities but became frustrated with typical investments. His interest in Bitcoin was sparked after the OPEN 2016 conference in Stuttgart. Starting from scratch with a low buy-in, he&rsquo;s already made 100x his initial investment. This 4-hour course details everything he learned over a year of trading Bitcoin. It moves from beginner to advanced (because he&rsquo;s a veteran producer of educational materials) and covers everything you&rsquo;d need to get started for yourself, as well as a PDF with annotations and links to deep-dive information. The course is available for $50. Andreas has provided me three copies to give away, which you can enter for below. Winners for that will be drawn on Friday, June 9th at 12pm CST. If you don&rsquo;t want to wait, you can use the coupon code to get a discount on a copy right now (good until July 9th). Sorry, this giveaway has ended",
		"keywords": ["bitcoin","blockchain","coinbase","cryptocurrency","currency","digital","andreas","bitcoin","blockchain","cryptocurrencies","facebook","friday","hazel","screencasts","scrivener","sorry","starting","stuttgart","winners","zeitler","advanced","andreas","annotations","audiobooks","available","became","because","beginner","below","bercast","brett","brettterpstra","brought","built","check","class","conference","copies","coupon","covers","cryptocurrencies","curious","derubercast","details","discount","documenting","educational","ended","enter","everything","facebook","friend","frustrated","getting","giveaway","great","group","groups","guest","hazel","headshot","height","highlighter","https","image","including","information","initial","interest","investment","investments","language","learned","lessons","links","loading","looking","macosxscreencasts","materials","mdash","media","money","moves","noscript","opportunities","original","perhaps","personal","picture","plaintext","podcast","producer","profit","right","rouge","rsquo","scratch","scrivener","smart","sorry","source","sparked","srcset","started","success","title","trading","tradingcrypto","turning","tutorial","tutorials","typical","uploads","useful","veteran","video","width","wondering","writer","zcasting","zcasting"]
	},{
		"title": "Web Excursions for June 5, 2017",
		"url": "/2017/06/05/web-excursions-for-june-5-2017/",
		"tags": ["bookmarks"],
		"date": "Jun 5<span>th</span>, 2017",
		"ts": "1496667600",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Mavo: A new, approachable way to create Web applications This is cool. Lea Verou heads up a team to present Mavo, an extension to the syntax of HTML that allows developers to describe Web applications that manage, store, and transform data without any backend programming. Board For GitHub A native app overview for GitHub projects. Makers - IFTTT platform - IFTTT Platform If you love IFTTT but have always wished for more advanced control over your applets, check out the Makers platform. Screens 4 Screens has long been one of the best VNC clients for Mac. The newest version adds a few features that were notably missing versus Apple&rsquo;s default screen sharing app, including drag-and-drop file transfer support. It also got a speed boost, resulting in reduced screen lag and ultra-sharp image. If you have Setapp, you already have it! HYPER Glass iPhone screen protector This is fascinating. A couple of touch areas on the lower left and right allow you to tap areas in the upper left and right of a plus-size iPhone screen. I haven&rsquo;t tried it, and I&rsquo;ve gotten quite used to the fact that my phone is not going to be a one-handed device anymore, but I&rsquo;m very curious. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["developer","github","apple","board","check","github","glass","hyper","ifttt","makers","mindmeister","platform","screens","setapp","verou","advanced","allow","allows","anymore","applets","applications","approachable","areas","backend","boost","boosting","brainstorming","brought","check","clients","collaborating","collaborative","control","couple","create","curious","default","describe","developers","device","excursions","extension","fascinating","features","going","gotten","handed","haven","heads","iphone","image","including","lower","mapping","missing","native","newest","notably","overview","partnership","phone","platform","productivity","programming","projects","protector","reduced","resulting","right","rsquo","screen","sharing","sharp","software","speed","store","support","syntax","touch","transform","tried","ultra","upper","version","versus","wished"]
	},{
		"title": "Minimalist text expansions, a TextExpander experiment",
		"url": "/2017/05/31/minimalist-text-expansions-a-textexpander-experiment/",
		"tags": ["experiments","snippet","textexpander","writing"],
		"date": "May 31<span>st</span>, 2017",
		"ts": "1496263440",
		"summary": "So I&rsquo;ve been conducting an experiment: using TextExpander for what it was originally designed for. I&rsquo;ve slowly been building a set of shortcuts for common and already short words that I type frequently. Actually getting around to trying this was inspired by TextExpander&rsquo;s recent addition of alerts when you type something enough times that it decides you might as well make a snippet for it. Yes, I know, this was the whole point of text expansion. I never gave it much of a try, though, because I immediately jumped into expanding large chunks of repetitive text, or doing complex tricks with dates and times (I even have one that generates a Marked 2 license via the Paddle API and writes out an email when a customer requests a cross-grade). And TextExpander&rsquo;s evolution as a product has encouraged my pursuit of complex snippets with additional scripting languages and features. Thus, saving time on typing single words never seemed that useful. I started thinking about it more after a conversation with a Systematic guest. It wasn&rsquo;t in the show, but he was talking about using Vim for writing, and the shortcuts he had programmed in it. It got me thinking that I could at least give it a shot and see. Thus far I still feel like I&rsquo;m in the adoption phase, but I&rsquo;m definitely seeing some benefits. Words like \"definitely\" and \"necessarily\" do slow my typing down as I leave the thought briefly and spell the word out in my head as I hit the keys. Configuring abbreviations I&rsquo;ll remember has been interesting. I&rsquo;m very used to remembering the shortcuts for my more complex tools, but having a flurry of abbreviations while doing normal typing is taking some getting used to. Fortunately, TextExpander now has the ability to automatically remind me about a shortcut when I type one of the words I&rsquo;ve shortened. I&rsquo;m not ready to publish a group of these yet. More than anything, I&rsquo;m just putting the idea out there and looking for ideas a feedback on it. Here are a couple of notes. I&rsquo;ve changed my expansion preferences across the board to expand abbreviations after I type a space or hit tab. This only took a little getting used to (after years of using instant expansion). It was a necessary change as the whole point of this experiment precludes the use of prefixes. I try to create abbreviations that aren&rsquo;t real words but are as short as possible. I basically just type the word way too fast&hellip;",
		"keywords": ["productivity","smile","writing","adapting","almost","applications","brettterpstra","configuring","editor","except","expand","fortunately","marked","paddle","script","systematic","textexpander","words","xcode","abbreviation","abbreviations","ability","across","adapt","adoption","alerts","allows","another","automatically","available","avoid","avoids","because","benefits","board","brain","brett","brettterpstra","briefly","building","change","changed","chunks","class","comments","common","complex","computer","conducting","conflicts","conversation","couldn","couple","create","creating","criticizing","cross","customer","dates","decides","definitely","designed","determining","disclosure","doing","downside","email","embarrassment","encouraged","enough","evolution","examples","exception","expand","expanding","expansion","experience","experiment","explain","features","feedback","flurry","forgetting","generates","getting","going","grade","great","group","guest","haven","having","height","helps","highlighter","https","iterm","ideas","image","inspired","instant","interesting","jumped","language","languages","ldquo","leave","letters","license","little","loading","looking","machine","making","media","money","names","necessarily","necessary","normal","noscript","notes","nothing","numbers","original","originally","phase","picks","picture","plaintext","point","possible","posts","precede","precludes","preferences","prefixes","primary","problem","product","programmed","projects","prose","publish","pursuit","putting","rarely","rdquo","ready","recent","regular","remember","remembering","remind","reminder","repetitive","requests","rouge","rsquo","saving","scripting","seeing","seemed","sentence","short","shortcut","shortcuts","shortened","shortening","significant","single","slowly","snippet","snippets","source","space","spell","sponsor","sponsored","sponsors","srcset","started","strong","suggestion","taken","taking","talking","technique","textexpander","thinking","thought","thoughts","times","title","tools","tricks","trying","typefast","typing","unnecessary","updated","uploads","useful"]
	},{
		"title": "Web Excursions for May 30, 2017",
		"url": "/2017/05/30/web-excursions-for-may-30-2017/",
		"tags": ["bookmarks"],
		"date": "May 30<span>th</span>, 2017",
		"ts": "1496161380",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Google Slides Ok, maybe everyone knew creating slide-based presentations was part of the Gdocs suite already, but if I saw it before I&rsquo;d never bothered to explore it. I&rsquo;m impressed, this is a great alternative to PowerPoint, especially if you&rsquo;re collaborating cross-platform. SpaceLauncher - App Launcher and Switcher for Mac Similar to hyper-key hacks, this app lets you launch or switch to an app by pressing any configured key while holding down spacebar. Via Maarten den Braber via Paul Vantees. CPU Utilization is Wrong You know those CPU meters with often-confusing percentages that we all like to put on our desktop and Today widgets? Here&rsquo;s what it really means, and also why it&rsquo;s not the measure you think it is, especially as a developer. Idnan/bash-guide: A guide to learn bash Simply a \"guide to learn bash.\" If you want to get into more command line work and bash scripting, this is an excellent compendium of the basics. Also see Peter Stephenson&rsquo;s \"A User&rsquo;s Guide to the Z-Shell.\" The 100% Correct Coding Style Guide I thoroughly enjoyed this piece. If you&rsquo;ve ever argued about spaces vs tabs, well, \"It took me years to find the right answers but I&rsquo;ve finally done it and it turns out the answer is&hellip;\" Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["central","coding","command","google","interface","microsoft","powerpoint","processing","style","backblaze","braber","check","coding","gdocs","google","guide","idnan","launcher","maarten","peter","powerpoint","shell","similar","simply","slides","spacelauncher","stephenson","style","switcher","today","utilization","vantees","wrong","affordably","answer","answers","argued","backs","based","basics","before","bothered","brought","cloud","collaborating","command","compendium","computer","configured","confusing","creating","cross","desktop","developer","enjoyed","entire","especially","everyone","everything","excellent","excursions","explore","finally","great","guide","hacks","hellip","holding","hyper","impressed","launch","learn","maybe","measure","meters","often","partnership","percentages","piece","platform","presentations","pressing","reliably","right","rsquo","scripting","securely","slide","spacebar","spaces","suite","switch","think","thoroughly","today","turns","while","widgets","years"]
	},{
		"title": "Email signatures matter. Make yourself one with MailButler today.",
		"url": "/2017/05/25/email-signatures-matter-make-yourself-one-with-mailbutler-today/",
		"tags": ["sponsor"],
		"date": "May 25<span>th</span>, 2017",
		"ts": "1495717200",
		"summary": "Thanks to MailButler for sponsoring BrettTerpstra.com this week! Your email signature plays a significant role in your correspondence. It affects the tone of every email you write. You still don’t have a signature, and don’t know where to start? Meet MailButler - professional email signature software & templates for Apple Mail. With MailButler you can create email signatures by selecting between various templates. You can configure photo images, text and colors to define the signature’s individual style. Emails that you send to your colleagues or business partners that end not just with your name, but with a proper signature, which includes extra information, look much more professional and trustworthy. This is a simple and reliable way to create a good business image of your company and yourself. Having a well-designed email signature makes the difference between a good corporate identity and a superb corporate identity. Additionally, signatures created with MailButler are responsive and can be viewed easily on mobile devices. By the way, with MailButler you get a lot more than just better email signatures. Other ways MailButler improves Apple Mail include scheduling, tracking, snoozing email, task tools, inbox pausing and more. If you use Apple Mail, you owe it to yourself to give MailButler a try",
		"keywords": ["apple","email","mailbutler","signature","additionally","apple","brettterpstra","check","emails","having","mailbutler","signatures","thanks","affects","beautiful","between","brettterpstra","business","class","colleagues","colors","company","configure","corporate","correspondence","create","created","creative","define","designed","devices","difference","easily","email","extra","family","friends","height","https","identity","image","images","improves","inbox","includes","individual","information","loading","looking","makes","media","mobile","nofollow","noscript","original","partners","pausing","photo","picture","plays","professional","proper","reliable","responsive","scheduling","secret","selecting","signature","signatures","significant","simple","snoozing","software","source","sponsoring","srcset","style","superb","superpowers","templates","title","tools","tracking","trustworthy","unleash","uploads","various","viewed","where","width","write"]
	},{
		"title": "DevMate and Paddle are merging, and it's great news for devs",
		"url": "/2017/05/23/devmate-and-paddle-are-merging-and-its-great-news-for-devs/",
		"tags": ["developer"],
		"date": "May 23<span>rd</span>, 2017",
		"ts": "1495560900",
		"summary": "MacPaw has announced that DevMate, their set of application developer tools, is merging with Paddle. This is exciting news, and a potential boon for any Mac developer. I&rsquo;ve used Paddle as the payment processor in Marked since the release of Marked 2 (and subsequent introduction to the non-MAS market) a few years ago. It&rsquo;s been a great experience, especially since it&rsquo;s so easy and seamless to implement. Since then they&rsquo;ve added some excellent analytics and reporting tools to the SDK and dashboard. DevMate, on the other hand, has offered a more complete set of analytics, but they&rsquo;ve relied on external services for payment processing. Combining these two is, as far as I can see, the best of both worlds, and makes the new platform a strong leader. DevMate is continuing to be DevMate, but all of its features will be integrated into Paddle. DevMate users can choose to switch to Paddle and maintain all of their tools, plus get Paddle&rsquo;s slick payment and licensing options. History with both services makes me confident that the tools provided to developers for integration will be simple, flexible, and easy to integrate. There&rsquo;s a FAQ on the DevMate blog geared toward current users that answers a lot of questions",
		"keywords": ["devmate","paddle","payment","processor","combining","devmate","history","macpaw","marked","paddle","since","added","analytics","announced","answers","choose","confident","continuing","dashboard","developer","developers","especially","excellent","exciting","experience","external","features","flexible","geared","great","integrate","integrated","integration","introduction","leader","licensing","maintain","makes","market","merging","offered","options","payment","platform","potential","processing","processor","questions","release","relied","reporting","rsquo","seamless","services","simple","since","slick","strong","switch","tools","toward","users","worlds","years"]
	},{
		"title": "Web Excursions for May 17, 2017",
		"url": "/2017/05/17/web-excursions-for-may-17-2017/",
		"tags": ["bookmarks"],
		"date": "May 17<span>th</span>, 2017",
		"ts": "1495043820",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. CMD-D Conference Paul Kent, along with Apple Automation legend Sal Soghoian and PR veteran Naomi Peace, have announced a new conference dedicated entirely to Mac Automation. It&rsquo;s on August 9th (with an optional scripting bootcamp on the 8th) at the Santa Clara Convention Center. Registration is open now. I&rsquo;m sincerely hoping to find a way to make it to this one after Macstock! learn anything A mindmap created by Nikita Voloboev and hosted by MindNode with a network of topics, subtopics, and links for just about every area of knowledge you could want to dig into. 50 Useful Command Line Tools Developers Will Love A sizable roundup of cool command line utilities ranging from web development to time tracking. There&rsquo;s even a cool Facebook CLI I hadn&rsquo;t seen before. (And one of my projects, doing, made the list). Keeping Apple History Alive at MacPaw MacPaw has pulled together an impressive collection of almost 40 machines from across the history of Apple in a museum you can visit next time you&rsquo;re in Kyiv. Placeit (with video) I&rsquo;ve mentioned Placeit before. It lets you upload screenshots and frame them in high quality stock photos of any device. Since the last time I&rsquo;ve mentioned it, they&rsquo;ve added the ability to put screen recordings into devices and save as video, as well as a whole section of t-shirt and poster mockups with models and settings. (It appears to be what Teespring is using now for the marketing photos they generate for user campaigns.) It&rsquo;s not cheap ($8 for a one-off high-res mockup), but the quality is worth it for anyone serious about marketing",
		"keywords": ["command","interface","javascript","alive","apple","automation","center","clara","cleanmymac","command","conference","convention","developers","facebook","history","keeping","macpaw","macstock","mindnode","naomi","nikita","peace","placeit","registration","santa","since","soghoian","teespring","tools","useful","voloboev","ability","across","added","almost","announced","anyone","appears","before","bootcamp","brought","campaigns","cheap","collection","command","conference","created","dedicated","development","device","devices","doing","entirely","excursions","frame","history","hoping","hosted","impressive","knowledge","learn","legend","links","machines","marketing","mentioned","mindmap","mockup","mockups","models","museum","network","optional","partnership","photos","poster","projects","pulled","quality","ranging","recordings","roundup","rsquo","screen","screenshots","scripting","section","serious","settings","shirt","sincerely","sizable","speed","stock","subtopics","together","tools","topics","tracking","upload","using","utilities","veteran","video","visit","whole","worth"]
	},{
		"title": "User reviews matter",
		"url": "/2017/05/15/user-reviews-matter/",
		"tags": ["appreview","marketing"],
		"date": "May 15<span>th</span>, 2017",
		"ts": "1494872640",
		"summary": "I&rsquo;ve talked about this before, here and on my podcasts. Online reviews are a matter of life and death for an app or a business. (And, sadly, all review systems are broken in some way.) This infographic from Website Builder offers some stats that show I&rsquo;m not crazy. Leaving a one-star review because you have a complaint about an app that you otherwise love or really want to work is a homicidal thing to do. On app stores where the developer can&rsquo;t respond to you, especially, you&rsquo;re basically throwing a support request into the wind, and potentially causing serious damage to an app&rsquo;s credibility &mdash; and thus the chances that the developer will make enough money to bother fixing your problem. Before you leave that single star, think about how much you&rsquo;d like the app if it weren&rsquo;t for that issue. Leave those stars, and then feel free to mention your \"just one problem,\" or better yet, go to the support site link for the app and get the issue fixed. Then leave your review, along with glowing praise about responsive developers. Trust me, this technique benefits you as much as it does the dev or business. My other point of frustration is the varying interpretations of a 5-star scale. For some users, 3 stars means their experience is perfectly satisfactory. They reserve 5 stars for the \"holy shit that was amazing\" experiences. If you read through the list of any frequently-reviewed app, you&rsquo;ll see people give 3 stars and then a glowing review. Meanwhile, the majority of users start with 5 stars representing \"this improved my life and I had no problems.\" Then they subtract stars for each major issue. By the time they get down to 3 stars, they&rsquo;re having serious complaints, and one star reviews are left out of rage or offense. Mixing these varying interpretations means that it&rsquo;s only a matter of which type of user or customer left the most reviews, rather than actually having valid comparisons between products or establishments. You&rsquo;re going to see a thumbnail display of options with nothing but average star results, and the one you click is generally going to be the one with the most stars. You probably won&rsquo;t even take the time to note that the one with 4 stars has 917 reviews, while the one with 5 only has 12. Thus, you have to go with the lowest common denominator (by which I mean the offset of the scale, not the user). If you love an app, go leave a 5-star rating. Or, leave a 3 or&hellip;",
		"keywords": ["advertising","amazoncom","campaign","company","infographic","reviews","stars","startup","again","before","builder","leave","leaving","meanwhile","mixing","online","thanks","website","while","amazing","average","because","before","benefits","between","bother","broken","business","businesses","causing","chances","click","common","comparisons","complaint","complaints","crazy","credibility","customer","damage","death","denominator","developer","developers","display","enough","especially","establishments","experience","experiences","favorite","fixed","fixing","frustration","generally","glowing","going","having","helpful","homicidal","horrible","improved","improves","infographic","insight","interpretations","leave","leaving","lowest","major","matters","mdash","mention","money","nothing","offense","offers","offset","options","others","people","perfectly","philosophy","podcasts","point","potentially","praise","problem","problems","products","provides","rather","rating","representing","reserve","respond","responsive","results","reviewed","reviews","rsquo","sadly","satisfactory","scale","serious","single","stars","stats","stores","subtract","support","systems","talked","technique","think","through","throwing","thumbnail","users","using","valid","varying","warning","weren","where","while"]
	},{
		"title": "PDFpen version 9!",
		"url": "/2017/05/11/pdfpen-version-9/",
		"tags": ["sponsor"],
		"date": "May 11<span>th</span>, 2017",
		"ts": "1494500400",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! The new PDFpen 9 is the ultimate tool for editing PDFs and going paperless, including over 100 enhancements to improve your PDF editing workflow. Access annotations and their content in the sidebar and copy annotation content as text Find & Highlight all instances of a word or phrase Remove OCR text layers. Create links to other PDF files Export in grayscale and to JPEG, PNG, and 1-bit TIFF Use forms which do calculations And much more! PDFpenPro 9 enhances Table of Contents editing, and adds OCR for Chinese, Japanese, and Korean",
		"keywords": ["document","format","pdfpen","portable","smile","software","access","brettterpstra","chinese","contents","create","export","highlight","japanese","korean","learn","pdfpen","pdfpenpro","remove","table","thanks","annotation","annotations","brett","calculations","content","editing","enhancements","enhances","files","forms","going","grayscale","improve","including","layers","links","paperless","phrase","sidebar","smilesoftware","sponsoring","ultimate","workflow"]
	},{
		"title": "Positive Fungi",
		"url": "/2017/05/10/positive-fungi/",
		"tags": ["personal"],
		"date": "May 10<span>th</span>, 2017",
		"ts": "1494448080",
		"summary": "Alternate title for this post: \"Fungyes\". You&rsquo;ll get it in a second. If after reading this you&rsquo;re still unsatisfied with the title, please provide your suggestions in the comments1. Make sure you read to the end to get the morel of the story. Again, you&rsquo;ll get that in a sec. I reconnected with an old friend recently. We&rsquo;d been at the same concerts a couple of times, and had hung out once. Then I got a message asking if I wanted to go mushroom hunting. I didn&rsquo;t pause to reflect on the fact that I historically do not enjoy eating mushrooms, or to see what the weather would be like, or to note that I had no idea how to hunt mushrooms. I just said \"sure.\" I have a bad habit of saying yes to certain types of things. Projects that sound exciting, people that I&rsquo;d be honored to work with, anything that sounds profitable, whether monetarily or emotionally. Lately I&rsquo;ve subscribed to the idea that saying \"yes\" to something means saying \"no\" to something else. That&rsquo;s not my idea, I&rsquo;ve picked it up from \"productivity folks\" because it makes a lot of sense. There are plenty of things I habitually say no to, though. Going to concerts. Folding laundry. Hosting parties. Hosting children. Having children. Going deep off trail to hunt for fungus I don&rsquo;t want. I guess the theme would be \"things that seem mildly inconvenient or may end badly.\" But lately \"yes\" has seemed like the more interesting option in many cases. At first it wasn&rsquo;t at all intentional. I&rsquo;d already started changing my life and habits, losing weight, being active, being more social. I found that once in a while an opportunity would present itself and without going through my usual thought process (\"well, here&rsquo;s how that could go wrong,\" or \"here&rsquo;s a list of things that would be less likely to suck\"), I just started saying \"yes.\" Yes, I&rsquo;ll go to that show with you. Yes, I&rsquo;d love to have that couple over for dinner. Yes, I&rsquo;ll hold your baby for a minute. So when my friend suggested a mushroom hunt, and I jumped in without question, I found myself actually looking forward to it. I even started wondering if I still hated mushrooms. It turned out that the hiking and searching and walking and talking were great fun. The hours flew by. We didn&rsquo;t find the morels we were ostensibly looking for, but I learned what Pheasant Back Mushrooms (Dryad&rsquo;s Saddle) are and how to cook them. And that I&hellip;",
		"keywords": ["morel","mushroom","positivity","again","alternate","disappointment","dryad","folding","fungyes","going","having","hosting","mushrooms","pheasant","projects","saddle","social","sometimes","whichever","active","among","anyone","areas","articles","asking","assume","avoided","backlink","badly","because","bookstore","brettterpstra","bummer","caught","certain","chance","changing","children","circlesixdesign","class","clearly","coffee","comedy","comments","concept","concerts","couple","dateposted","dinner","disconnected","doesn","eating","emotionally","endeavors","endnotes","enjoy","enjoyable","enriching","everyone","excitement","exciting","expectations","experiences","figured","first","flickr","fnref","folks","footnote","footnotes","found","friend","frustration","fungus","generally","genius","getting","going","great","grumpy","guess","habit","habits","habitually","happen","happens","hated","having","height","hiking","historically","holding","honored","hours","https","hunting","image","imagined","inconvenient","increase","instinctively","intentional","interested","interesting","involved","itself","jumped","language","later","laundry","ldquo","learned","learner","learning","leave","liked","likelihood","likely","loading","looking","losing","makes","making","media","mediocre","meeting","message","mildly","minute","mistakes","monetarily","morel","morelofthestory","morels","mushroom","mushrooms","myself","noscript","noteref","notes","optimist","original","ostensibly","outlet","overall","parties","pause","people","photos","picked","picture","plenty","poorly","potentially","price","process","productivity","profitable","programming","public","rdquo","reading","realize","realized","recently","reconnected","reflect","regret","reversefootnote","right","rsquo","saying","searching","second","section","seemed","sense","sharing","situations","small","social","sometimes","sound","sounds","source","srcset","stage","started","stayed","stopped","story","subscribed","successes","suggested","suggestions","surprising","tactile","taken","taking","talking","thankfully","theme","think"]
	},{
		"title": "SYC 2 will bend YouTube to your will",
		"url": "/2017/05/04/syc-2-will-bend-youtube-to-your-will/",
		"tags": ["sponsor"],
		"date": "May 4<span>th</span>, 2017",
		"ts": "1493895600",
		"summary": "Thanks to Softorino for sponsoring BrettTerpstra.com this week! Download Any YouTube As Video, Music or even Ringtones to your iPhone, iPad, Mac or even old iPod Classics. Softorino is proud to introduce the second iteration of our famous Softorino YouTube Converter. The all-new Softorino YouTube Converter 2, or just SYC 2, features incremental downloads, speed improvements, support for the entire lineup of Apple devices (including iPod Classic from 2001), cover art recognition for music, and automatic Wi-Fi connection to your devices. But the most amazing feature is: Trimless Ringtones. Now, you can turn any of 10 billion YouTube videos and SoundCloud tracks into a ringtone for your iPhone in a single click. All of this makes SYC 2 an invaluable companion for every Apple device owner. Watch the SYC 2 Reveal Video. You only have to copy the URL and the converter will do the rest It&rsquo;s the World&rsquo;s first desktop class application to get YouTube videos, music, ringtones directly into iPhone, iPad or even old iPod classic. No iTunes or additional iOS apps required. One Click. Any destination. The new SYC 2 download speed is significantly faster. In a single click, you can get music and video downloads to any computer or Apple device ever created. It supports the entire line-up, all the way back to iPod Classics and iPod nano. Oh, and did we mention 4K Ultra HD, 60FPS, subtitles, and playlist support? SYC 2 has it all! Cable-less. Seamless. With the Wi-Fi feature built into SYC 2 you can free yourself from cords. When you launch the app, it will automatically find your iOS device ready to eat up any YouTube music, video or ringtone you feed it. Search. Download. Go. SYC 2 features an in-app YouTube browser. Now you can search and add any YouTube video without even leaving the application. Besides YouTube, you can also copy the link from a chunk of newly supported websites and SYC 2 will automatically recognize it. This includes SoundCloud, Vimeo, BandCamp, VEVO, BREAK, Weibo, DailyMotion, Facebook, Instagram, Audioboom, VK, LiveLeak, and many more. Possibly the most amazing and unique feature of SYC 2 is Trimless Ringtones. Today YouTube is the biggest collection entertainment in the world. And with Trimless Ringtones in the new SYC 2 you can turn ANY YouTube video into a ringtone and push it into your iPhone with a single click (even without cords, via WiFi). SYC 2 will be available for download in late May/early June&hellip;",
		"keywords": ["converter","music","softorino","video","youtube","access","apple","audioboom","break","backers","badge","bandcamp","benefits","besides","brett","brettterpstra","cable","classic","classics","click","converter","dailymotion","download","exclusive","facebook","first","instagram","liveleak","membership","music","possibly","premium","priority","reveal","right","ringtones","seamless","search","softorino","soundcloud","support","thanks","today","trimless","ultra","video","vimeo","watch","weibo","world","youtube","access","adopter","amazing","anyone","arena","automatic","automatically","available","becoming","before","biggest","billion","browser","built","bundle","check","chunk","class","classic","click","collection","companion","computer","converter","cords","cover","created","credits","crowded","desktop","destination","device","devices","different","directly","discounts","download","downloads","email","engraved","entertainment","entire","exclusive","famous","faster","feature","features","first","forever","friends","iphone","itunes","improvements","includes","including","incremental","introduce","invaluable","iteration","launch","leaving","legal","license","lifetime","lineup","makes","members","mention","music","newly","ordering","owner","perks","phone","playlist","price","priority","proud","ready","recognition","recognize","required","ringtone","ringtones","rsquo","search","second","significantly","single","software","special","speed","sponsoring","stand","subtitles","support","supported","supports","today","tracks","unique","value","video","videos","websites","wondering","world","youtube"]
	},{
		"title": "Web Excursions for May 02, 2017",
		"url": "/2017/05/02/web-excursions-for-may-02-2017/",
		"tags": ["bookmarks"],
		"date": "May 2<span>nd</span>, 2017",
		"ts": "1493747100",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. CloudMounter A nicely done app from Eltima that mounts your S3, OneDrive, Dropbox, Google Drive, and FTP/WebDAV drives in Finder. Using Marked 2 for Academic Writing A great video from Nicholas Cifuentes-Goodbody documenting the use of Marked 2 with Pandoc for Academic writing. Rocket-fast, Slack-style emoji everywhere on your Mac A free Mac app that makes typing emoji faster and easier using Slack-style shortcuts. labnol/unsubscribe-gmail As an alternative to Unroll.me, this open source Google Script helps easily unsubscribe from newsletters and bulk emails in Gmail. Without giving anyone permission to scrape your inbox. Blurr for Chrome A Chrome plugin for anonymizing your digital footprint using obfuscation. LivePhotosKit JS Did you know that there&rsquo;s a javascript library for playing Apple&rsquo;s Live Photos on the web? It has a full API for customizing controls and playback options. I&rsquo;m not certain I&rsquo;ll find anything useful to do with it, but smart move on Apple&rsquo;s part to start opening the format up to legitimate use outside of Photos",
		"keywords": ["apple","drive","google","onedrive","academic","apple","blurr","check","chrome","cifuentes","cloudmounter","drive","dropbox","eltima","finder","gmail","goodbody","google","livephotoskit","marked","nicholas","onedrive","pandoc","photos","rocket","script","setapp","slack","unroll","using","webdav","writing","access","anonymizing","anyone","brought","certain","controls","customizing","digital","documenting","drives","easier","easily","emails","emoji","everywhere","excursions","faster","footprint","format","giving","gmail","great","helps","hundreds","inbox","javascript","labnol","legitimate","library","makes","monthly","mounts","newsletters","nicely","obfuscation","opening","options","outside","partnership","permission","playback","playing","plugin","rsquo","scrape","shortcuts","smart","source","style","subscription","today","typing","unsubscribe","useful","using","video","writing"]
	},{
		"title": "Why you should have Macstock on your calendar",
		"url": "/2017/04/27/why-you-should-have-macstock-on-your-calendar/",
		"tags": ["macstock"],
		"date": "Apr 27<span>th</span>, 2017",
		"ts": "1493309880",
		"summary": "Just so I don&rsquo;t bury the lede, here&rsquo;s a coupon code for $30 off Macstock tickets: Macstock is a relatively new conference that takes place in July near Chicago. After the demise of the Macworld conference, I was happy to see something starting up that would help satisfy my love of seeing all the people I follow and communicate with in the Mac world. So I went last year. I loved it. While not nearly as well-attended as Macworld had become, the people who showed up were exactly the kind of people I wanted to connect with. The speaker lineup was fun, I learned a lot of new tricks, and got to talk with some of my favorite writers and podcasters. So this year I pitched a talk and guess what? I&rsquo;ll be presenting! I&rsquo;m presenting on Spotlight. All the things you don&rsquo;t know about Spotlight and how it can make your workflow and everyday life on your Mac smarter, faster, and more fun. There&rsquo;s a great lineup of speakers, including Kirschen Seah of Free Range Coder, Mike Schmitz from Asian Efficiency and ScreenCastsOnline, Melissa Davis (TheMacMommy), Wally Cherwinski (whose presentation last year sparked my renewed interest in iPhone photography/videography), and Dave Hamilton, Bryan Chaffin, and Jeff Gamet from The Mac Observer. Macstock is happening July 15th and 16th this year. You can attend one day for $89, both days for $169, and get the Premium ticket for $199, which includes Barry&rsquo;s Midwest Mac Mingle and a complementary Macstock 2017 pint glass. And here&rsquo;s a special deal&hellip; use when registering for $30 off the 2-day or premium tickets",
		"keywords": ["apple","chicago","conference","iphone","asian","barry","bryan","chaffin","cherwinski","chicago","coder","davis","efficiency","gamet","hamilton","kirschen","macstock","macworld","melissa","midwest","mingle","observer","premium","range","schmitz","screencastsonline","spotlight","themacmommy","wally","while","attended","complementary","conference","connect","coupon","demise","everyday","faster","favorite","glass","great","guess","happening","happy","hellip","iphone","includes","including","interest","learned","lineup","loved","nearly","people","photography","pitched","podcasters","premium","presentation","presenting","registering","relatively","renewed","rsquo","satisfy","seeing","showed","smarter","sparked","speaker","speakers","special","starting","takes","ticket","tickets","tricks","videography","wanted","whose","workflow","world","writers"]
	},{
		"title": "Killing the iTunes Affiliate",
		"url": "/2017/04/24/killing-the-itunes-affiliate/",
		"tags": ["affiliate","itunes"],
		"date": "Apr 24<span>th</span>, 2017",
		"ts": "1493062260",
		"summary": "I got an email from the iTunes Affiliate program at Apple today. It announced a great new website for ease of creating affiliate links. It closed out with the unapologetic statement that, by the way, the standard 7% earnings on app sales will be 2.5% starting May 1st. First off, if you&rsquo;re not familiar with affiliate linking, it&rsquo;s when you add a code to a link to a product that gives you a commission on the sale. It cost nothing for the user who clicks it, and it serves as a way to encourage people to send others to buy the product. In most cases (and in the case of iTunes), the user doesn&rsquo;t have to purchase the product they clicked into; anything they purchase from the company within a set timeframe will earn you a commission. I use affiliate links on everything. I&rsquo;ve built many tools, including SearchLink to make this easy, and it generates a small portion of my monthly income. Not a lot, but it&rsquo;s enough to notice. On an average month, I&rsquo;ll make about $200. With this cut, that same amount of traffic will bring me about $75 dollars. A popular post written for MacStories can earn me $200 in affiliate sales on its own. Again, that&rsquo;s now $75. And the average post, even with MacStories traffic, earns $20 to $30… which is now $10 or less. It&rsquo;s a drastic cut to mention in passing just one week before it takes effect. Most people don&rsquo;t make significant income off affiliate linking, but it doesn&rsquo;t cost the writer anything and it earns something. But there are many sites whose business model is built on affiliate linking, in part or in whole. And it works. Well, it used to. Talking with John Voorhees, an active MacStories contributor and creator of Blink, an iOS app specifically for creating iTunes affiliate links, we pondered possible reasons for this cut and its potential fallout. My best guess is this: Apple hosts a lot of free apps. They don&rsquo;t make much of a cut on things that don&rsquo;t cost money. But, if someone clicks in for a free app from an affiliate link, they still have to pay a commission on everything else that user buys before the link&rsquo;s timeframe runs out. The link still brought them sales, though, and they&rsquo;re only paying out on things they make money on. It&rsquo;s a bit mysterious to me. I can only assume that the investment isn&rsquo;t paying off enough to continue at the 7% level. Plus, people using affiliate links aren&rsquo;t spending anything to do so&hellip;",
		"keywords": ["affiliate","apple","itunes","linking","store","affiliate","again","apple","blink","books","first","macstories","music","searchlink","store","stores","talking","voorhees","active","affiliate","amount","announced","announcement","apple","applies","assume","average","before","blink","brettterpstra","bring","brought","built","business","cause","class","clicked","clicks","closed","commission","company","completely","continue","contributor","count","creating","creator","curious","doesn","doing","dollars","doubt","drastic","earnings","earns","email","encourage","enough","everything","fallout","familiar","general","generates","gives","going","great","guess","guessing","height","hosts","https","itunes","image","including","income","indicative","information","investment","itunes","ituneslogo","level","linking","links","loading","macstories","media","mention","model","money","monthly","mysterious","noscript","nothing","often","original","others","passing","paying","people","picture","pondered","popular","portion","possible","potential","product","program","projects","proposition","reasons","replace","revenue","rsquo","sales","searchlink","serves","shift","showing","significant","sites","small","source","specifically","speculate","spending","srcset","stand","standard","starting","statement","takes","through","timeframe","title","today","tools","traffic","unapologetic","uploads","using","website","whole","whose","width","winning","within","works","wouldn","writer","written"]
	},{
		"title": "Find your iOS text editor: iTextEditors updates",
		"url": "/2017/04/21/find-your-ios-text-editor-itexteditors-updates/",
		"tags": ["itexteditors"],
		"date": "Apr 21<span>st</span>, 2017",
		"ts": "1492799220",
		"summary": "I created the iTextEditors comparison chart (for iOS text editors, obviously) back in 2012. I&rsquo;ve made some improvements over the years, and kept it up to date thanks to help from readers. I made a change to the chart today that (as a side effect) made it really easy for me to see what apps were no longer available. So I&rsquo;ve edited it down to only 78 apps to choose from&hellip; Oh, and I finally updated the logo, no more iOS 7 keyboard on it. There have also been many submissions over the last 5 years; new apps, feature updates, and corrections. I don&rsquo;t mention it frequently, but I do update the chart every time someone submits a form. If you&rsquo;re an app developer, make sure your iOS text editor is listed and that the information is correct. If not, let me know! The page gets an impressive thousands of visits every month, so it&rsquo;s worth it to make sure you&rsquo;re getting the exposure. If you&rsquo;re a user and notice a mistake or omission on your favorite editor, let me know that as well! You can submit a form with just a note, no need to fill out the whole thing for an app that already exists. I intend to keep this running, and it&rsquo;s being updated regularly (there&rsquo;s a date stamp under the chart showing last update). I also hope to finally get around to making a mobile version of it, adding additional criteria/columns, and possibly expanding the idea to categories other than just text editors. Check out the chart, and help keep it up to date",
		"keywords": ["comparison","editor","iphone","itexteditors","markdown","check","adding","available","categories","change","chart","choose","columns","comparison","corrections","created","criteria","developer","edited","editor","editors","exists","expanding","exposure","favorite","feature","finally","getting","hellip","itexteditors","impressive","improvements","information","keyboard","listed","longer","making","mention","mistake","mobile","omission","possibly","readers","regularly","rsquo","running","showing","stamp","submissions","submits","thanks","thousands","today","under","updated","updates","version","visits","whole","worth","years"]
	},{
		"title": "TextExpander for Teams: Multiplying Productivity",
		"url": "/2017/04/20/textexpander-for-teams-multiplying-productivity/",
		"tags": ["sponsor","textexpander"],
		"date": "Apr 20<span>th</span>, 2017",
		"ts": "1492686000",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander for Teams is a productivity multiplier, a shared knowledge base from which your team communicates quickly and accurately. Using TextExpander, all of your team&rsquo;s common responses are worded by your best writers, accessible and searchable through simple abbreviations and keyboard shortcuts, and available on the all platforms your team is on: macOS, iOS, Windows, and the web. April is TextExpander&rsquo;s first anniversary. In that time, the TextExpander crew has added team statistics, group notes, public groups, monthly activity reports, the Windows app, tons of client software updates, and much more. Celebrate by visiting textexpander.com/brett to start your free trial",
		"keywords": ["productivity","smile","smileonmymac","textexpander","brettterpstra","celebrate","teams","textexpander","thanks","using","windows","abbreviations","accessible","accurately","activity","added","anniversary","available","brett","client","common","communicates","first","group","groups","keyboard","knowledge","macos","monthly","multiplier","notes","platforms","productivity","public","quickly","reports","responses","rsquo","searchable","shared","shortcuts","simple","software","sponsoring","statistics","textexpander","through","trial","updates","visiting","worded","writers"]
	},{
		"title": "Web Excursions for April 18, 2017",
		"url": "/2017/04/18/web-excursions-for-april-18-2017/",
		"tags": ["bookmarks"],
		"date": "Apr 18<span>th</span>, 2017",
		"ts": "1492539360",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Auphonic Found via a post from Jason Snell about podcast transcription, I&rsquo;ve been trying out this automatic audio post production service. I set it up with transcription via the Google Cloud Speech platform and am actually very impressed with the results. Good enough for fuzy full-text search, anyway. And the audio processing is surprisingly good. MarkdownLivePreview This is a very interesting Sublime Text package that actually creates a split view Markdown editor with live preview right in Sublime. I hadn&rsquo;t previously even realized this was feasible. Best VPN Services A thorough comparison of currently available VPN services, covering speed, encryption level, usability and cost. The site isn&rsquo;t affiliated with any particular VPN, and the ranking/scoring is fair (and useful). chrishannah/TitleCase From Christopher Hannah: a little CLI written in Swift that uses my TitleCase API to convert input to a properly title-cased string from the command line or as part of a script pipeline. Apparix augmenting the command-line with directory bookmarks Apparix is a CLI that augments directory navigation with bookmarks, distant listing, and distant editing. I need to dig deeper on this one, but thus far it&rsquo;s on steroids. Typ.io Fonts that go together Web font inspiration and pairing ideas",
		"keywords": ["command","github","interface","apparix","auphonic","christopher","cleanmymac","cloud","fonts","found","google","hannah","jason","markdown","markdownlivepreview","services","snell","speech","sublime","swift","titlecase","affiliated","anyway","audio","augmenting","augments","automatic","available","bookmarks","brought","cased","chrishannah","command","comparison","convert","covering","creates","deeper","directory","distant","editing","editor","encryption","enough","excursions","feasible","ideas","impressed","input","inspiration","interesting","level","listing","little","navigation","package","pairing","particular","partnership","pipeline","platform","podcast","preview","previously","processing","production","properly","ranking","realized","results","right","rsquo","scoring","script","search","service","services","speed","split","steroids","string","surprisingly","thorough","title","together","tools","transcription","trying","usability","useful","written"]
	},{
		"title": "MailButler: a simple way to avoid email mistakes",
		"url": "/2017/04/13/mailbutler-a-simple-way-to-avoid-email-mistakes/",
		"tags": ["sponsor"],
		"date": "Apr 13<span>th</span>, 2017",
		"ts": "1492087800",
		"summary": "Thanks to MailButler for sponsoring BrettTerpstra.com this week! Given the volume of emails most employees are sending and receiving each day, it&rsquo;s not surprising that mistakes are made once in a while by everyone. Sending a message to the wrong person or replying all is one of the most common email errors. The potential consequences range from simple confusion and awkwardness to serious data security issues. Another unpleasant case is forgetting a file attachment you have referred to in your message. This mistake can become a real problem if the document at stake is critical for your business. The list continues with unprofessional-looking or even completely missing email signatures. To avoid email mistakes (or at least significantly reduce them), you need special tools designed to optimize your email experience. You&rsquo;ll find them all in MailButler. With MailButler you get reminders about omitted email attachments. Thanks to the Undo Send feature, your outgoing messages can be recalled and corrected after they have been sent. Beautiful and professional signatures are available as templates in multiple designs. With MailButler you can even easily schedule and snooze your emails, get detailed read receipts, and put your inbox on pause. Properly used, email can be a very effective tool for communication. Check out how MailButler can help you to get the most out of it",
		"keywords": ["apple","email","mailbutler","another","beautiful","brettterpstra","check","mailbutler","properly","sending","thanks","attachment","attachments","available","avoid","awkwardness","business","common","communication","completely","confusion","consequences","continues","corrected","critical","designed","designs","detailed","document","easily","effective","email","emails","employees","errors","everyone","experience","feature","forgetting","inbox","issues","looking","message","messages","missing","mistake","mistakes","multiple","omitted","optimize","outgoing","pause","person","potential","problem","professional","range","recalled","receipts","receiving","reminders","replying","rsquo","schedule","security","sending","serious","signatures","significantly","simple","snooze","special","sponsoring","stake","surprising","templates","tools","unpleasant","unprofessional","volume","while","wrong"]
	},{
		"title": "A Bolognese from The Lab",
		"url": "/2017/04/04/a-bolognese-from-the-lab/",
		"tags": ["cooking","recipe"],
		"date": "Apr 4<span>th</span>, 2017",
		"ts": "1491319500",
		"summary": "I may have mentioned my recent deep dive into cooking before. It&rsquo;s been a fun journey, I&rsquo;ve learned a lot, and actually lost a lot of weight on the way (but mostly because of exercise&hellip;). I most enjoy complex, time-consuming recipes as they have room for experimentation and a little room for error followed by a great feeling of satisfaction when it actually goes right. Oh, and an amazing meal. This bolognese sauce is the result of many hours of all-out experimentation. It started when I decided to make my own pasta. I got good at it, but wanted a sauce worthy of the time and effort that takes. So why not spend an extra six hours making one, right? After seven major variations and a few failures, I&rsquo;ve got it down to a four hour process (most of which is a slow simmer) that I&rsquo;ve replicated a few times now. It&rsquo;s best served with a wide noodle pasta like pappardelle or fettuccine, but if you&rsquo;re making your own an inch-wide noodle cut from a pasta sheet is amazing with it. Bolognese is a meat-based sauce originating from Bologna, Italy. It&rsquo;s a lot of meat. If you&rsquo;re vegetarian, don&rsquo;t try to replicate this with TVP or anything else. The whole point of it is the meat and the fat. I was vegetarian for 17 years, and I&rsquo;m pretty sure the effort is better spent making actually good vegetarian food. Since we&rsquo;re on the topic, we&rsquo;ll talk about health for a moment. This recipe involves a decadent amount of salt and fat. I&rsquo;ve had high blood pressure and cholesterol since my late teens, and it got worse when I gained a lot of weight. I tried controlling salt and fat intake, but it didn&rsquo;t make any difference. Since I&rsquo;ve lost the weight and started regular exercise, my blood pressure and cholesterol are perfectly within normal range. I&rsquo;m eating drastically higher amounts of fat and salt (and way less sugar) and doing better than ever. I&rsquo;m absolutely not a doctor and am offering no nutritional advice, I&rsquo;m just saying that avoiding fat and salt caused more boredom than it provided better health for me. Ok, back to the recipe. I moved away from the traditional base of celery, carrots, and onion for a few permutations and learned a lot in the process, but I&rsquo;ve gone back to it for this \"final1\" variation. So this is almost traditional. The beef: I don&rsquo;t eat a lot of beef, but when I do I source all of my meat locally. If you can find a good&hellip;",
		"keywords": ["bolognese","italian","pasta","sauce","basil","black","bogle","bologna","bolognese","break","brett","cabernet","check","cooking","directions","enjoy","fresh","freshly","ingredients","italy","leave","lower","multiple","ottolenghi","parmesan","pepper","refrigerating","remove","roasted","season","serve","serves","simmer","since","spiciness","texture","throughout","thyme","whole","yotam","zinfandel","adding","advice","almost","amazing","amount","amounts","anyone","aromatic","aside","avoiding","aware","awesome","backlink","based","basil","because","becomes","before","between","black","blender","blood","boglewinery","bolognese","boredom","braise","braising","bretts","brettterpstra","bring","brown","browned","bucks","bunch","bundle","burning","burnt","buttered","called","calls","canned","carrot","carrots","caused","celery","changing","chefs","chicken","choice","cholesterol","chopped","chuck","chunky","citrus","class","cloves","coarse","coding","comes","completely","complex","concept","consuming","content","continue","controlling","cooking","cooled","couple","crushed","decadent","decided","definitely","demonstrates","desired","difference","directions","disappeared","dishes","doctor","doing","drastically","dried","drink","dutch","easier","eating","ecstasy","effort","elements","endnotes","enjoy","error","evaporated","evaporates","excessively","exercise","experimentation","extra","faces","failures","family","fashion","favorite","feeling","fennel","fettuccine","finely","first","flakes","flavorful","fnref","followed","footnote","footnotes","found","freezer","fresh","friends","gained","garlic","glimmers","grass","grated","grating","great","grind","grinding","ground","guests","happy","harder","hated","header","health","height","hellip","higher","hours","https","ideal","image","immersion","increase","increases","ingredient","ingredients","intake","intervals","interview","involves","journey","juice","kitchen","ldquo","learned","leave","leaves","lemon","level","likes","liquid","little"]
	},{
		"title": "SearchLink and Markdown Service Tools updates",
		"url": "/2017/04/03/searchlink-and-markdown-service-tools-updates/",
		"tags": ["macos","markdown","markdownservices","searchlink","service"],
		"date": "Apr 3<span>rd</span>, 2017",
		"ts": "1491246840",
		"summary": "I&rsquo;ve just updated the SearchLink macOS Service to fix a recent issue with plain text not being run through a default search. Version 2.2.5 is up, please contact me if you have any issues. I&rsquo;ve also added a new Service to the Markdown Service Tools called \"Clean Up Smart Quotes.\" It&rsquo;s rather self-explanatory, but if you&rsquo;ve ever been bitten by invalid, non-ascii characters when moving documents from one place to another, it will be useful. It will straighten all smart (curly) quotes as well as convert ellipsis (&hellip;) to triple dots. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip; Markdown Service Tools v3.0.3 Download Markdown Service Tools v3.0.3 The Markdown Service Tools are a collection of macOS Services designed to make creating Markdown-formatted text that much easier. Services work in almos any macOS application. Published 01/09/14. Updated 09/14/20. Changelog Donate &bull; More info&hellip",
		"keywords": ["markdown","service","tools","changelog","clean","donate","download","markdown","published","quotes","searchlink","service","services","smart","tools","updated","version","added","almos","another","ascii","bitten","called","characters","collection","contact","convert","creating","curly","default","designed","documents","easier","editor","ellipsis","explanatory","formatted","hellip","invalid","issues","leaving","links","macos","moving","quotes","rather","recent","rsquo","search","searches","smart","straighten","through","triple","updated","useful"]
	},{
		"title": "Web Excursions for March 24, 2017",
		"url": "/2017/03/24/web-excursions-for-march-24-2017/",
		"tags": ["bookmarks"],
		"date": "Mar 24<span>th</span>, 2017",
		"ts": "1490372280",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. MultiMarkdown Converter Pro MultiMarkdown 6 is complete and progress is moving forward on a new version of MultiMarkdown Composer. You can read about changes/improvements and get the CLI version of MMD 6 on GitHub, and Fletcher has also released a GUI converter for drag-and-drop conversion on the Mac App Store. Spark for Mac Spark from Readdle is my favorite email client on iOS, and the Mac version is making some exciting improvements. This latest update includes labels, improved sidebar management, more options for folder management (Color Tags, Recents, Favorites and Smart Folders), and improved Smart Search with boolean operators. Wiki.js An open source wiki app built on NodeJS, Git and Markdown. It will run on Linux, Windows, or macOS servers, saves all content to Markdown files, and automatically syncs with a Git repository. Comes complete with a nice editor with Markdown highlighting, access control and authentication options, and a built-in search engine. Videoloupe for Mac - The Video Player for Videographers From the creator of Fileloupe, Videoloupe is the \"video player for videographers.\" It offers extensive playback controls, editing and adjustment tools, and a wide range of export/conversion options. Great for pros, but just about all of it is useful to anyone who works with videos regularly. 48 Incredibly Short, Clean Jokes That Are Actually Funny. I can&rsquo;t help it. These are so bad/good that I&rsquo;m making an effort to memorize them all. This is one of the ways I avoid being invited to too many dinners and parties",
		"keywords": ["fletcher","linux","multimarkdown","penney","readdle","spark","store","videoloupe","clean","cleanmymac","color","comes","composer","converter","favorites","fileloupe","fletcher","folders","funny","github","great","incredibly","jokes","linux","markdown","multimarkdown","nodejs","player","readdle","recents","search","short","smart","spark","store","video","videographers","videoloupe","windows","access","anyone","authentication","automatically","avoid","boolean","brought","built","changes","client","content","control","controls","conversion","converter","creator","dinners","editing","editor","effort","email","engine","exciting","excursions","export","extensive","favorite","files","folder","highlighting","improved","improvements","includes","invited","labels","latest","macos","making","management","memorize","moving","offers","operators","options","parties","partnership","playback","player","range","regularly","released","repository","rsquo","saves","search","servers","sidebar","source","speed","syncs","tools","useful","version","video","videographers","videos","works"]
	},{
		"title": "Squarespace: Make Your Next Move, Make Your Next Website",
		"url": "/2017/03/23/squarespace-make-your-next-move-make-your-next-website/",
		"tags": ["sponsor"],
		"date": "Mar 23<span>rd</span>, 2017",
		"ts": "1490266800",
		"summary": "Thanks to SquareSpace for sponsoring BrettTerpstra.com this week! See below for a 10% coupon for BrettTerpstra.com readers. When you&rsquo;re ready for the world to see what you do, go with Squarespace. Whether you&rsquo;re a blogger, artist, business owner, or something else entirely, Squarespace is the simplest way to showcase your work. With designer templates and a simple interface, Squarespace helps creative people stand out when the world is watching. Before creating your website, make sure to lock down your domain with Squarespace. I&rsquo;m a big fan of Squarespace. In addition to beautiful website designs, an all-in-one platform, and 24/7 customer service, Squarespace provides a domains shopping experience that&rsquo;s like nothing else on the web. Squarespace lets you easily purchase a domain, create a website or online store, and connect to Google&rsquo;s G Suite for custom email — all in one place and with zero technical configuration. Domains from Squarespace start at $20/year and always renew at the same rate. When you buy a domain, you&rsquo;ll receive a beautiful, ad-free parking page, WHOIS Privacy, and a 2048-bit SSL certificate to secure your website, all at no additional cost. Buying a domain from Squarespace is quick, simple, and fun. Start by searching for the domain you want, or type any word or phrase into the search field and Squarespace will suggest some great options for you. And if you already have a domain from another registrar, Squarespace is now offering domain transfers. It goes without saying that Squarespace&rsquo;s domains experience is beautiful, just like everything else they do. Go to squarespace.com/domains to discover it for yourself and get your domain before it&rsquo;s gone. Try Squarespace for free today. When you decide to subscribe, use code to get 10% off your first domain or website purchase",
		"keywords": ["squarespace","website","brett","before","brettterpstra","buying","domains","google","privacy","sponsored","squarespace","squarespace","suite","syndicate","thanks","vsayd","whois","another","artist","atdmt","beautiful","before","below","blockquote","blogger","brettterpstra","business","cache","certificate","class","configuration","connect","coupon","create","creating","creative","custom","customer","decide","designer","designs","discover","domain","domains","easily","email","entirely","everything","experience","field","first","great","height","helps","highlighter","https","image","interface","language","loading","mcsfki","media","nofollow","noscript","nothing","nxchog","offering","online","options","original","owner","parking","people","phrase","picture","pixels","plaintext","platform","provides","quick","readers","ready","receive","registrar","renew","rouge","rsquo","saying","search","searching","secure","service","shopping","showcase","simple","simplest","source","sponsoring","squarespace","srcset","stand","store","strong","subscribe","suggest","technical","templates","title","today","transfers","uploads","watching","website","width","world"]
	},{
		"title": "Developers, join MacPaw's 2017 Mac Market Survey",
		"url": "/2017/03/20/developers-join-macpaws-2017-mac-market-survey/",
		"tags": ["developer"],
		"date": "Mar 20<span>th</span>, 2017",
		"ts": "1490042520",
		"summary": "Hey devs, you might remember the survey conducted by MacPaw last year to ascertain what marketplace (MAS, direct, third-party platforms) developers were choosing and why. It&rsquo;s time to update the stats for 2017. The results were enlightening to a lot of us last time around, so I&rsquo;m excited to see if things have shifted. Join in and take the survey, and share the link around",
		"keywords": ["devmate","macpaw","survey","macpaw","choosing","conducted","developers","direct","enlightening","excited","marketplace","party","platforms","remember","results","rsquo","share","shifted","stats","survey","third"]
	},{
		"title": "TextExpander for Teams: the productivity multiplier",
		"url": "/2017/03/16/textexpander-for-teams-the-productivity-multiplier/",
		"tags": ["sponsor","textexpander"],
		"date": "Mar 16<span>th</span>, 2017",
		"ts": "1489662000",
		"summary": "Thanks to TextExpander for Teams for sponsoring BrettTerpstra.com this week! TextExpander for Teams is a productivity multiplier. a knowledge base your whole team can share to communicate quickly and accurately. All of your team&rsquo;s common replies are worded by your best writers They&rsquo;re all immediately accessible, and searchable, through simple abbreviations and keyboard shortcuts They&rsquo;re all available on the platforms your team is on: Mac, iOS and now Windows You just imagined TextExpander for Teams. TextExpander helps customer service teams provide better, faster, more accurate service. Teams of all sizes can harness the productivity benefits enjoyed by the folks from Smile, 1Password, WordPress, Shopify, and You Need a Budget. Visit textexpander.com/brett to start your free trial",
		"keywords": ["iphone","keyboard","macos","shortcut","smile","textexpander","windows","brettterpstra","budget","imagine","password","shopify","smile","teams","textexpander","thanks","visit","windows","wordpress","abbreviations","accessible","accurate","accurately","available","benefits","brett","common","customer","enjoyed","faster","folks","harness","helps","imagined","keyboard","knowledge","multiplier","platforms","productivity","quickly","replies","rsquo","searchable","service","share","shortcuts","simple","sizes","sponsoring","teams","textexpander","through","trial","whole","worded","writers"]
	},{
		"title": "The Lab presents: mugs!",
		"url": "/2017/03/15/the-lab-presents-mugs/",
		"tags": ["shirts","thelab"],
		"date": "Mar 15<span>th</span>, 2017",
		"ts": "1489607160",
		"summary": "First, thanks to everyone for the continuous support of The Lab, whether by donation, subscription, or supporting my products. It&rsquo;s meant more to me than you know, and I plan to keep bringing you the kind of crazy tools and tricks you&rsquo;ve clearly come to expect. As a thank you, I&rsquo;ve set up a promo code to get you free shipping on your order: . It only seemed right that the design should be available for your coffee as well, right? That&rsquo;s actually where the design started out, on a mug I made years ago. I&rsquo;m pleased to announce that this innovation in Markdown technology is now available to the public. It comes in one size, but a variety of colors so you can express yourself in anything from caustic yellow to an understated grey. Like a bold Eeyore. I&rsquo;ve also published some new designs&hellip; Also available as t-shirts in men&rsquo;s and women&rsquo;s sizes and multiple colors. Lastly, I republished the Iggy Pop tribute shirt as both a t-shirt and a mug&hellip; Thanks for checking them out, and don&rsquo;t forget to use the code for free shipping",
		"keywords": ["shirt","terpstra","because","eeyore","first","lastly","linux","markdown","thanks","abort","announce","available","because","bringing","caustic","checking","clearly","coffee","colors","comes","continuous","crazy","design","designs","donation","everyone","expect","express","forget","hacker","hellip","innovation","jokes","meant","multiple","needs","pleased","point","products","promo","public","published","republished","right","rsquo","seemed","shipping","shirt","shirts","sizes","sometimes","started","subscription","support","supporting","tagline","technology","thank","thanks","tools","tribute","tricks","understated","variety","where","women","years","yellow"]
	},{
		"title": "Web Excursions for March 14, 2017",
		"url": "/2017/03/14/web-excursions-for-march-14-2017/",
		"tags": ["bookmarks"],
		"date": "Mar 14<span>th</span>, 2017",
		"ts": "1489531800",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Audulus 3 A minimalist modular audio processing app for Mac with a beautiful interface, MIDI control, visual audio programming, and an Audio Unit version to run inside of your preferred DAW. There&rsquo;s also an iOS version with iCloud syncing of patches. Sorted - Quickly Organize Your Day Perhaps overly similar to Clear as far as the UI goes, Sorted is a handy todo list app that incorporates due dates and daily task lists in an easy-to-use swipe interface. Customizable colors, tagging/categorization, calendar and day views, and easy pushing of overdue tasks to the current day. I especially like the ability to select multiple tasks and pinch them apart to spread their due times out. ImageOptim HTTP API ImageOption now has a REST api that can be used for frontend image optimization when serving as well as backend processing for caching and delivery. A solid set of options including resizing, cropping/filling, and optimization levels. DatoCMS - A CMS for static website generators A nice looking CMS control panel that works with Jekyll, Hugo, Hexo, and more. Support for publishing via S3, GitLab CI, and other continuous integration platforms. Don&rsquo;t Get Hacked Privacy and security are of more interest than ever right now. Product Hunt offers a list of some of the best tools for maintaining both",
		"keywords": ["apple","icloud","iphone","store","audio","audulus","cleanmymac","clear","customizable","datocms","gitlab","hacked","imageoptim","imageoption","jekyll","organize","perhaps","privacy","product","quickly","sorted","support","ability","apart","audio","backend","beautiful","brought","caching","calendar","categorization","colors","continuous","control","cropping","daily","dates","delivery","especially","excursions","filling","frontend","generators","handy","icloud","image","including","incorporates","inside","integration","interest","interface","levels","lists","looking","maintaining","minimalist","modular","multiple","offers","optimization","options","overdue","overly","panel","partnership","patches","pinch","platforms","preferred","processing","programming","publishing","pushing","resizing","right","rsquo","security","serving","similar","solid","speed","spread","static","swipe","syncing","tagging","tasks","times","tools","version","views","visual","website","works"]
	},{
		"title": "The Pi Fest software sale",
		"url": "/2017/03/14/the-pi-fest-software-sale/",
		"tags": ["macos"],
		"date": "Mar 14<span>th</span>, 2017",
		"ts": "1489531560",
		"summary": "Pi Fest starts today! It&rsquo;s a software sale event geared toward researchers, scientists, and students. Developers from around the world have teamed up for this 10-day promotion. These are all high-quality apps that make work easier and faster, and with sustainable discounts that mean your purchase is supporting some great developers, too. iThoughtsX (50% off) - Mindmapping for Mac, iOS and Windows TextExpander (30% off) - Your productivity multiplier Findings (40% off) - Your lab notebook, reinvented ReadCube Pro (50% off) - Complete Reference Management — across all of your devices Manuscripts (50% off) - Make it your best work DEVONagent Pro (25% off) - Your personal research assistant F1000 Workspace (Free off) - Discover top research. Save references while you browse. Studies (50% off) - Flashcards for serious students Papers (50% off) - Your personal library of research PCalc (30% off) - A calculated decision DataGraph (25% off) - Data exploration, analysis, graphing, publishing Wizard (25% off) - Statistics finally clicks",
		"keywords": ["academic","discount","education","research","software","student","check","devonagent","datagraph","developers","discover","findings","flashcards","management","manuscripts","mindmapping","pcalc","papers","readcube","statistics","studies","textexpander","windows","wizard","workspace","across","assistant","brettterpstra","browse","calculated","class","clicks","decision","developers","devices","discounted","discounts","easier","exploration","faster","favorites","finally","geared","graphing","great","height","https","ithoughtsx","image","library","loading","media","multiplier","noscript","notebook","original","personal","picture","pifest","productivity","promotion","publishing","quality","references","reinvented","research","researchers","rsquo","scientists","serious","software","source","srcset","starts","strong","students","supporting","sustainable","teamed","title","today","toward","uploads","while","width","world"]
	},{
		"title": "Agenda Minder: Better Agendas, Better Meetings",
		"url": "/2017/03/09/agenda-minder-better-agendas-better-meetings/",
		"tags": ["sponsor"],
		"date": "Mar 9<span>th</span>, 2017",
		"ts": "1489060800",
		"summary": "Thanks to Agenda Minder for sponsoring the blog this week! See the bottom of the post for a special offer for BrettTerpstra.com readers! Version 1.50 of Agenda Minder was just released. It&rsquo;s a personal productivity app for the Mac that helps you prepare for your meetings. After all, a meeting is only as good as your agenda. Forgotten an important question or follow-up that you were supposed to cover, only to remember shortly after the meeting ends? Missed an important agenda item for a meeting that you are running? You have your calendar for appointments, to-do lists for tasks, and Agenda Minder for meeting preparation! Agenda Minder allows you to quickly capture agenda items for your meetings. After importing some details about your meeting from your calendar, Agenda Minder allows you to quickly enter the items for your meeting, such as the objective, notes, and who&rsquo;s responsible for each item. Say you get an email from a colleague asking to talk about project success criteria at the next team meeting. She needs to know what kind and size of test to run to be able to finalize her recommendations to the team. Capture the item: filter for next week to quickly find the team meeting. Add \"Success criteria discussion\" as an item with \"discuss success criteria to define testing needs for next program stage gate decision\" as the objective with Kim as the Owner. Share the agenda: two days ahead of the meeting, you share the three agenda items you have for the meeting via email to the team so everyone knows what is needed at the meeting. Execute at the meeting: meeting finishes 15 minutes early with the objectives met. Simple, minimal design with easy controls to capture meetings and agenda items quickly Find meetings quickly: filter by today, this week, this month, next week, or even all meetings Sort meetings by name or date BrettTerpstra.com readers can download a free 20 day trial and receive 20% off with the code . Agenda Minder ($14.99) is available at internodal.xyz or the Mac App Store",
		"keywords": ["agenda","meetings","minder","agenda","brettterpstra","capture","download","duplicate","execute","features","forgotten","meeting","minder","missed","owner","search","share","simple","sponsored","store","success","syndicate","thanks","version","agenda","ahead","allows","appointments","asking","available","bottom","calendar","capture","categorize","colleague","controls","cover","criteria","decision","define","design","details","discussion","download","duplicate","email","enter","everyone","field","filter","finalize","finishes","hellip","helps","important","importing","information","internodal","items","knows","lists","meeting","meetings","minimal","minutes","needed","needs","notes","objectives","offer","personal","preparation","prepare","productivity","program","project","quickly","readers","receive","recommendations","released","remember","responsible","rsquo","running","share","shortly","special","sponsoring","stage","success","supposed","tasks","templates","testing","today","trial","version"]
	},{
		"title": "Web Excursions for March 06, 2017",
		"url": "/2017/03/06/web-excursions-for-march-06-2017/",
		"tags": ["bookmarks"],
		"date": "Mar 6<span>th</span>, 2017",
		"ts": "1488834480",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. so-fancy/diff-so-fancy: Good-lookin&rsquo; diffs My Git diffs on the command line have never looked so good. Markdown Editors Shootout: Support for Tables, Footnotes, Strikethrough A detailed overview of just about all of the Markdown tools/editors available on Mac. Son.gg &ndash; Share Music. Everywhere. In the vein of Songlink from the last Web Excursions, another easy way to share a song and let the recipient pick which service to listen to it on. ForkLift 3 Forklift has been rivaling Path Finder as a Finder replacement for years, and this latest version gives it the edge, in my opinion. Excellent support for remote connections (SFTP, WebDAV, S3, and more), fast file management options and keyboard shortcuts, and an extensible command palette, among dozens of other features. Tinycards &ndash; Flashcards by Duolingo A new app from the team behind education app Duolingo. Create flashcards or select from the extensive library, and get gaming features (level up, memory strength bar) built in",
		"keywords": ["duolingo","education","store","check","create","duolingo","editors","everywhere","excellent","excursions","finder","flashcards","footnotes","forklift","forklift","markdown","music","setapp","share","shootout","songlink","strikethrough","support","tables","tinycards","webdav","access","among","another","available","behind","brought","built","command","connections","detailed","diffs","dozens","editors","education","excursions","extensible","extensive","fancy","features","flashcards","gaming","gives","hundreds","keyboard","latest","level","library","listen","looked","lookin","management","memory","monthly","ndash","options","overview","palette","partnership","recipient","remote","replacement","rivaling","rsquo","service","share","shortcuts","strength","subscription","support","today","tools","version","years"]
	},{
		"title": "MailButler's New  Business Plan Comes With Incredible Features For Teams",
		"url": "/2017/03/02/mailbutlers-new-business-plan-for-teams/",
		"tags": ["sponsor"],
		"date": "Mar 2<span>nd</span>, 2017",
		"ts": "1488463200",
		"summary": "Thanks to MailButler for sponsoring BrettTerpstra.com this week! Teamwork is a great thing. It involves different people contributing their individual knowledge to the common goal. In practice, however, teamwork requires some decent management that brings all the ideas together. This is where the special team management tools in MailButler Business come into play. They&rsquo;re specifically designed to keep your and your team&rsquo;s email flow highly effective and productive. Many of you have already heard about the productivity-boosting Mail plugin MailButler. It adds a variety of great features to Apple Mail, helping you get total control over your Inbox and saving you significant time every day. With MailButler you can easily schedule your emails, get detailed read receipts, and pause your inbox at any time. In addition, MailButler has amazing signature and message templates, and can be integrated with the leading cloud services. Recently MailButler has released its new Business plan with a set of new features. One of them, Advanced Tracking, allows to see when, where, how often, with what kind of device, and in which email client your messages have been viewed. Attached files and links included in the email can be tracked in the same way. Furthermore, MailButler provides its Business plan users with the sender&rsquo;s detailed information, such as social media profiles, affiliations, etc. It can also automatically forward your messages for further processing to your preferred CRM tool, such as Salesforce, Pipedrive, or others. Finally, MailButler offers a set of extremely useful Team Features: using a convenient dashboard, team managers can assign roles and tasks to team members, watch their activity and usage statistics, and share custom signatures or message templates. MailButler Business can be customized to each team&rsquo;s individual needs. It opens up completely new horizons, and is totally worth a try! For more information, see the MailButler Business page",
		"keywords": ["apple","email","mailbutler","plugin","advanced","apple","attached","brettterpstra","business","features","finally","inbox","mailbutler","pipedrive","recently","salesforce","sponsored","syndicate","teamwork","thanks","tracking","vsayd","activity","affiliations","allows","amazing","assign","automatically","blockquote","boosting","brettterpstra","brings","business","class","client","cloud","common","completely","contributing","control","convenient","custom","customized","dashboard","decent","designed","detailed","device","different","easily","effective","email","emails","features","files","great","heard","height","helping","highly","horizons","however","https","ideas","image","inbox","included","individual","information","integrated","involves","knowledge","lsmyrn","leading","links","loading","mailbutler","management","managers","media","members","message","messages","needs","nofollow","noscript","offers","often","opens","original","others","pause","people","picture","plugin","practice","preferred","processing","productive","productivity","profiles","provides","receipts","released","requires","roles","rsquo","saving","schedule","sender","services","share","signature","signatures","significant","social","source","special","specifically","sponsoring","srcset","statistics","tasks","teamwork","templates","title","together","tools","totally","tracked","uploads","usage","useful","users","using","variety","viewed","watch","where","width","worth"]
	},{
		"title": "PodTagger: automatic ID3 tagging for podcasts",
		"url": "/2017/03/01/podtagger-automatic-id3-tagging-for-podcasts/",
		"tags": ["scripting"],
		"date": "Mar 1<span>st</span>, 2017",
		"ts": "1488406740",
		"summary": "I have a couple of podcasts (Systematic, Overtired) that I do my own editing on. To save Moises over at ESN some time, I&rsquo;ve been tagging the MP3 files. Not surprisingly, I decided I wanted to automate this process. I wrote PodTagger to scratch the itch. It&rsquo;s based on my own workflow, but it&rsquo;s a pretty simple workflow that I think a lot of podcasters could integrate. It works like this: Format show notes in a Markdown file Add a YAML header with keys for title, episode number, etc. Put the show notes file in the same folder as the final mp3 Run PodTagger and all of the keys I need are applied to the mp3, including episode info, artist, publisher, compilation/album info, artwork, etc. For more details and download, see the project page! If you put it to use and have requests, feel free to add an issue on the GitHub page",
		"keywords": ["itunes","podcast","format","github","markdown","moises","overtired","podtagger","systematic","album","applied","artist","artwork","automate","based","compilation","couple","decided","details","download","editing","episode","files","folder","header","including","integrate","notes","podcasters","podcasts","process","project","publisher","requests","rsquo","scratch","simple","surprisingly","tagging","think","title","wanted","workflow","works","wrote"]
	},{
		"title": "Web Excursions for February 28, 2017",
		"url": "/2017/02/28/web-excursions-for-february-28-2017/",
		"tags": ["bookmarks"],
		"date": "Feb 28<span>th</span>, 2017",
		"ts": "1488290400",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Cassette Cassette for iOS records interviews and offers real-time speech-to-text transcription, and you can tap to bookmark and tag highlights in the moment. Built in search and summarization, and easy sharing. I&rsquo;ve been wanting to build a podcasting app with a similar feature set, so this is inspiring. Cerebro App &ndash; open-source productivity booster with a brain An open source alternative to Alfred and Spotlight. It won&rsquo;t replace LaunchBar or Alfred for me right now, but the API is robust and pretty straightforward, so I&rsquo;m watching the plugin development here. Milanote: The notes app for creative work. \"The notes app for creative work.\" A web-based, visual, unstructured space for ideas and note-taking. Similar to Curio in concept (though much smaller in feature scope). Mullvad - World-Class VPN Service A plug-and-play VPN service to keep your online activity, identity, and location private. Pay €5/mo with Bitcoin, cash, bank wire, credit card (PayPal), or Swish. AutoSleep I&rsquo;m in love with this one right now. It works with the Apple Watch to track your sleep, including heart rate and other Apple Watch health data, but reads it without needing an Apple Watch app. It figures out when you&rsquo;re sleeping automatically, no app to remember to start up when you&rsquo;re going to bed",
		"keywords": ["apple","store","watch","watchos","alfred","apple","autosleep","bitcoin","built","cassette","cerebro","check","class","curio","launchbar","milanote","mullvad","paypal","service","setapp","similar","spotlight","swish","watch","world","access","activity","apple","automatically","based","bookmark","booster","brain","brettterpstra","brought","build","cassette","cerebroapp","class","concept","creative","credit","development","excursions","feature","figures","going","health","heart","height","highlights","https","hundreds","ideas","identity","image","including","inspiring","interviews","itunes","ldquo","loading","location","media","milanote","monthly","mullvad","ndash","needing","noscript","notes","offers","online","original","partnership","picture","plugin","podcasting","private","productivity","rdquo","reads","record","remember","replace","right","robust","rsquo","scope","search","service","setapp","sharing","similar","sleep","sleeping","smaller","source","space","speech","srcset","store","straightforward","subscription","summarization","taking","title","today","track","transcribe","transcription","unstructured","uploads","visual","wanting","watching","webexcursionsplane","width","works"]
	},{
		"title": "Best of 2016: (Almost) all of the iOS favorites",
		"url": "/2017/02/27/best-of-2016-ios-apps/",
		"tags": [],
		"date": "Feb 27<span>th</span>, 2017",
		"ts": "1488221040",
		"summary": "Ok, so I promised this rundown of some of my favorite iOS apps at the end of the last \"Best of 2016\" post, which was weeks ago. Sorry about that. The sheer length of this list made it a bit of an overwhelming project. So here&rsquo;s Part 4, my top-of-mind iOS picks. It&rsquo;s a lot of apps, and frighteningly only about half of the ones I used/tested last year&hellip; Billings Pro: My favorite cross-platform time tracking and invoicing app Streak for Gmail: This deserves its own writeup, but it&rsquo;s the best free CRM tool I&rsquo;ve ever seen MeisterTask: My favorite project management tool, Kanban style Spark: My favorite email app on iOS PDFpen: My favorite tool for editing and annotating PDFs Slice: Amazing package tracker that picks up shipments and shipping numbers automatically OmniFocus 2: My favorite task manager on both Mac and iOS Fantastical : My favorite calendar app (again, both Mac and iOS) Timepage: Also great, Moleskin&rsquo;s answer to iOS calendaring Associate / Blink: Amazon/iTunes affiliate linking apps Terminology: My favorite dictionary app MindMeister: My favorite mind map realtime collaboration iThoughts: My favorite native mind mapping app MindNode: My other favorite mind mapping app Gboard: The best general-purpose iOS keyboard I&rsquo;ve ever found Hemingboard: iOS keyboard with synonyms, thesaurus, and other writing tools 1Writer: My preferred companion to nvALT (and any dropbox notes) Quip: My favorite tool for collaborative documents and spreadsheets Drafts: The best (and most flexible) tool for quickly capturing notes, ideas, and todos Ulysses: My favorite writing app when working with an external keyboard on iOS TextExpander: My favorite tool for email responses 1Password: Seriously, you need a password manager and this is the best one. Especially after Cloudbleed. Also excellent for credit cards, identities, and notes Pinswift: My current favorite Pinboard bookmarking and searching app Quicklytics: My favorite tool for Google Analytics (although the official one from Google is pretty great) TweetBot: My favorite Twitter client Charm for Twitter: A great tool for managing Tweet Collections Listomatic: An amazing tool for creating and curating Twitter lists Dungeon Boss: I&rsquo;m addicted Duet: Addicted on iOS and Apple TV Alto&rsquo;s Adventure: Addicted, iOS and Apple TV Crossy Roads: Super addicted, iOS and Apple TV with multi-player mode&hellip;",
		"keywords": ["apple","itunes","store","watchos","acoustic","addicted","adventure","aeropress","airplay","amazing","amazon","amplitube","analytics","annotable","apple","associate","beautiful","because","billings","blink","castro","center","charm","chords","cloudbleed","collections","coolors","crossy","darkroom","drafts","droppics","dropbox","dungeon","enlight","especially","exist","fantastical","flexible","flipboard","flying","gboard","gemini","gmail","google","guitar","hemingboard","indigo","jibjab","kanban","keeps","launch","listen","listomatic","meistertask","metro","metronome","mindmeister","mindnode","moleskin","moodnotes","mytouchhome","night","nuzzel","omnifocus","pdfpen","paprika","password","pinboard","pinswift","pixelmator","platejoy","prisma","prompt","pzizz","quicklytics","remove","reuters","roads","ruler","runkeeper","runner","screens","seriously","sketchparty","skyward","slash","sleepphones","slice","sorry","spark","streak","streamtome","super","tally","tangled","terminology","textexpander","tiles","timeglass","timepage","timer","tonebridge","tweetbot","twitter","ultimate","ulysses","vsilencer","watch","workflow","working","writer","wunderground","above","access","acoustic","addicted","addictive","adore","affiliate","again","aggregation","although","amazing","annotating","annotation","annoying","answer","asleep","astronomy","audio","automatic","automatically","automation","backgrounds","based","bathroom","before","between","bookmarking","breakfast","calendar","calendaring","capturing","cards","checking","client","coffee","collaboration","collaborative","color","companion","companions","computer","configurability","counting","couple","creating","creation","credit","cross","curating","darkroom","deserves","design","dictionary","document","documents","dozen","dropbox","editing","effects","email","embarrassing","especially","events","everyone","excellent","external","favorite","fitness","flexible","found","frighteningly","frustrating","general","generator","gives","great","guitar","handy","happening","health","hellip","hopefully","house","ithoughts","itunes","ideas","identities","image","images","indoor","intelligent","interface"]
	},{
		"title": "Web Excursions for February 22, 2017",
		"url": "/2017/02/22/web-excursions-for-february-22-2017/",
		"tags": ["bookmarks"],
		"date": "Feb 22<span>nd</span>, 2017",
		"ts": "1487795040",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Reverb for Amazon Alexa Access Alexa from your Mac (iOS version available as well. I just started playing with this and I&rsquo;m not even very familiar with Alexa yet and I&rsquo;m really impressed. The Petter App - Keep track of your pet&rsquo;s life. An iOS app that helps organize info about your pets, including contact info and records for vets, groomers, and pet sitters, plus notes, todo lists, and reminders synced to your calendar. Share the info easily with anyone who needs to know. Quick Peek I love this idea (tried to monkeywrench a similar system in Evernote years ago). Order QR-style stickers to put on boxes, photograph the contents of a box, then use the iOS app to associate the inventory in a searchable database. Songlink - Share music with everyone Instead of sharing a Spotify, Apple Music, YouTube, Google Music, or Deezer link, share the song with all the links and let people choose their preferred playback service. Data Selfie A Chrome extension that tracks you while you are on Facebook to show you your own data traces and reveal how machine learning algorithms use your data to gain insights about your personality. Oh, and hey, don&rsquo;t forget to order one of my latest T-shirts: BOLD Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["alexa","amazon","android","artificial","facebook","intelligence","internet","store","access","alexa","amazon","apple","check","chrome","deezer","evernote","facebook","google","mindmeister","music","petter","quick","reverb","selfie","share","songlink","spotify","youtube","algorithms","anyone","associate","available","boosting","boxes","brainstorming","brought","calendar","choose","collaborating","collaborative","contact","contents","database","easily","everyone","excursions","extension","familiar","forget","groomers","helps","impressed","including","insights","inventory","latest","learning","links","lists","machine","mapping","monkeywrench","music","needs","notes","organize","partnership","people","personality","photograph","playback","playing","preferred","productivity","reminders","reveal","rsquo","searchable","service","share","sharing","shirts","similar","sitters","software","started","stickers","style","synced","system","traces","track","tracks","tried","version","while","years"]
	},{
		"title": "MeisterTask: supercharged team productivity",
		"url": "/2017/02/16/meistertask-supercharged-team-productivity/",
		"tags": ["sponsor"],
		"date": "Feb 16<span>th</span>, 2017",
		"ts": "1487260800",
		"summary": "Thanks to MeisterTask for sponsoring BrettTerpstra.com this week! Since its launch in 2015, MeisterTask has quickly grown a cult following among developers, designers and other creatives. The app is available for Mac, Windows, iOS, Android, and as a web app. Created by MeisterLabs, the company behind the popular mind mapping tool MindMeister, MeisterTask is all about simplicity, usability and a beautiful design that makes task management not only efficient but even enjoyable. Using MeisterTask, teams organize and manage tasks in a customizable environment that perfectly adapts to their needs. Project boards can be set up and modified to support software sprints, Kanban boards, funnels and many other agile workflows, making them suitable for any department and industry. A personalized dashboard provides each team member with an overview of their open tasks, tracked time and notifications from other team members, bringing them up-to-date within seconds. Using \"Section Actions,\" managers can easily automate recurring steps in their team&rsquo;s workflow, ensuring team members work more consistently and get more done together. Among other things, Section Actions can be used to automatically move tasks to other projects, assign them to the right team member, or notify individual stakeholders about new tasks. MeisterTask comes readily integrated with the apps and platforms teams already use and love, such as Slack, Zendesk, GitHub and more than 500 other tools. MeisterTask offers a free plan with unlimited tasks, projects and collaborators, which includes up to 2 integrations. MeisterTask Pro is available for $7.50 per user/month (if paid annually) and offers unlimited integrations and Section Actions as well as customization options and access to the statistics and reports area, which provides managers with insight into their team&rsquo;s productivity and tracked time. Sign up today and supercharge your team&rsquo;s productivity",
		"keywords": ["android","meisterlabs","meistertask","productivity","windows","actions","among","android","brettterpstra","created","github","kanban","meisterlabs","meistertask","mindmeister","project","section","since","slack","thanks","using","windows","zendesk","access","adapts","agile","among","annually","assign","automate","automatically","available","beautiful","behind","boards","bringing","collaborators","comes","company","consistently","creatives","customizable","customization","dashboard","department","design","designers","developers","easily","efficient","enjoyable","ensuring","environment","funnels","grown","includes","individual","industry","insight","integrated","integrations","launch","makes","making","management","managers","mapping","member","members","modified","needs","notifications","offers","options","organize","overview","perfectly","personalized","platforms","popular","productivity","projects","provides","quickly","readily","recurring","reports","right","rsquo","seconds","simplicity","software","sponsoring","sprints","stakeholders","statistics","steps","suitable","supercharge","support","tasks","teams","today","together","tools","tracked","unlimited","usability","within","workflow","workflows"]
	},{
		"title": "Guest Post: A new approach to threat modeling",
		"url": "/2017/02/10/guest-post-a-new-approach-to-threat-modeling/",
		"tags": ["security"],
		"date": "Feb 10<span>th</span>, 2017",
		"ts": "1486735200",
		"summary": "I have a guest post from Ben Elijah, author of The Productivity Habits. He writes at Ink and Ben, and you can also find out more about him by listening to Systematic Episode 155, where he was a gracious guest. Now I&rsquo;ll turn it over to Ben and let him talk about security of the tools we use every day. The Snowden leaks made me question the trustworthiness of the systems and services we all rely on. Oh, of course there is the usual retort of the authoritarian; \"if you&rsquo;ve got nothing to hide you&rsquo;ve got nothing to fear\", though I rather think that those who argue this point ought to defecate in the street and tattoo their passwords on their foreheads. The thing is, my brain sucks. I find it difficult to hold pieces of information in my mind for long periods of time. A long time ago I decided that I wasn&rsquo;t going to accept these limitations. Methods like Getting Things Done helped enormously, as well as the ideas which found their way into The Productivity Habits. Task lists, note-taking apps, knowledge managers, collaboration services; gimme gimme gimme! I&rsquo;ve learned to rely on services and infrastructure which we now know are under pervasive surveillance. Working with information outside my head is as important to the way I live my life as any habit or belief. I&rsquo;m sure almost all of the services I might use have good intentions, but unless I encrypt my data, properly, before it leaves my computer with a key that only I have, I can safely assume that I&rsquo;m sharing it with the NSA and GCHQ. I believe that privacy is essential for creativity, and consequently, so are privacy-respecting tools. I cannot use untrustworthy tools to make things. Mass surveillance has motivated me to find alternatives. I&rsquo;m not going to give you a litany of surveillance counter measures; there are fantastic resources online which offer practical advice and useful recommendations. Each individual will have different needs and priorities. Someone who doesn&rsquo;t feel as deeply about surveillance as I do would probably worry less than I do about, for example using commercial cloud services. When I talk about information security people often go into what I call the \"hedgehog mode\": curl up into a ball, frightened by everything; feeling under threat from all sides because they don&rsquo;t know where the threat is coming from. Sometimes they end up locking themselves down so much that they can no longer work effectively. We should&hellip;",
		"keywords": ["elijah","security","diagram","elijah","episode","getting","habits","hedgehog","methods","modelling","productivity","snowden","sometimes","systematic","threat","tinfoil","working","accept","across","advice","almost","alternatives","argue","assess","associated","assume","author","authoritarian","avoid","backup","based","because","before","belief","believe","borders","brain","build","called","cannot","cloud","collaboration","coming","commercial","commonsense","computer","conduct","corporate","correctly","creativity","decide","decided","deeply","defecate","developed","different","difficult","doesn","effectively","encrypt","enormously","enough","equally","essential","everything","example","exploit","fairly","fantastic","feeling","foreheads","found","frightened","gimme","going","gracious","guest","habit","hedgehog","helped","ideas","identify","important","individual","individuals","information","infrastructure","intentions","interested","issues","keeps","knowledge","leaks","learned","leaves","limitations","listening","lists","litany","locking","longer","managers","measures","method","modelling","motivated","needs","nothing","offer","often","online","ought","outside","particular","passwords","people","periods","person","personal","pervasive","pieces","point","political","practical","priorities","privacy","procedure","productive","properly","rather","rationally","recommendations","relate","resources","respecting","retort","risks","rsquo","safely","scenario","security","sensible","services","sharing","sides","simple","skills","specific","street","sucks","surveillance","systems","taking","tattoo","technical","themselves","think","threat","threats","tools","travels","trustworthiness","under","understand","untrustworthy","useful","using","vulnerabilities","where","workflow","world","worry","writer","writes"]
	},{
		"title": "TextExpander for Teams: The Productivity Multiplier",
		"url": "/2017/02/09/textexpander-for-teams-the-productivity-multiplier/",
		"tags": ["sponsor","textexpander"],
		"date": "Feb 9<span>th</span>, 2017",
		"ts": "1486641600",
		"summary": "Thanks to TextExpander for Teams for sponsoring BrettTerpstra.com this week! TextExpander for Teams is a productivity multiplier; a shared knowledge base from which your team can communicate quickly and accurately. Imagine all of your team&rsquo;s common replies are worded by your best writers. Now imagine that they&rsquo;re immediately accessible and searchable through simple abbreviations and keyboard shortcuts. Then, imagine they&rsquo;re available on the platforms your team is on: Mac, iOS and now Windows. In short, that&rsquo;s TextExpander. Alone, TextExpander is the little tool which saves you on typing, big time. Together with your team, TextExpander is a platform for increasing productivity. Visit textexpander.com/brett to start your free trial, and learn how companies such as WordPress and Desk multiply their productivity using TextExpander",
		"keywords": ["iphone","keyboard","macos","shortcut","smile","textexpander","windows","alone","brettterpstra","imagine","teams","textexpander","thanks","together","visit","windows","wordpress","abbreviations","accessible","accurately","available","brett","common","companies","imagine","increasing","keyboard","knowledge","learn","little","multiplier","multiply","platform","platforms","productivity","quickly","replies","rsquo","saves","searchable","shared","short","shortcuts","simple","sponsoring","textexpander","through","trial","typing","using","worded","writers"]
	},{
		"title": "Curio 11. The Ultimate Project Notebook",
		"url": "/2017/02/02/curio-11-the-ultimate-project-notebook/",
		"tags": ["sponsor"],
		"date": "Feb 2<span>nd</span>, 2017",
		"ts": "1486036800",
		"summary": "Thanks to Zengobi, creator of Curio 11, for sponsoring BrettTerpstra.com this week! I&rsquo;m a long-time fan of Curio, and version 11 has a lot of powerful new features and enhancements. Check it out. Curio is an intuitive, freeform notebook application for the Mac with all the integrated tools you need to take notes, brainstorm ideas, collect research, and organize your tasks and documents. A single, incredibly powerful application where you can be more productive and focus on getting things done. And, with the brand new Curio 11 release, you have more productivity tools and features at your fingertips including master styles, stencils, and templates which can be dynamically updated with just a click throughout a project. In Curio, create a project to represent a real-world project that you&rsquo;re working on. Next fill it with everything related to that project, including notes, images, PDF&rsquo;s, documents, web links, multimedia, and much, much more. You can place this information anywhere on Curio&rsquo;s freeform idea spaces. Or use Curio&rsquo;s integrated mind maps, lists, tables, index cards, albums, pinboards, and stacks to organize your data into powerful collections. Next, associate tags, flags, checkboxes, and dates for easy searching and task management. Here&rsquo;s the key point: everything related to your project is stored, managed, and tracked within a single project file using a single, well-integrated application. First launched in 2004, Curio has thousands of customers around the world who depend on it for information gathering, brainstorming, and creative exploration. The new Curio 11 is available in Professional, Standard, and Core editions so you can purchase based on your feature needs. Learn more about Curio 11 and begin your 2-week trial today",
		"keywords": ["curio","macos","management","productivity","project","zengobi","brettterpstra","check","curio","first","learn","professional","standard","thanks","zengobi","albums","anywhere","associate","available","based","begin","brainstorm","brainstorming","brand","cards","checkboxes","click","collect","collections","create","creative","creator","customers","dates","depend","documents","dynamically","editions","enhancements","everything","exploration","feature","features","fingertips","flags","focus","freeform","gathering","getting","ideas","images","including","incredibly","index","information","integrated","intuitive","launched","links","lists","managed","management","master","multimedia","needs","notebook","notes","organize","pinboards","point","powerful","productive","productivity","project","related","release","research","rsquo","searching","single","spaces","sponsoring","stacks","stencils","stored","styles","tables","tasks","templates","thousands","throughout","today","tools","tracked","trial","updated","using","version","where","within","working","world"]
	},{
		"title": "Make friends and influence nerds with the Lab's new tee",
		"url": "/2017/01/24/make-friends-and-influence-nerds-with-the-new-labs-tee/",
		"tags": ["marketing"],
		"date": "Jan 24<span>th</span>, 2017",
		"ts": "1485287040",
		"summary": "Introducing the latest shirt available from my Teespring shop! It&rsquo;s bold and beautiful and reasonably priced. And by wearing some humane text syntax on your chest you&rsquo;ll garner immediate respect from other Markdown fans and find fun opportunities to explain nerdy topics to new people at parties and on dates. Especially on dates. The shirt is available in 3 colors and in men&rsquo;s, women&rsquo;s, and tank top versions. There&rsquo;s even a little BOLD sticker you can add on for your laptop or forehead. Buying my shirts is a great way to support The Lab, as well as adding to your collection of humorous nerd shirts. The t-shirts from the Rock Paper Wallpaper collection are available, too, and I&rsquo;m still quite proud of my Black Flag/Sex Pistols/Ramones mashup shirt. All of the shirts are available in the new and improved \"The Lab\" shop at Teespring. The campaigns are now automatically renewing, so as the goals are met and shirts are printed, the campaign will continue to be available. Plus, I get a cool address like \"teespring.com/stores/lab\". Go check it out and support The Lab (and me by proxy1)! Or would that be transitive property if the lab == me?&nbsp;↩",
		"keywords": ["brettterpstra","shirt","teespring","banner","black","brettterpstra","buying","especially","introducing","markdown","paper","pistols","ramones","teespring","wallpaper","adding","address","automatically","available","backlink","banner","beautiful","brettterpstra","campaign","campaigns","check","chest","class","collection","colors","continue","dates","endnotes","explain","fnref","footnote","footnotes","forehead","front","garner","goals","great","height","https","humane","humorous","image","immediate","improved","laptop","latest","ldquo","little","loading","mashup","media","nerdy","noscript","noteref","opportunities","original","paper","parties","people","picture","priced","printed","property","proud","proxy","rdquo","reasonably","renewing","reversefootnote","rsquo","shirt","shirts","source","srcset","sticker","store","stores","support","syntax","teespring","title","topics","trans","transitive","tshirt","tsmac","tsmic","uploads","versions","wallpapers","wanna","wearing","width","women"]
	},{
		"title": "Web Excursions for January 23, 2017",
		"url": "/2017/01/23/web-excursions-for-january-23-2017/",
		"tags": ["bookmarks"],
		"date": "Jan 23<span>rd</span>, 2017",
		"ts": "1485203880",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Markdown To Medium A quick way to publish a Markdown post to Medium. Includes the ability to detect code blocks and create gists so you can get Medium&rsquo;s syntax highlighting. How to customize the small control strip of the macOS touchbar even further A cool tip for further customizing the Touch Bar on a MacBook Pro by editing PLIST files. WebSlides: Create Beautiful HTML Presentations One of these days I&rsquo;ll get around to sharing my reviews of the plethora of HTML presentation slides (and all of my Markdown->HTML Deck scripts), but for now I&rsquo;ll just link the latest coolness. Lacks the presenter notes I love so much, but WebSlides is amazingly powerful for as simple as the markup is. Find a Remote Job Given the fact that if I ever decide to return to the workforce as part of a company, I&rsquo;ll absolutely want to work remotely (because who would want to leave MN in the middle of January?), this Product Hunt collection of apps for finding remote jobs is handy to have bookmarked. That was a really long sentence even without the parenthetical. Sorry. Opera Neon &ndash; The future of web browsers? Opera&rsquo;s vision for the future of desktop browsers. Split screen mode, quick image capture to a scrapbook with return links, pop-out video player, and a neat take on tab management. Commits.io I never love my code enough to memorialize it, but this service will take your code and create a good-looking poster you can hang on your wall. I like the idea, anyway&hellip; MacScripter / GUI scripting information I know AppleScript is slowly dying, and GUI scripting is, like, the worst part of automation with AS, but this script is a godsend even if you&rsquo;re using JSX. It takes any running app and creates a hierarchical list of every menu item in it, making it easy to script choosing them. Speedtest by Ookla for Mac I&rsquo;ve always liked Speedtest by Ookla, especially on my iPhone, and having it in my menubar is handy. And it&rsquo;s free. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["browser","opera","safari","touch","applescript","beautiful","check","commits","create","includes","lacks","macbook","macscripter","markdown","medium","mindmeister","ookla","opera","plist","presentations","product","remote","sorry","speedtest","split","touch","webslides","ability","amazingly","anyway","automation","because","blocks","bookmarked","boosting","brainstorming","brought","browsers","capture","choosing","collaborating","collaborative","collection","company","control","coolness","create","creates","customize","customizing","decide","desktop","detect","dying","editing","enough","especially","excursions","files","finding","gists","godsend","handy","having","hellip","hierarchical","highlighting","iphone","image","information","latest","leave","liked","links","looking","macos","making","management","mapping","markup","memorialize","menubar","middle","ndash","notes","parenthetical","partnership","player","plethora","poster","powerful","presentation","presenter","productivity","publish","quick","remote","remotely","return","reviews","rsquo","running","scrapbook","screen","script","scripting","scripts","sentence","service","sharing","simple","slides","slowly","small","software","strip","syntax","takes","touchbar","using","video","vision","workforce","worst"]
	},{
		"title": "New Feature in MailButler: Email Templates Inside Your Apple Mail",
		"url": "/2017/01/19/new-feature-in-mailbutler-email-templates-inside-your-apple-mail/",
		"tags": ["sponsor"],
		"date": "Jan 19<span>th</span>, 2017",
		"ts": "1484827200",
		"summary": "Thanks to MailButler for sponsoring BrettTerpstra.com this week! Email work is a routine, which too often involves repeating the same words over and over again. Writing identical texts to different recipients results in a tremendous time consumption and productivity decrease, and makes you miss on more important tasks. How to avoid this and keep your productivity up? The answer is: reusable email templates, which you compose for various situations beforehand, and, if needed, adjust to different conversations. Now, if you are an Apple Mail user, you are probably missing email templates, as well as the number of other email tools. Luckily, you can find them all in MailButler, the mail plugin, which adds a variety of great features to your Apple Mail, helping you get total control over your Inbox. Use MailButler Message Templates to send emails, which include information that you frequently share with different recipients. Compose and save emails as templates to use them again in future. New details can always be added before the template message is sent. Also, with MailButler you can easily schedule your emails to be sent later, get detailed information about when, where, and with which device your outgoing email has been viewed, and pause your inbox any time you want. Besides, MailButler has a lot of amazing signature templates, and can be integrated with the leading cloud and management services. MailButler is certainly something that saves you time from the very moment you start using it, so don’t hesitate to try it right now",
		"keywords": ["apple","client","email","gmail","mailbutler","apple","besides","brettterpstra","compose","email","inbox","luckily","mailbutler","message","messagetemplates","sponsored","syndicate","templates","thanks","vsayd","writing","added","adjust","again","amazing","answer","avoid","before","beforehand","blockquote","brettterpstra","certainly","class","cloud","compose","control","conversations","decrease","detailed","details","device","different","easily","email","emails","features","great","height","helping","hesitate","https","identical","image","important","inbox","information","integrated","involves","later","leading","loading","makes","management","media","message","missing","needed","nofollow","noscript","often","original","outgoing","pause","picture","plugin","productivity","recipients","repeating","results","reusable","right","routine","saves","schedule","services","share","signature","situations","source","sponsoring","srcset","tasks","template","templates","texts","title","tools","tremendous","uploads","using","variety","various","viewed","where","width","words"]
	},{
		"title": "Best of 2016: Mac apps for nerds",
		"url": "/2017/01/13/best-of-2016-mac-apps-for-nerds/",
		"tags": ["macos"],
		"date": "Jan 13<span>th</span>, 2017",
		"ts": "1484332860",
		"summary": "Welcome to part 3 of my \"Favorite Apps of 2016\" series. This installment focuses on Mac utilities and developer tools. If you&rsquo;re not a power user or a coder, there will probably be fewer apps of interest to you, but there are quite a few that are great gateways for intermediate users to start making more of their Macs. Check out the previous lists, too: Mac Productivity and Mac Creativity. CleanMyMac 3 I fell in love with this one in 2016. It covers all the bases that Cocktail did for me, plus disk scanning for large files, extension and launch agent management, and more. Again, not to be confused with MacKeeper. HoudahSpot I love Spotlight. I love HoudahSpot because it makes complex Spotlight queries easy while adding even more power. Recently-added Smart Folder export makes it helpful to me even outside of the app. As a side note, I built this series using HoudahSpot to find apps opened within a date range and export the list with just the app name and category columns as a CSV file. Then a little manual curation and a ruby script to sort the list into posts by category. Hammerspoon This utility takes a lot of fiddling, but for adding keyboard features and other customizations, it&rsquo;s pretty amazing. Finally a valid reason in my workflow to learn Lua. Default Folder X It&rsquo;s taken some time for Default Folder X to regain full functionality since El Capitan, but it&rsquo;s there now and I&rsquo;m glad to have it back. If Save and Open dialogs make you crazy, this is the solution. Droplr Droplr continues to be my favorite way to quickly share screenshots, animated gif recordings, and Markdown/Code notes. It&rsquo;s fast and well-integrated, and I love being able to use custom domains (ckyp.us, my Beastie Boys tribute of a domain name), sort my share history, and track analytics. Smart Sync Not pretty, but for the price the best folder-syncing solution I&rsquo;ve found for my needs. Keyboard Maestro In 2016 I finally got serious about learning Keyboard Maestro. I always knew it was amazing, thanks to bloggers like Gabe Weatherhead (MacDrifter), Patrick Welker (RocketInk), and Dr. Drang, but now I&rsquo;m actually starting to use it and realize the full scope of what it can do. Fileloupe This one is a bit pricy ($20) for my needs, but worth it in the end. Browse folders of files with split previews, metadata inspection, sorting, filtering, and flagging, video playback, and more. Monity When my other&hellip;",
		"keywords": ["apple","store","again","amazon","bartender","beastie","bettertouchtool","black","browse","capitan","check","clair","cleanmymac","cocktail","creativity","default","developer","drang","droplr","dropzone","favorite","feeder","filemerge","fileloupe","finally","folder","glacier","great","hammerspoon","hazel","houdahspot","hyper","import","javascript","jettison","kaleidoscope","keyboard","launchbar","launchcontrol","macdrifter","mackeeper","maestro","markdown","monity","netspot","obvious","omnifocus","omnifocuscolors","paintcode","patch","patrick","productivity","recently","regex","regexrx","rocketink","screen","sketch","smart","software","sparkle","spotlight","standouts","swift","switchup","today","tools","touch","utilities","viewer","weatherhead","welcome","welker","xcode","xsymbolicate","abandonware","ability","added","adding","agent","agents","amazing","analytics","animated","appcasts","applications","automatically","available","awesome","background","backup","bases","because","behind","bloggers","boost","bracket","built","cache","category","caveat","ceased","changes","choice","coder","color","columns","complex","confused","continues","converted","count","coverage","covers","crash","crazy","creating","curation","custom","customizable","customizations","daemons","describing","developer","developers","development","dialogs","documents","doesn","domain","domains","drawing","driven","drives","easily","eject","ejecting","enough","error","excellent","executing","export","extension","external","favorite","features","fewer","fiddling","files","filtering","finally","flagging","focuses","folder","folders","found","fully","functionality","gateways","generated","gives","going","graphics","great","hefty","hellip","helped","helpful","highlighting","highly","history","iterm","import","improving","initializing","inspection","installment","integrated","integration","interest","interesting","intermediate","issues","keeps","keyboard","keystroke","language","later","launch","learn","learning","lists","little","looking","macos","makes","making","management","managing","manual","mentioned","merge"]
	},{
		"title": "Web Excursions for January 12, 2017",
		"url": "/2017/01/12/web-excursions-for-january-12-2017/",
		"tags": ["bookmarks"],
		"date": "Jan 12<span>th</span>, 2017",
		"ts": "1484251560",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Tettra - A wiki for Slack Teams A simple internal wiki built for Slack teams. Hyper An HTML/JS/CSS terminal app for Mac, Windows, and Linux. Pretty sweet feature set. Zazu A new open source launcher for MacOS that is completely (and obligatorily) hackable. No built in integrations, extensible through a plugin architecture. PaceCoach - Pace your Music PaceCoach optimizes your songs to match your running cadence by automatically adjusting the tempo of your music to match your pace. Works with Spotify playlists or local music. The Type Snob - And how to turn into one Well-written and fun read from Pablo Stanley, discussing the basics of typography, typeface pairing, and designing for screen. Also see Typography tips for a better user experience from Studio Function. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["music","check","function","hyper","linux","macos","mindmeister","music","pablo","pacecoach","slack","spotify","stanley","studio","teams","tettra","typography","windows","works","adjusting","architecture","automatically","basics","boosting","brainstorming","brought","built","cadence","collaborating","collaborative","completely","designing","discussing","excursions","experience","extensible","feature","hackable","integrations","internal","launcher","local","mapping","match","music","obligatorily","optimizes","pairing","partnership","playlists","plugin","productivity","running","screen","simple","software","songs","source","teams","tempo","terminal","through","typeface","typography","written"]
	},{
		"title": "PDFpen Family: PDF Power for All Your Devices",
		"url": "/2017/01/12/pdfpen-family-pdf-power-for-all-your-devices/",
		"tags": ["sponsor"],
		"date": "Jan 12<span>th</span>, 2017",
		"ts": "1484222400",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! Edit PDFs like a Pro with the PDFpen Family: PDFpen for macOS, PDFpen for iPad & iPhone, and PDFpen Scan+. PDFpen for macOS is the ultimate PDF editing tool, your Swiss Army knife of PDF. Use them together to break the scan, print, sign, and fax cycle. Do it all paperless style. Add text and graphics. Make corrections. And much more. PDFpen Scan+ adds scanning and OCR to your mobile toolkit. OCR when away from your desk and scanner. Scan receipts with ease. See smilesoftware.com/brett for details on the PDFpen Family",
		"keywords": ["iphone","macos","sierra","brettterpstra","family","pdfpen","swiss","thanks","break","brett","corrections","cycle","details","device","editing","empowers","graphics","iphone","knife","macos","mobile","paperless","print","receipts","scanner","scanning","smilesoftware","sponsoring","style","together","toolkit","ultimate"]
	},{
		"title": "Best of 2016: Mac creativity",
		"url": "/2017/01/09/best-of-2016-mac-creativity/",
		"tags": ["macos"],
		"date": "Jan 9<span>th</span>, 2017",
		"ts": "1483988280",
		"summary": "Welcome to round two of this year&rsquo;s top picks from my own workflow! The last one was for productivity apps, and this one focuses on creative apps, encompassing audio, video, design, brainstorming, and writing. Affinity Photo This one has kind of amazed me over the last couple of months. I switched away from Photoshop years ago as my design needs became less, and have always found ways to replicate most of my Photoshop workflows in Acorn (and have also enjoyed Pixelmator). Affinity Photo, though, I actually find more interesting than Photoshop, and faster, and there&rsquo;s really nothing from the last version of PS I used (CS6) that I can&rsquo;t easily do in Affinity. Even most of my muscle memory transfers over, with similar sets of keyboard shortcuts. Squash An image compression app from Realmac, Squash 2 came out in 2016 and it&rsquo;s pretty amazing. It&rsquo;s deceptively powerful considering the \"cute\" interface and the absence of obvious controls. Just drag an image file on it and watch it losslessly compress with an \"oddly satisfying sound.\" The compression is top notch, and little gems like being able to handle RAW and PSD files into JPEGs without thinking twice is delightful. Sketch I&rsquo;ve been using Sketch since well before 2016, but the 2016 update was a big one, and I finally got into using the community developed plugins and found it to be more amazing than I&rsquo;d thought. Solid vector based tools and the ability to create automatic exports of assets at multiple sizes is perfect for web and app developers. Sip Sip is my new favorite color utility. I&rsquo;d been using Pochade 2 to gather colors with a picker or wheel and quickly turn them into hex, RGB, or NSColor strings. Sip does all this and more, with palette creation, color history, and an unobtrusive drawer on the side of your screen for quick access to any colors you want to save there. PicGIF I wrote about my workflow for creating and editing animated GIFs early in 2016, and one of the standout apps I mentioned was PicGIF. I use it primarily for converting video and screen recordings to animated gifs, but it offers good editing and optimization features as well. iThoughtsX iThoughts remains my favorite Mac app for mind mapping (which also remains my preferred method for brainstorming). The Marked 2 integration makes it great for blogging and writing, too. I use the MindMeister web app set up in Fluid for collaborative mind mapping&hellip;",
		"keywords": ["brainstorming","music","store","writing","acorn","affinity","again","apple","audio","composer","curio","design","drafts","fluid","google","jpegs","lightpaper","macbook","markdown","marked","mindmeister","mindnode","multimarkdown","music","nscolor","phillips","photo","photoshop","picgif","pixelmator","pochade","preview","realmac","stamp","scrivener","sketch","solid","spotify","squash","tableflip","ulysses","video","waltr","watch","welcome","while","writer","writing","ability","access","accuracy","added","advanced","allowing","allows","almost","amazed","amazing","amount","analog","animated","appear","appreciation","array","assets","audio","automatic","based","beautiful","became","because","before","between","blogging","brainstorming","capabilities","checking","collaborative","color","colors","combination","community","compress","compression","considering","continued","controls","converting","converts","couldn","couple","create","creating","creation","creative","customization","deceptively","dedicated","delightful","design","developed","developer","developers","development","device","discovery","dizzying","document","documents","drawer","easily","editable","editing","editor","encompassing","enjoy","enjoyed","entirely","everything","exciting","expand","exports","faster","favorite","feature","features","files","finally","flexibility","focuses","formatting","found","gather","geared","genuinely","global","grammar","great","handle","haven","history","ithoughts","ithoughtsx","image","impressive","improved","improvements","inject","integrates","integration","interesting","interface","joking","keyboard","larger","links","little","looking","losslessly","makes","management","mapping","memory","mention","mentioned","method","multiple","muscle","music","native","needs","nepotism","notch","notes","nothing","obvious","oddly","offers","often","opening","optimization","outlets","palette","picker","picks","playlists","plugins","podcast","point","posted","posts","powerful","preferred","preview","primarily","primary","productivity","projects","proofing","quality","quick","quickly","recently","recordings"]
	},{
		"title": "Best of 2016: Mac productivity",
		"url": "/2017/01/05/best-of-2016-mac-productivity/",
		"tags": ["macos"],
		"date": "Jan 5<span>th</span>, 2017",
		"ts": "1483653360",
		"summary": "Welcome to 2017, I hope you had a pleasant ending to a horrible, awful, very bad year. 2016 was an interesting year for me1. That said, my love of apps hasn&rsquo;t diminished. This is part one of some standout apps and products from this last year. Some new, some updated significantly, some just so useful I can&rsquo;t help mentioning them. I&rsquo;ve done this every year since 2011, and they&rsquo;re typically some of my most popular posts (among ones that don&rsquo;t get linked from bigger sites), so I hope you enjoy them. The posts in this year&rsquo;s series will include: Productivity and communication apps (macOS) Design, Photo, and Audio/Video (macOS) Utilities and Developer tools (macOS) Top iOS apps My favorite 2016 projects Probably a catch-all post for the less easily categorized picks Without further ado, part 1: Productivity and Communication. I&rsquo;m going to start with what we&rsquo;ll call \"the &lsquo;obvious&rsquo; list.\" They&rsquo;re apps I love and absolutely deserve mention, but that I&rsquo;ve talked about enough across my various channels that I probably don&rsquo;t need to elaborate on too much. Any section in this series that contains such apps will have an \"obvious list.\" Reeder 3 I&rsquo;d been using ReadKit as my newsreader for quite a while, but ran into some bugs around the same time Reeder 3 was released. The bugs are fixed now, but I&rsquo;d already switched to Reeder and and it&rsquo;s been great. By the way, I settled on Feedbin as my primary RSS sync, though FeedWrangler and Minimal Reader both have their strengths. Spillo I mentioned Spillo in my top picks last year as well. Despite the proliferation of \"read later\" services and Instapaper premium features recently becoming free, Pinboard remains both my primary bookmarking platform and my \"read later\" workflow. Spillo is still the best native client for Pinboard on the Mac. Billings Pro I&rsquo;ve used Billings and now Billings Pro for all of my freelance and sponsorship invoicing for years. Last year&rsquo;s addition of Apple Watch features has been very cool, but mostly I love it as a time tracking and invoice management system. Paprika Recipe Manager I never get tired of talking about Paprika, especially because this last year has led to some very serious culinary endeavors for me. Excellent parsing of online recipes, tagging and rating, and shared shopping lists and meal calendars make it indispensable year after year&hellip;",
		"keywords": ["apple","sierra","store","twitter","watchos","airmail","apple","audio","billings","brainwave","communication","design","developer","excellent","fantastical","feedwrangler","feedbin","instapaper","mailmate","manager","minimal","minnesota","nylas","obvious","omnifocus","paprika","password","photo","pinboard","postbox","productivity","readkit","reader","recipe","reeder","spillo","studio","taskpaper","textexpander","tweetbot","twitter","utilities","video","watch","welcome","across","added","airmail","amazing","ambient","among","apple","awful","backlink","beats","beautiful","because","becoming","began","bigger","billings","binaural","bookmarking","brainwave","brettterpstra","build","calendar","calendars","catch","categorized","channels","class","client","clients","close","communication","compensate","contains","culinary","daily","default","definitely","deserve","desperate","developers","diminished","dizzying","easily","elaborate","elegant","email","endeavors","ending","endnotes","enjoy","enough","especially","estimates","experimenting","fantastical","fascinating","favorite","favorites","features","feedwrangler","fixed","fnref","footnote","footnotes","found","freelance","frequencies","freron","function","getting","going","great","having","headphones","height","hellip","horrible","https","image","indispensable","instapaper","interesting","invoice","invoicing","isochronic","itunes","later","latest","ldquo","linked","lists","loading","lsquo","macos","macstories","management","manager","media","mention","mentioned","mentioning","minimalreader","mobile","mostly","music","native","newsreader","nicely","noscript","noteref","nothing","nylas","obvious","often","omnifocus","online","original","paprika","parsing","party","password","picks","picture","platform","pleasant","popular","postbox","posts","premium","primary","productivity","products","projects","proliferation","pulse","rating","rdquo","readkit","recently","recipe","recipes","reeder","refreshed","released","reliable","remains","reminders","replacing","reversefootnote","rsquo","search","section","series","serious","services","sessions","settled","shared","shopping","shortcomings"]
	},{
		"title": "Mega Snow & Winter Bundle from Feingold Design",
		"url": "/2016/12/22/mega-snow-and-winter-bundle-from-feingold-design/",
		"tags": ["sponsor"],
		"date": "Dec 22<span>nd</span>, 2016",
		"ts": "1482408000",
		"summary": "Thanks to MightyDeals for sponsoring BrettTerpstra.com this week! Mega Snow & Winter Bundle contains 9 high-quality design products perfect for wintertime. Simulating photorealistic snow or fog for photography, web, or print design has never been this easy. Various snow objects as well as 16 artistic snowflakes with transparent backgrounds will add a special touch to your Christmas and winter designs. The pack of winter photos and a frozen text effect rounds it out perfectly for social media posts, bloggers, or web shop owners. Real Snow Brushes for Photoshop CS1+: This high resolution brush for Photoshop was created to paint falling and lying snow or photorealistic frozen effects. Real Snow Photo Overlays for Photoshop CS4+: Just drag one of the 4 different snow-layer folders on top of your photo. Each of the 4 preconfigured overlays consist of 8 different layers to control the amount and depth of snow. Fog Effect for Photoshop CS4+: Realistic and lossless high quality fog effect prepared to fit for portrait, landscape, architecture or panorama photos. Easy to apply, just drag & drop the adjustment layer folder on top of your photo. Frozen Text Effect for Photoshop CS4+:The Photoshop document provides simple adjustment settings for text layers to create frozen looking text. The effect is prepared for dark and bright backgrounds and comes fine-tuned in 7 different sizes (6pt to 180pt). Snow Line Elements and Icicles : 27 photographic high-resolution snow line elements. Perfect to add more realistic snow to your web design, poster, greeting, or post card layouts. Cut out and prepared for easy use. Delivered in transparent PNG-files (38 files).  Seamless Snow Texture (1 JPG image file & PS Action): This seamless high-resolution snow texture was made to generate large snow surfaces. One JPG-file, 4717 × 3146 pixel, 300dpi. Including Photoshop Actions to generate large surfaces. Abstract Snowflakes (16 transparent PNG image files): This bundle includes 16 transparent snowflakes you can work with. Each flake is 2000 x 2000 pixel large (about 15 x 15 cm in print at 300 dpi). Abstract Snowflake Generator for Photoshop CS4+: Paint your own individual snowflakes with the help of this PSD-file. You only paint one-twelfth of the snowflake and the Smart Object does the rest for you. Winter & Snow Photo Pack (36 JPG image files): 36 winter photos matching a wide variety of snow related topics. Normally, this collection sells for $642, but for a&hellip;",
		"keywords": ["adobe","formats","image","photoshop","abstract","action","actions","brettterpstra","brushes","bundle","check","christmas","delivered","elements","frozen","generator","highlights","icicles","including","mightydeals","normally","object","overlays","paint","photo","photoshop","realistic","seamless","simulating","smart","snowflake","snowflakes","texture","thanks","various","winter","amount","apply","architecture","artistic","backgrounds","bloggers","brettterpstra","bright","brush","btsnowbdle","bundle","class","collection","comes","consist","contains","control","create","created","depth","design","designs","different","document","effects","elements","falling","files","flake","folder","folders","frozen","greeting","height","https","image","includes","individual","landscape","layer","layers","layouts","limited","loading","looking","lossless","lying","matching","media","megasnow","mightydeals","nofollow","noscript","objects","original","overlays","owners","paint","panorama","perfectly","photo","photographic","photography","photorealistic","photos","picture","pixel","portrait","poster","posts","preconfigured","prepared","price","print","products","provides","quality","realistic","regular","related","resolution","rounds","rsquo","seamless","sells","settings","simple","sizes","snowflake","snowflakes","social","source","special","sponsoring","srcset","strong","surfaces","texture","title","topics","touch","transparent","tuned","twelfth","uploads","variety","width","winter","wintertime"]
	},{
		"title": "MindMeister and Apple Watch",
		"url": "/2016/12/20/mindmeister-and-apple-watch/",
		"tags": ["applewatch","mindmapping","mindmeister","productivity"],
		"date": "Dec 20<span>th</span>, 2016",
		"ts": "1482258000",
		"summary": "It&rsquo;s not a secret that I&rsquo;m a big fan of MeisterLabs, especially their cloud-based mind mapping app, MindMeister. While I could talk at length about the amazing feature set and the benefits of realtime collaborative mind mapping, this post is about a certain MindMeister tool I just recently got around to exploring: Geistesblitz on the Apple Watch. Geistesblitz1 is a feature of MindMeister that lets you instantly add ideas to your mind maps maps. You define a default map for die Geistesblitze, then type in the idea and it&rsquo;s immediately sent to that map. Your ideas immediately show up on all your devices and those of anyone sharing the map. It started out as a Dashboard widget that I used frequently years ago (when I still used Dashboard for a lot of my productivity). The API has made it possible for me to create other integrations over the years, and it became a part of the iOS apps. It&rsquo;s now been deprecated there and is only available on MindMeister for Apple Watch. The Apple Watch version, though, is proving to be the most useful incarnation of the tool ever. I open the app, tap the big lighting bolt button, and speak my idea. When I tap \"done,\" it&rsquo;s sent to my default map instantly. I can also select a different map right before speaking the idea, and I can rapid-fire ideas at it. With my waterproof Series 2 watch, this means I can brainstorm in the shower, even without my AquaNotes (waterproof notepads are always worth mentioning, right?). I haven&rsquo;t figured out yet if there&rsquo;s a Siri command for ideenfindung, but I hope to learn it or see it added soon. I frequently recommend mind mapping as a brainstorming, organization, and even writing tool. MindMeister on the web, Android, and iOS and Apple Watch is an excellent brainstorming tool. It makes implementing collaborative mind maps a simple and enjoyable task, even when you&rsquo;re bringing in people who&rsquo;ve never mind mapped before. Check it out and get your Geistesblitz on",
		"keywords": ["android","apple","geistesblitz","mapping","store","watch","android","apple","aquanotes","check","dashboard","geistesblitz","geistesblitze","german","meisterlabs","mindmeister","proper","series","video","watch","while","youtube","added","amazing","anyone","apple","available","backlink","based","became","before","benefits","bottom","brainstorm","brainstorming","brettterpstra","bringing","button","certain","class","cloud","collaborative","command","container","create","default","define","deprecated","devices","different","endnotes","enjoyable","especially","excellent","exploring","feature","figure","figured","finding","fnref","footnote","footnotes","geistesblitz","haven","height","https","ideas","ideenfindung","image","implementing","incarnation","instantly","integrations","itunes","ldquo","learn","length","lighting","loading","looked","makes","mapped","mapping","media","meisterlabs","mentioning","mindmeister","noscript","notepads","noteref","organization","original","padding","people","picture","plural","possible","productivity","proving","rapid","rdquo","realtime","recently","recommend","reversefootnote","right","rsquo","secret","sharing","shower","simple","source","speak","speaking","srcset","started","style","title","uploads","useful","version","video","videoid","watch","waterproof","widget","width","worth","writing","years","youtube"]
	},{
		"title": "Web Excursions for December 19, 2016",
		"url": "/2016/12/19/web-excursions-for-december-19-2016/",
		"tags": ["bookmarks"],
		"date": "Dec 19<span>th</span>, 2016",
		"ts": "1482181440",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Franz A free messaging app that combines multiple chat/messaging services into one application. Slack, Facebook Messenger, WhatsApp, Telegram and many more. Glif I&rsquo;ve long been using the Glif from Studio Neat for mounting my iPhone on various tripods, and the latest version adds a feature I&rsquo;ve always wanted: a quick release lever. Plus portrait/landscape swivel, 3 tripod mounts for additional accessories, and an optional hand grip and wrist strap. Affinity Photo If you&rsquo;re looking for a Photoshop replacement, I&rsquo;m happy to offer this recommendation. I purchased it at the intro sale price ($39.99) last week and am very satisfied with it. All the photo editing tools you need, plus excellent selection tools, plugins, macros, text styles and a lot more. Gboard I&rsquo;ve mentioned this iOS keyboard before (Android version available now), but it&rsquo;s worth mentioning again (and it&rsquo;s a winner of a Product Hunt Golden Kitty award). It&rsquo;s my absolute favorite replacement for the default iOS keyboard, with swipe typing, built in Google search, GIF search, emoji search (though iOS has this by default now) and other niceties that make it amazing to use. How to Quickly Access your Pinboard Bookmarks Using LaunchBar, TextExpander and Related Apps A great post from Luc P. Beaudoin on using TextExpander and LaunchBar to make Pinboard even more useful. Journaling with Jekyll Craig Eley details his open source solution for daily journaling using Jekyll and Markdown",
		"keywords": ["android","facebook","iphone","messenger","snapchat","store","whatsapp","access","affinity","android","beaudoin","bookmarks","check","craig","facebook","franz","gboard","golden","google","jekyll","journaling","kitty","launchbar","markdown","messenger","photo","photoshop","pinboard","product","quickly","related","setapp","slack","studio","telegram","textexpander","using","whatsapp","absolute","access","accessories","again","amazing","available","award","before","brought","built","combines","daily","default","details","editing","emoji","excellent","excursions","favorite","feature","great","happy","hundreds","iphone","intro","journaling","keyboard","landscape","latest","lever","looking","macros","mentioned","mentioning","messaging","monthly","mounting","mounts","multiple","niceties","offer","optional","partnership","photo","plugins","portrait","price","purchased","quick","recommendation","release","replacement","rsquo","satisfied","search","selection","services","solution","source","strap","styles","subscription","swipe","swivel","today","tools","tripod","tripods","typing","useful","using","various","version","wanted","winner","worth","wrist"]
	},{
		"title": "Mail Productivity Tips For This Busy Time Of The Year",
		"url": "/2016/12/15/mail-dot-app-productivity-with-mailbutler/",
		"tags": ["sponsor"],
		"date": "Dec 15<span>th</span>, 2016",
		"ts": "1481803200",
		"summary": "Thanks to MailButler for sponsoring BrettTerpstra.com this week! As 2016 is coming to an end, it’s getting harder and harder to cope with the increasing email flow: everyone is trying hard to compete the tasks, review the results, and plan for the next year. A lot has been said about email productivity already, but in this busy time of the year it won’t hurt to remind ourselves about simple tricks that can help us save hours a day without making any dramatic changes to our daily routine. Schedule your emails to be sent later, if you can’t send them right away. If you have already composed the email, but it has to reach the recipient later at a specific time on a specific date, there is no need to wait for the right moment to send it. Scheduling will save you the need to keep everything in your mind, making space and time for other tasks. Track your emails in order to avoid unnecessary reminders and follow-ups. Tracking prevents you from sending repeating emails to a recipient, who hasn’t even read your first message yet. Read receipts make it easy to decide, whether to send a follow-up message, or wait a little longer instead. Pause your Inbox, and take a break from it to concentrate on other tasks. Sometimes it gets hard to concentrate on your daily tasks, if emails keep coming non-stop. Deal with your emails only during specific hours, which you set for yourself. Outside of these hours make sure that your Inbox is paused, and no incoming messages are distracting your attention. Now, if you are an Apple Mail user, you are probably missing some very important productivity tools. The answer to this problem is MailButler - a mail plugin, which adds a variety of great features to your Apple Mail, helping you get total control over your Inbox. With MailButler you can easily schedule your emails to be sent later, get detailed information about when, where, and with which device your outgoing email has been viewed, and pause your inbox any time you want. Besides, MailButler has a lot of amazing signature templates, and can be integrated with the leading cloud and management services. More information can be found on the official MailButler website. So check out this productivity booster now",
		"keywords": ["apple","mailbutler","apple","besides","brettterpstra","hacks","image","inbox","mailbutler","outside","pause","productivity","schedule","scheduling","sometimes","sponsored","syndicate","thanks","track","tracking","vsayd","watch","amazing","answer","avoid","blockquote","booster","break","brettterpstra","changes","check","class","cloud","coming","compete","composed","concentrate","control","courtesy","daily","decide","detailed","device","distracting","dramatic","easily","email","emails","everyone","everything","features","first","found","getting","great","harder","height","helping","hkqtzm","hours","https","image","important","inbox","incoming","increasing","information","integrated","later","leading","little","loading","longer","making","management","media","message","messages","missing","nofollow","noscript","official","original","ourselves","outgoing","pause","paused","picture","plugin","prevents","problem","productivity","reach","receipts","recipient","remind","reminders","repeating","results","right","routine","schedule","sending","services","signature","simple","source","space","specific","sponsoring","srcset","strong","tasks","templates","thewatchlist","title","tools","tricks","trying","unnecessary","uploads","variety","viewed","website","where","width"]
	},{
		"title": "Give the gift of Smile!",
		"url": "/2016/12/08/give-the-gift-of-smile/",
		"tags": ["sponsor"],
		"date": "Dec 8<span>th</span>, 2016",
		"ts": "1481198400",
		"summary": "Thanks to Smile for sponsoring BrettTerpstra.com this week! Give the gift of Smile, and give someone the most precious gift of all: more time. Help friends, colleagues, and loved ones save time by giving them a TextExpander subscription. Get them up to speed quickly by sharing some of your snippet groups. Help those you know wrangle PDFs with ease using PDFpen on the Mac. With PDFpen, they can scan, OCR, edit, and even export in Word format. It&rsquo;s the Swiss Army knife for PDFs. For folks on the go, give PDFpen for iPad & iPhone or PDFpen Scan+ using Gift This App on the App Store. For more info, see: smilesoftware.com/brett",
		"keywords": ["iphone","pdfpen","pdfpenpro","productivity","smile","textexpander","brettterpstra","pdfpen","smile","store","swiss","textexpander","thanks","brett","colleagues","export","folks","format","friends","giving","groups","iphone","knife","loved","precious","quickly","rsquo","sharing","smilesoftware","snippet","speed","sponsoring","subscription","using","wrangle"]
	},{
		"title": "SETAPP public beta is live, want access?",
		"url": "/2016/12/06/setapp-public-beta-is-live-want-access/",
		"tags": ["giveaway","marked"],
		"date": "Dec 6<span>th</span>, 2016",
		"ts": "1481050200",
		"summary": "I blogged about SETAPP recently, and am excited that they&rsquo;ve announced the opening of the public beta. I have some extra tokens available that can guarantee you access to the limited beta. I&rsquo;m having Killotron 3000 Giveaway Robot handle distribution, but pretty much anyone who adds their email can receive an access token. My previous post was from a developer perspective, but users are the ones I think will benefit most from SETAPP. From the launch press release: Setapp is a less risky and more flexible way to buy, sell and use Mac software, providing a better experience for both users and developers. Users pay $9.99 per month and get unlimited access to a handpicked collection of high-quality apps. Instead of paying for upgrades, expensive in-app purchases to unlock important product features, or freemium apps that &lsquo;trick&rsquo; users into buying more later, users of Setapp get access to fully functional software with the latest updates delivered continuously in the background. There are already some of the best apps for Mac in the lineup, including Ulysses, CodeRunner, Blogo, Marked 2, RapidWeaver 7, Eltima Player and Base. SETAPP plans to add up to 300 apps as the service gains momentum. If you want to try out the early access, just sign up below. I&rsquo;ll take signups for a couple of weeks but will email out batches of tokens regularly. Sorry, this giveaway has ended",
		"keywords": ["macos","store","blogo","coderunner","eltima","giveaway","killotron","marked","player","rapidweaver","robot","setapp","setapp","sorry","ulysses","users","access","announced","anyone","available","background","batches","below","benefit","blogged","buying","collection","continuously","couple","delivered","developer","developers","distribution","email","ended","excited","expensive","experience","extra","features","flexible","freemium","fully","functional","gains","giveaway","guarantee","handle","handpicked","having","important","including","later","latest","launch","limited","lineup","lsquo","momentum","opening","paying","perspective","plans","press","product","providing","public","purchases","quality","receive","recently","regularly","release","risky","rsquo","service","signups","software","think","token","tokens","trick","unlimited","unlock","updates","upgrades","users","weeks"]
	},{
		"title": "Web Excursions for November 28, 2016",
		"url": "/2016/11/28/web-excursions-for-november-28-2016/",
		"tags": ["bookmarks"],
		"date": "Nov 28<span>th</span>, 2016",
		"ts": "1480341600",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Thank You, Sal Sal Saghoians, \"Czar of User Scripting & Automation,\" has departed from Apple. This roundup compiled by Micahel Tsai offers highlights of comments from the community. I join the mass speculation that this is a bad sign for the future of people like me who spend as much time automating Macs as they do working on them. The reason this is notable is not that Sal was let go, it&rsquo;s that his position was eliminated. It&rsquo;s not a matter of personal conflict, it&rsquo;s a sign that Apple might not see a future for the automation that I love on macOS (and hoped for on iOS, someday). The new MacBook Pro is kind of great for hackers I&rsquo;m one of the many who have been critically speculating about the new MacBook Pro. It&rsquo;s something I don&rsquo;t usually do without getting my hands on one, but \"no escape key!\" and \"no function keys!\" and \"too many dongles, not enough ports!\" have escaped my mouth on several podcasts now. This is a refreshing take that goes back to my usual philosophy of \"give it a year and see if you still want to go backwards.\" Scheduling Due Dates in TaskPaper A tutorial on using TaskPaper&rsquo;s latest features to schedule due dates in your task lists with a popup date picker. The Linguistic Evolution of &lsquo;Like&rsquo; - The Atlantic People&rsquo;s sense of how they talk tends to differ from the reality, and the person of a certain age who claims never to use like \"that way\" as often as not, like, does &ndash; and often. Daft Science by Coins I can&rsquo;t help but post this. I&rsquo;ve long been a fan of mashup, dating back to the first time I heard SoulWax/2manydjs. The best part of mashup for me is that it can take two or more songs where I fail to appreciate one or more of the artists and change the context in a way that makes me&hellip; appreciate them. This album by Coins combines the group I consider to be the quintessential musical artists of my generation (The Beastie Boys) with an artist I had never bothered to appreciate to any extent (Daft Punk). Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["beastie","iphone","yauch","apple","atlantic","automation","beastie","check","coins","dates","evolution","linguistic","macbook","micahel","mindmeister","people","saghoians","scheduling","science","scripting","soulwax","taskpaper","thank","album","appreciate","artist","artists","automating","automation","backwards","boosting","bothered","brainstorming","brought","certain","change","claims","collaborating","collaborative","combines","comments","community","compiled","conflict","consider","context","critically","dates","dating","departed","differ","dongles","eliminated","enough","escape","escaped","excursions","features","first","function","generation","getting","great","group","hackers","hands","heard","hellip","highlights","hoped","latest","lists","lsquo","macos","makes","manydjs","mapping","mashup","mouth","musical","ndash","notable","offers","often","partnership","people","person","personal","philosophy","picker","podcasts","popup","ports","position","productivity","quintessential","reality","refreshing","roundup","rsquo","schedule","sense","several","software","someday","songs","speculating","speculation","spend","tends","tutorial","using","usually","where","working"]
	},{
		"title": "Marked 2.5.8",
		"url": "/2016/11/22/marked-2-dot-5-8/",
		"tags": ["markdown","marked","writing"],
		"date": "Nov 22<span>nd</span>, 2016",
		"ts": "1479842460",
		"summary": "The latest version of Marked 2 (2.5.8) is out with improvements and fixes. The price is $9.99 through (Cyber) Monday, after which it&rsquo;s going back to $13.99. Content blocks, you say? In light of iA Writer 4&rsquo;s ballyhooed \"content block\" features, I&rsquo;d like to highlight an existing feature in Marked: inclusion of external files (with nesting capabilities) has been there for years. You can \"transclude\" documents using MultiMarkdown syntax () or Marked&rsquo;s own syntax which allows you to quickly define the content as Markdown to process (), external code source (), or raw text (),which works well for inserting HTML without choking the Markdown processor). Marked also handles Leanpub and formatted indexes. (I&rsquo;ll probably add iA Writers \"yet another syntax\" for compatibility as well.) Add in Marked 2&rsquo;s support for Scrivener document previewing, and support for Ulysses, iThoughts X, MindNode, MarsEdit, nvALT, MultiMarkdown Composer, Xcode playground files, and more, and it has just about every writing workflow covered. I&rsquo;m continuing to update the documentation. Marked 2 has been through a lot of changes since I created the initial help and screenshots, so I&rsquo;m working to keep it updated. In case you missed it, I ended up building my own help reader for Marked 2, which includes better search, bookmarking, and indexing than the Apple Help System offers. You can also search for topics directly from the Help menu item, just hit ⌘? and start typing keywords. As an advanced tip, the URL handler can also access the help system: ([page:optional section). You can copy the link for any page/section by hovering over the headline for that section and right clicking (Copy Link) on the bookmark icon that appears next to it. Other improvements include an update to the syntax highlighting library with support for new languages. I&rsquo;ve improved the Autoscroll feature (press s when previewing, and Shift-S to reverse) with better scroll speed defaults and range. You can also click the scroll meter to pause/start and drag to adjust speed. There are also some fixes, major and minor. Theme updates (left padding issue in Swiss, doubled fonts in Upstanding Citizen exports), TextBundle handling, and double-encoded ampersands coming out of Scrivener previews. The Spelling/Grammar feature has also received a lot of my time and love. First, \"Restore purchases\" for the add-on now works properly in the direct version. I&hellip;",
		"keywords": ["handler","marked","store","apple","autoscroll","bitwriter","check","citizen","composer","content","cyber","documents","first","grammar","handler","improved","leanpub","markdown","marked","marsedit","mindnode","monday","moving","multi","multimarkdown","overview","pages","presentation","restore","scrivener","shift","special","spelling","store","support","swiss","syntax","system","textbundle","theme","ulysses","updates","upstanding","writer","writers","xcode","access","adjust","advanced","advantage","allows","ampersands","another","appears","ballyhooed","block","blockquote","blocks","bookmark","bookmarking","brettterpstra","building","capabilities","changes","check","choking","class","click","clicking","coming","compatibility","content","continuing","counts","covered","created","creating","customers","customizable","decks","defaults","define","development","direct","directly","display","document","documents","double","doubled","easier","encoded","ended","errors","export","exports","external","feature","features","fileincludes","files","finally","finishing","fixed","fixes","fonts","footers","format","formatted","going","handler","handles","handling","haven","headers","headline","height","hellip","highlight","highlighter","highlighting","hovering","https","ithoughts","image","improved","improvements","includes","inclusion","indexes","indexing","initial","inserting","keywords","language","languages","lasts","latest","ldquo","library","light","loading","major","marked","markedhelp","markedicon","media","merge","meter","minor","missed","moving","navigation","nesting","noscript","nvalt","offers","optional","original","output","padding","pause","picked","picture","plaintext","planning","playground","press","previewing","previews","price","priority","process","processor","properly","purchases","quickly","range","rdquo","reader","received","reverse","rewrite","right","roadmap","rouge","rsquo","screenshots","scrivener","scroll","search","section","sharing","since","slide","source","speed","splitting","srcset","strong","support","syntax","system"]
	},{
		"title": "Rindle: Simplify Your Workflow",
		"url": "/2016/11/17/rindle-simplify-your-workflow/",
		"tags": ["sponsor"],
		"date": "Nov 17<span>th</span>, 2016",
		"ts": "1479391200",
		"summary": "Thanks to Rindle for sponsoring BrettTerpstra.com this week! Wouldn’t it be great to have a personal task management app that integrates with the tools you already use, allowing you to seamlessly view all of your tasks on one screen? Rindle does this and more, making it easier than ever to keep your day organized. Your tasks are everywhere: email, to-do apps, project management apps, and collaboration tools&hellip; to name a few. Many people are using multiple tools for their personal tasks and projects, which wastes time and complicates their day. Rindle brings all of your tasks together into one place, helping you to simplify your personal workflow. Leverage the tools you already use to centralize your information into one easy location. If you use apps like Gmail, Slack, Trello, Basecamp, Todoist and Github, you’re going to love how you can aggregate all of your tasks into a single screen, providing some zen to your hectic day. If you are jumping between tabs in your browser to track down work, or sifting through email to remember something you had to get done, then you are wasting precious time each day. Let Rindle simplify your workflow.We’re offering 25% off the first year for early adopters. Get started for FREE",
		"keywords": ["management","rindle","workflow","basecamp","brettterpstra","github","gmail","leverage","rindle","slack","sponsored","syndicate","thanks","todoist","trello","vsayd","wouldn","adopters","allowing","between","blockquote","brett","brettterpstra","brings","browser","centralize","class","collaboration","complicates","easier","email","everywhere","first","fowzux","going","great","hectic","height","hellip","helping","https","image","information","integrates","jumping","loading","location","making","management","media","multiple","nofollow","noscript","offering","organized","original","people","personal","picture","precious","project","projects","providing","remember","rindle","screen","seamlessly","sifting","simplify","single","source","sponsoring","srcset","started","tasks","terpstra","through","title","together","tools","track","uploads","using","wastes","wasting","width","workflow"]
	},{
		"title": "Web Excursions for November 15, 2016",
		"url": "/2016/11/15/web-excursions-for-november-15-2016/",
		"tags": ["bookmarks"],
		"date": "Nov 15<span>th</span>, 2016",
		"ts": "1479235860",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Hop - Email Messaging Superpowers This looks like a really smart way to handle email threads. I doubt it would suit my needs the way Spark does, but I think the conversion of quoted email conversations into Messages-style conversations is brilliant. gitmoji - An emoji guide for your commit messages An emoji guide for your GitHub-hosted commit messages. hartator/wayback-machine-downloader I had cause to need to recover an entire defunct section of a website recently. It existed in good shape on the Wayback Machine, but downloading sites isn&rsquo;t easy there. I searched for solutions a while, and eventually found wayback-machine-downloader. Worked like a charm. derickfay/key2txt: Convert Keynote files to text (Taskpaper and Markdown) and back I needed to take a presentation Keynote and turn it into a workable outline, and these scripts worked a charm. Google Advanced Search Query Syntax I know most of these, and I almost exclusively use DuckDuckGo, but I think anyone who reads this blog is probably interested in some of the advanced search syntax that Google provides. Trump Tracker Regardless of your political leanings, I think we&rsquo;re all waiting (read: nervous) to see what electoral promises Trump actually follows through on. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["emoji","github","google","machine","unicode","wayback","advanced","check","convert","duckduckgo","email","github","google","keynote","machine","markdown","messages","messaging","mindmeister","query","regardless","search","spark","superpowers","syntax","taskpaper","tracker","trump","wayback","worked","advanced","almost","anyone","boosting","brainstorming","brilliant","brought","cause","charm","collaborating","collaborative","commit","conversations","conversion","defunct","derickfay","doubt","downloader","downloading","electoral","email","emoji","entire","eventually","excursions","existed","files","follows","found","gitmoji","guide","handle","hartator","hosted","interested","leanings","looks","machine","mapping","messages","needed","needs","nervous","outline","partnership","political","presentation","productivity","promises","provides","quoted","reads","recently","recover","rsquo","scripts","search","searched","section","shape","sites","smart","software","solutions","style","syntax","think","threads","through","waiting","wayback","website","while","workable","worked"]
	},{
		"title": "nvALT 2.2.7. Everything'll be fine.",
		"url": "/2016/11/14/nvalt-2-dot-2-7-everythingll-be-fine/",
		"tags": ["nvalt"],
		"date": "Nov 14<span>th</span>, 2016",
		"ts": "1479161880",
		"summary": "There&rsquo;s an update for nvALT available (2.2.7) via nvALT->Check for Updates, or download directly below. It&rsquo;s a lightweight bugfix, no big deal. Primarily for those who noticed that it no longer automatically focuses the search field when you bring it up via hotkey or menu item. nvALT v2.2.8 (128) Download nvALT v2.2.8 (128) A fork of Notational Velocity with MultiMarkdown preview and advanced Markdown editing capabilities. Other good stuff. Published 06/08/13. Updated 09/19/17. Changelog Donate &bull; More info&hellip; Your support is greatly appreciated! Or me on GitHub",
		"keywords": ["keyboard","shortcut","changelog","check","donate","download","github","markdown","multimarkdown","notational","primarily","published","updated","updates","velocity","advanced","appreciated","automatically","available","below","bring","bugfix","capabilities","directly","download","editing","field","focuses","greatly","hellip","hotkey","lightweight","longer","noticed","nvalt","preview","rsquo","search","stuff","support"]
	},{
		"title": "Natural language dates anywhere with Keyboard Maestro",
		"url": "/2016/11/14/natural-language-dates-anywhere-with-keyboard-maestro/",
		"tags": ["keyboard","keyboardmaestro","scripting"],
		"date": "Nov 14<span>th</span>, 2016",
		"ts": "1479132000",
		"summary": "Updated: if you experienced a JavaScript compiler error , download the 1.0.1 version below. I&rsquo;ve been learning to put my just-for-fun coding projects off until the weekend. (You know, so I can work on apps that actually make money.) This weekend&rsquo;s project was spawned by my finally starting to play around with Keyboard Maestro, and the discovery that you can use regular expressions to trigger macros. While I generally use TextExpander to trigger my \"Make A Date\" routines and input the natural language date in a fill-in popup, I was curious about the possibility of just typing delimiters and having the text between processed inline. Thus, \"Make a Date for Keyboard Maestro\" was born. In any app, while I&rsquo;m typing I can use to start a date string for conversion, and end it with . Typing will output \"2016-11-13 3:00pm.\" Or get an ISO timestamp with : \"Sat Nov 12 2016 3:52 PM.\" I can even create unix timestamps quickly using : 1478905200. There&rsquo;s so much more I&rsquo;ll never remember it beyond what I use often, but I did write it all down&hellip; The script behind the macro is written in JavaScript and uses Sugar.js for the language processing. As per my usual, I went way too far with customizing and handling edge cases. You can see all of the documentation on the project page. I know this is of limited use to most people, but if you like it, feel free to donate! It's the natural language for I love what you do. Or me on GitHub! Make A Date for Keyboard Maestro v1.0.1 Download Make A Date for Keyboard Maestro v1.0.1 A Keyboard Maestro macro that expands a date using natural language Published 11/12/16. Updated 11/17/16. Changelog Donate &bull; More info&hellip",
		"keywords": ["keyboard","language","maestro","natural","changelog","donate","download","github","javascript","keyboard","maestro","published","quick","sugar","textexpander","typing","updated","while","behind","below","between","beyond","coding","compiler","conversion","create","curious","customizing","delimiters","discovery","donate","download","error","example","expands","experienced","expressions","finally","generally","handling","having","hellip","inline","input","interest","language","learning","limited","macro","macros","money","natural","often","output","people","pique","popup","possibility","processed","processing","project","projects","quickly","regular","remember","routines","rsquo","script","spawned","starting","string","timestamp","timestamps","trigger","typing","using","version","weekend","while","write","written"]
	},{
		"title": "PDFpenPro: Powerful, Easy PDF Editing",
		"url": "/2016/11/10/pdfpenpro-powerful-easy-pdf-editing/",
		"tags": ["sponsor"],
		"date": "Nov 10<span>th</span>, 2016",
		"ts": "1478779200",
		"summary": "Thanks to PDFpen Pro for sponsoring BrettTerpstra.com this week! PDFpenPro is the giant Swiss army knife for PDFs, with so many tools it can barely fit in your pocket. PDFpenPro can add signatures, edit text and images, perform OCR on scanned documents, and export in Microsoft Word format. Only PDFpenPro can create an interactive PDF form, build a table of contents, set document permissions, and convert websites to multi-page PDFs. PDFpenPro 8 can now create Portfolio documents to combine related files into a single PDF, and it can attach files to your PDFs. Get 20% off new PDFpenPro 8 purchases in November by visiting smilesoftware.com/brett",
		"keywords": ["acrobat","adobe","annotated","bibliography","pdfpen","pdfpenpro","smile","brettterpstra","microsoft","pdfpen","pdfpenpro","portfolio","swiss","thanks","attach","barely","brett","build","contents","convert","create","document","documents","export","files","format","giant","images","interactive","knife","multi","permissions","pocket","purchases","related","scanned","signatures","single","smilesoftware","sponsoring","table","tools","visiting","websites"]
	},{
		"title": "Setapp: Sustainable recurring revenue for Mac developers",
		"url": "/2016/11/09/setapp-sustainable-recurring-revenue-for-mac-developers/",
		"tags": ["macos","marketing"],
		"date": "Nov 9<span>th</span>, 2016",
		"ts": "1478703600",
		"summary": "We&rsquo;re seeing more and more Mac apps switching to subscription-based models. It reminds me of premium channels on my Apple TV: I cut my cable a long time ago, and was happy to have the option to add HBO, Showtime, and others without needing a cable subscription&hellip; but the cost added up fast. It&rsquo;s not going to be a sustainable model for users who need more than a couple of apps. A little while ago MacPaw (developers of CleanMyMac and the DevMate platform, among other things) contacted me about an opportunity to switch Marked 2 to a subscription model. I balked. The idea of creating a continuous revenue stream for my apps is appealing, but it&rsquo;s expensive for users and I&rsquo;ve never seen it as a viable business model for tools like Marked. I let them pitch me, though. What they presented immediately registered as a viable, profitable solution for Mac software users. It&rsquo;s called Setapp, and it&rsquo;s an app store where users subscribe at a flat rate and get access to all of the apps in the Setapp store. No trials, no upsells, no in-app purchases; pay the subscription fee and get full access to everything. It&rsquo;s going to be an invite-only app store, with carefully selected apps representing only the best in their niche. Developers get paid based on a formula that uses the price of the app and the total users for the month to calculate a monthly payout. The Mac App Store has, overall, been good for me, but I&rsquo;ve been lucky. Apple has featured Marked a couple of times, and it&rsquo;s rankings have remained reasonable over time. However, it&rsquo;s never likely to turn up in a search that doesn&rsquo;t include \"Markdown,\" so discoverability for new customers hasn&rsquo;t been optimal. My apps on Setapp, by way of its hand-picked selection of paid-only apps, will innately have better discoverability, even if search were to turn out to be less than satisfactory. Adding the Setapp library to Marked took a couple of lines of code. The only thing that took some reconfiguring for me was my in-app purchases and trial checks, which needed a build target that circumvents them (because Setapp users get everything included). I&rsquo;ve already been through the review process on Setapp &mdash; it&rsquo;s fast, clear, and provides excellent communication and suggestions. What clenched my decision to include Marked 2 in Setapp is the fact that I can still sell directly and via the Mac App Store. So I&rsquo;m hoping to get&hellip;",
		"keywords": ["macpaw","setapp","store","adding","apple","cleanmymac","devmate","developers","however","macpaw","markdown","marked","setapp","showtime","store","access","added","among","appealing","balked","based","because","build","business","cable","called","carefully","channels","check","checks","circumvents","clear","clenched","coming","communication","contacted","continuous","couple","creating","customers","decision","developers","directly","discoverability","doesn","eliminate","everything","excellent","expensive","featured","formula","going","happy","having","hellip","hoping","included","innately","invite","library","likely","little","lucky","mdash","model","models","monthly","needed","needing","niche","optimal","options","others","overall","payout","picked","pitch","platform","premium","presented","price","process","profitable","provides","purchases","rankings","reasonable","reconfiguring","registered","remained","reminds","representing","revenue","right","rsquo","satisfactory","search","seeing","selected","selection","software","solution","store","stream","subscribe","subscription","suggestions","sustainable","switch","switching","target","think","through","times","tools","touch","trial","trials","upsells","users","viable","where","while"]
	},{
		"title": "Web Excursions for November 04, 2016",
		"url": "/2016/11/04/web-excursions-for-november-04-2016/",
		"tags": ["bookmarks","programming"],
		"date": "Nov 4<span>th</span>, 2016",
		"ts": "1478264400",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Eve This looks pretty amazing. Just what I need, another language to learn.> Eve is a programming language and IDE based on years of research into building a human-first programming platform. From code embedded in documents to a language without order, it presents an alternative take on what programming could be - one that focuses on us instead of the machine. App Launch Checklist Optimize your launch plan with the App Launch Checklist from Branch. Clara An email-based digital assistant that conversationally schedules meetings for you. There are quite a few of them these days, and I don&rsquo;t schedule enough meetings to really field test them all, but Clara seems pretty slick. Openwhyd I&rsquo;m enjoying this one. Openwhyd lets you gather songs and playlists from YouTube, Soundcloud, Vimeo, Deezer, and more, with community sharing and music discovery. The web app is slick as well. DevTools Tips For Sublime Text Users &ndash; Google Developers &ndash; Medium If you&rsquo;re a Sublime user who also works in Chrome&rsquo;s DevTools, there&rsquo;s a lot of knowledge overlap you could be taking advantage of. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["developer","marketing","music","programming","branch","check","checklist","chrome","clara","deezer","devtools","developers","google","launch","medium","mindmeister","openwhyd","optimize","soundcloud","sublime","users","vimeo","youtube","advantage","amazing","another","assistant","based","boosting","brainstorming","brought","building","collaborating","collaborative","community","conversationally","digital","discovery","documents","email","embedded","enjoying","enough","excursions","field","first","focuses","gather","human","knowledge","language","launch","learn","looks","machine","mapping","meetings","music","ndash","overlap","partnership","platform","playlists","presents","productivity","programming","research","rsquo","schedule","schedules","seems","sharing","slick","software","songs","taking","works","years"]
	},{
		"title": "Great games, just in time for the holidays: SketchParty TV and Truth Truth Lie",
		"url": "/2016/11/03/great-games-just-in-time-for-the-holidays-sketchparty-tv-and-truth-truth-lie/",
		"tags": ["sponsor"],
		"date": "Nov 3<span>rd</span>, 2016",
		"ts": "1478170800",
		"summary": "Thanks to Magnate Interactive, creator of SketchParty TV and Truth Truth Lie, for sponsoring BrettTerpstra.com this week! Looking for hilariously fun things to do with friends this holiday season? Magnate Interactive has just released great updates to two of their most popular iOS games, Truth Truth Lie for iMessage and SketchParty TV for the Apple TV. Apple TV owners: if you like playing games with friends and family in person, SketchParty TV is for you. It&rsquo;s been hand-picked by Apple as a \"Greatest Party Game\", received a mention from Eddy Cue on-stage at the 2016 WWDC Keynote, and has terrific reviews from people all over the globe. It&rsquo;s like Pictionary for the Apple TV. You take turns drawing the word that appears on your iPad or iPhone, and the drawings appear in real-time on your HDTV. Your teammates are frantically trying to guess before time runs out. It&rsquo;s a lot of fun, and perfect for the holidays! SketchParty TV is regularly $9.99, but to celebrate the release of support for tvOS 10 Dark Mode, it&rsquo;s currently just $4.99 for a limited time. Get SketchParty TV for iOS at SketchParty.tv. Launched for the iMessage App Store with iOS 10, Truth Truth Lie (TTL) has had over 150,000 players so far. It&rsquo;s the classic game of Two Truths and a Lie: record three video clips, then send a single video to friends to guess which one isn&rsquo;t true. TTL 2.0 was just released, with a brand new Text Mode. It&rsquo;s great for those times you don&rsquo;t really want to record a video. Best of all, Truth Truth Lie is a free download! (With optional in-app purchases.) Learn more at TruthTruthLie.co",
		"keywords": ["apple","interactive","iphone","itunes","magnate","messages","sketchparty","store","truth","apple","brettterpstra","greatest","interactive","keynote","launched","learn","looking","magnate","party","pictionary","sketchparty","store","thanks","truth","truthtruthlie","truths","appear","appears","before","brand","celebrate","classic","clips","creator","download","drawing","drawings","family","frantically","friends","games","globe","great","guess","hilariously","holiday","holidays","imessage","iphone","limited","mention","optional","owners","people","person","picked","players","playing","popular","purchases","received","record","regularly","release","released","reviews","rsquo","season","single","sponsoring","stage","support","teammates","terrific","times","trying","turns","updates","video"]
	},{
		"title": "The WALTR 2 Giveaway winners",
		"url": "/2016/11/02/the-waltr-2-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Nov 2<span>nd</span>, 2016",
		"ts": "1478107680",
		"summary": "If you&rsquo;re on the list and haven&rsquo;t heard from me, feel free to check in and let me know. If you didn&rsquo;t win, you can still get a free trial and test out WALTR&rsquo;s amazing Mac-to-iOS media transfers at the WALTR 2 webpage",
		"keywords": ["iphone","softorino","waltr","congratulations","hamburger","janina","kevin","murray","waltr","amazing","check","giveaway","haven","heard","media","rsquo","transfers","trial","webpage","winners"]
	},{
		"title": "nvALT 2.2.6 (124) because 123 is never enough",
		"url": "/2016/11/01/nvalt-2-dot-2-6-124-because-123-is-never-enough/",
		"tags": ["nvalt"],
		"date": "Nov 1<span>st</span>, 2016",
		"ts": "1478023980",
		"summary": "There&rsquo;s a quick update for nvALT available. These things do seem to happen in multiples. It corrects a little mistake in the handling of the menu bar item in 10.9.5. Most people probably didn&rsquo;t even notice it. I sure didn&rsquo;t. It does contain what may be my best Sparkle update notification work ever, though, so enjoy that. nvALT v2.2.8 (128) Download nvALT v2.2.8 (128) A fork of Notational Velocity with MultiMarkdown preview and advanced Markdown editing capabilities. Other good stuff. Published 06/08/13. Updated 09/19/17. Changelog Donate &bull; More info&hellip",
		"keywords": ["changelog","donate","download","markdown","multimarkdown","notational","published","sparkle","updated","velocity","advanced","available","capabilities","contain","corrects","editing","enjoy","handling","happen","hellip","little","mistake","multiples","notification","nvalt","people","preview","quick","rsquo","stuff"]
	},{
		"title": "nvALT 2.2.5 (123)",
		"url": "/2016/10/31/nvalt-2-dot-5-123/",
		"tags": ["nvalt"],
		"date": "Oct 31<span>st</span>, 2016",
		"ts": "1477942320",
		"summary": "David and I just sent out one more nvALT release. Version 2.2.5 contains the following bugfixes: As always, if you want to report bugs, please use the GitHub issues for nvALT. nvALT reports via Twitter, email, and the red phone in my office will probably be ignored. Your support makes new things possible. Or me on GitHub! nvALT v2.2.8 (128) Download nvALT v2.2.8 (128) A fork of Notational Velocity with MultiMarkdown preview and advanced Markdown editing capabilities. Other good stuff. Published 06/08/13. Updated 09/19/17. Changelog Donate &bull; More info&hellip",
		"keywords": ["markdown","notational","velocity","changelog","check","david","donate","download","github","improvements","markdown","multimarkdown","notational","password","published","removed","sierra","twitter","updated","updates","velocity","version","advanced","below","broken","bugfixes","capabilities","check","contains","continuous","editing","email","files","hellip","ignored","issues","localizations","makes","nvalt","nvhelp","office","phone","possible","preview","printing","release","report","reports","spell","stuff","support","window"]
	},{
		"title": "TabLinks 3.0",
		"url": "/2016/10/31/tablinks-3-dot-0/",
		"tags": ["extension","markdown","safari","tablinks"],
		"date": "Oct 31<span>st</span>, 2016",
		"ts": "1477934700",
		"summary": "I haven&rsquo;t been using Safari much for a while, but after Sierra came out I started getting a lot of requests to update my TabLinks extension. I hadn&rsquo;t planned to, but then looked into it and realized it was just a codesigning issue. But you know me, I had to update everything else, too. TabLinks is a Safari extension that will grab all open tabs, either from the current window or all windows, and output a text list using a template format you specify. By default it creates a bulleted list of links in Markdown format, but you can modify as needed and it comes with presets for Markdown links, Markdown references, HTML, plain text. Version 3.0 has quite a few improvements, mostly in backend code and user interface. I think I got the manifest settings right to allow automatic updates, but I haven&rsquo;t looked in to resubmitting to the Extensions Gallery yet. For now, you can just download it directly below, and find more info on the project page. You&rsquo;ll need to click \"Trust\" to install it when Safari lets you know it&rsquo;s not from the gallery. And then feel free to donate below and make it worth the weekend effort. Because you trust me. TabLinks Safari Extension v3.0.0 Download TabLinks Safari Extension v3.0.0 TabLinks gathers all of the link information from every open tab and presents them for copying based on a user-defined template. Published 06/18/10. Updated 10/31/16. Changelog Donate &bull; More info&hellip; Your support is greatly appreciated! Or me on GitHub",
		"keywords": ["extension","safari","because","changelog","contextual","donate","download","extension","extensions","fewer","gallery","github","google","links","markdown","producthunt","published","redesigned","removes","safari","sierra","tablinks","updated","version","allow","appreciated","automatic","backend","based","below","bulleted","button","buttons","chrome","click","codesigning","comes","copying","creates","default","defined","directly","donate","download","effort","either","everything","extension","format","gallery","gathers","getting","greatly","haven","hellip","icons","improvements","information","install","interface","links","looked","manifest","modify","mostly","needed","nvalt","output","parameters","planned","presents","preset","presets","project","query","realized","references","requests","resubmitting","right","rsquo","settings","specify","started","support","template","think","updates","using","weekend","while","window","windows","worth"]
	},{
		"title": "WALTR 2 (+Giveaway!)",
		"url": "/2016/10/29/waltr-2-plus-giveaway/",
		"tags": ["giveaway"],
		"date": "Oct 29<span>th</span>, 2016",
		"ts": "1477761360",
		"summary": "So here&rsquo;s my new content strategy: fail to write much all week and then post a review of a brand new app with a giveaway on the weekend. Talk about traffic optimization!1 A while ago I blogged about WALTR, an app for transferring video and audio to your Apple devices from your Mac. It was amazingly fast (and aptly named after a certain Breaking Bad character). WALTR 2 has just been released, and it was worth the wait. WALTR 2 offers an elegant drag-and-drop interface. No buttons, just a clean display of available devices and a big drop area. Devices can now connect via USB or WiFi. Drop any supported format and it will be instantly converted as needed and added to the appropriate app on your iPhone, iPad, or iPod. And it&rsquo;s only non-iTunes app that can transfer any music file (including FLAC audio) into iPod classic, iPod shuffle, iPod Mini with no web connection. WALTR 2 automatically recognizes the format and encoding of any files you drop on it, handling them appropriately. Speaking of supported formats, WALTR 2 can now handle ePUB and PDF books, in addition to the dozens of audio and video formats it supports (including video formats such as MKV, AVI, MP4, MOV, MPEG, m2ts, 3GP, WMV, H264, H265, audio formats like MP3, FLAC, APE, ALAC, AAC, AIFF, WAV, WMA, OGG, OGA, WV, TTA, DFF, and more). It even handles ringtones, and removes the 30 second limit, allowing you to use entire songs just by renaming the file. The conversion is insanely fast, lossless formats like FLAC audio can be maintained in iTunes, and you can easily add 4K video to your device&rsquo;s collection. A lifetime license for WALTR 2 runs $39.95 USD. Eligible users can upgrade for $19.95 USD. And for three lucky readers, I have some codes to give away ($39.95 value). Just add a name and email address below, and I&rsquo;ll draw winners randomly on Wednesday, Nov 2nd, at 12pm CDT. Sorry, this giveaway has ended",
		"keywords": ["iphone","itunes","music","softorino","video","waltr","apple","breaking","devices","softorino","sorry","speaking","video","waltr","wednesday","youtube","zsddbpgxpko","action","added","address","allowing","amazingly","amphetamines","appropriately","aptly","audio","automatically","available","backlink","below","blogged","books","bottom","brand","brettterpstra","buttons","certain","character","class","classic","clean","codes","collection","connect","container","content","conversion","converted","device","devices","display","dozens","easily","elegant","email","encoding","ended","endnotes","entire","figure","files","fnref","footnote","footnotes","format","formats","giveaway","handle","handles","handling","height","https","iphone","itunes","image","including","insanely","instantly","interface","license","lifetime","limit","loading","lossless","lucky","maintained","media","music","named","needed","noscript","noteref","offers","optimization","original","padding","picture","randomly","readers","recognizes","released","removes","renaming","reversefootnote","ringtones","rsquo","sarcasm","screenshot","second","shuffle","softorino","songs","sorry","source","srcset","strategy","style","supported","supports","title","traffic","transferring","upgrade","uploads","users","value","video","videoid","walter","waltr","watch","weekend","while","width","winners","worth","write","youtube"]
	},{
		"title": "Timing, automatic time tracking for macOS (20% off coupon!)",
		"url": "/2016/10/27/timing-automatic-time-tracking-for-macos-20-percent-off-coupon/",
		"tags": ["sponsor"],
		"date": "Oct 27<span>th</span>, 2016",
		"ts": "1477573200",
		"summary": "Thanks to Timing for sponsoring BrettTerpstra.com this week! Have you ever spent all day in front of your Mac, just to wonder where the all your time went? Or maybe you&rsquo;ve tried to bill a client, but couldn&rsquo;t reconstruct how many hours you spent working for them? You could use a time tracker, but manual time tracking is only as good as your ability to remember to do it. You have to start and stop timers, enter what you did, and if you track multiple projects, things get even more tedious. And if you forget any of that, you&rsquo;re back to square one. Not so with Timing. Instead of making you do all the work, Timing automatically tracks how you spend your time. It logs which apps you use, which websites you visit, and which documents you edit. You can easily categorize activities into projects. Also, your data is not uploaded to anyone&rsquo;s server. It stays safe on your Mac at all times. Still not convinced? Download the free trial now and in a week, review all the gory details of what you did since you started running it. Just don&rsquo;t blame us when you see all those hours you spent on Facebook and elsewhere&hellip; You can purchase a copy via the Mac App Store, or check out our website at timingapp.com. The app is $39, but if you buy direct with coupon code , you can save 20% this week - that already pays for itself by recovering just half an hour of unproductive or unbilled time (and we promise you&rsquo;ll save more than that!)",
		"keywords": ["store","tracking","brettterpstra","download","facebook","store","thanks","timing","ability","activities","anyone","automatically","blame","categorize","check","client","convinced","couldn","coupon","details","direct","documents","easily","elsewhere","enter","forget","front","hellip","hours","itself","making","manual","maybe","multiple","projects","promise","reconstruct","recovering","remember","rsquo","running","server","since","spend","spent","sponsoring","square","started","stays","tedious","timers","times","timingapp","track","tracker","tracking","tracks","trial","tried","unbilled","unproductive","uploaded","visit","website","websites","where","wonder","working"]
	},{
		"title": "Friday Freeebie: User Interface Line Icon set",
		"url": "/2016/10/21/friday-freeebie-user-interface-line-icon-set/",
		"tags": ["freebie","icons"],
		"date": "Oct 21<span>st</span>, 2016",
		"ts": "1477076580",
		"summary": "Ecomm.design has provided an exclusive set of User Interface Line Icons as a giveaway this week. It&rsquo;s a set of 37 icons in AI, EPS, PNG, and SVG format. Download here and enjoy! ecomm.design: eCommerce Website Design Gallery & Tech Inspiration",
		"keywords": ["adobe","android","design","graphics","illustrator","network","portable","scalable","software","vector","design","download","ecomm","gallery","icons","inspiration","interface","website","design","ecommerce","ecomm","enjoy","exclusive","format","giveaway","icons","rsquo"]
	},{
		"title": "TextExpander: communicate smarter (and save 50%)",
		"url": "/2016/10/20/textexpander-communicate-smarter-and-save-50-percent/",
		"tags": ["sponsor","textexpander"],
		"date": "Oct 20<span>th</span>, 2016",
		"ts": "1476961200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Use TextExpander to eliminate boilerplate drudgery. Use short keyboard snippets to speed through&mdash;and still customize&mdash;all your repetitive typing tasks. Share with others, and make everyone more productive. TextExpander is perfect for standardizing and improving the written email replies you send every day. It can format dates, autocorrect misspellings, and search your collected knowledge with a few letters and a hotkey. Try TextExpander free for 30 days. TextExpander subscriptions include software for Mac, iPad, iPhone, and Windows. Visit smilesoftware.com/brett for more info and to claim a 50% discount on your first year of a TextExpander Life Hacker subscription. Offer ends November 15th",
		"keywords": ["iphone","textexpander","windows","brettterpstra","hacker","offer","share","textexpander","thanks","visit","windows","autocorrect","boilerplate","brett","claim","collected","customize","dates","discount","drudgery","eliminate","email","everyone","first","format","hotkey","iphone","improving","keyboard","knowledge","letters","mdash","misspellings","others","productive","repetitive","replies","search","short","smarter","smilesoftware","snippets","software","speed","sponsoring","standardizing","subscription","subscriptions","tasks","through","typing","written"]
	},{
		"title": "Web Excursions for October 19, 2016",
		"url": "/2016/10/19/web-excursions-for-october-19-2016/",
		"tags": ["bookmarks"],
		"date": "Oct 19<span>th</span>, 2016",
		"ts": "1476896880",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Toby - Make tabs work for you This is very close to being the Chrome tab manager I&rsquo;ve always wanted. It&rsquo;s easy to save and restore a window full of tabs, but also easy to organize them into whatever groups you want. Drag and drop tabs, and manage open tabs with a great looking interface. I do wish there was a list view, as once you get a lot of tabs stored it takes a bit too much scrolling to work with the grid view it uses. Grammar Snob on the App Store For those who revel in critiquing other&rsquo;s grammar, even in text messages, a sticker pack that lets you add edit marks and corrections in Messages on iOS 10. This will not go over well with spouses, friends, or enemies. But you&rsquo;re used to that. Collaborative Bot Platform Build your own conversational bot that understands natural language and integrates with a ton of messaging platforms. NotePlan: Lean Markdown Calendar, Todos and Notes on the Mac App Store Ok, this looks amazing. Write and edit notes, tasks, and events in Markdown, then get a calendar view, task list, even integration with Reminders and, Calendar, and other apps. Exporter A free mac app that will export your Apple Notes to Markdown. Not only would this be a great way to transition from Apple Notes to a Markdown-based notes system (ahem, BitWriter is coming), but also a great way to continue using notes but maintain a portable backup. Nice. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["apple","iphone","store","apple","bitwriter","build","calendar","check","chrome","collaborative","exporter","grammar","markdown","messages","mindmeister","noteplan","notes","platform","reminders","store","todos","write","amazing","backup","based","boosting","brainstorming","brought","calendar","close","collaborating","collaborative","coming","continue","conversational","corrections","critiquing","enemies","events","excursions","export","friends","grammar","great","groups","integrates","integration","interface","language","looking","looks","maintain","manager","mapping","marks","messages","messaging","natural","notes","organize","partnership","platforms","portable","productivity","restore","revel","rsquo","scrolling","software","spouses","sticker","stored","system","takes","tasks","transition","understands","using","wanted","whatever","window"]
	},{
		"title": "MailButler takes tracking in Apple Mail to the next level",
		"url": "/2016/10/06/mailbutler-takes-tracking-in-apple-mail-to-the-next-level/",
		"tags": ["sponsor"],
		"date": "Oct 6<span>th</span>, 2016",
		"ts": "1475751600",
		"summary": "Thanks to MailButler for sponsoring BrettTerpstra.com this week! Remember the popular mail plugin MailButler, which adds such useful, productivity-boosting features to your Apple Mail as the ability to schedule your emails to be sent later, upload email attachments regardless of size, undo emails, get reminders for forgotten email attachments, and many more? Email tracking is also part of the impressive array of tools that MailButler offers to Apple Mail users, and recently this functionality has been taken to the next level: it became more comprehensive thanks to the new tracking details. MailButler users can not only see if the recipient has opened their message, but also know the exact date and time when this message has been viewed for the first time. MailButler&rsquo;s email tracking feature provides Apple Mail users with the necessary information to plan their next step in email communication. In private email conversations, tracking guarantees security from unnecessary repeats and reminders. In businesses, this feature turns into a strong analytical tool and becomes an absolute must-have for everybody doing sales, CRM or customer support",
		"keywords": ["apple","customer","email","mailbutler","management","plugin","relationship","tracking","apple","brettterpstra","check","email","mailbutler","mailbutleremailtracking","remember","syndicate","thanks","vsayd","ability","absolute","analytical","array","attachments","became","becomes","blockquote","boosting","brettterpstra","businesses","class","communication","comprehensive","content","conversations","customer","details","dhfvfq","doing","download","email","emails","everybody","exact","feature","features","first","forgotten","functionality","great","guarantees","height","https","image","impressive","information","later","latest","learn","level","loading","media","message","necessary","nofollow","noscript","offers","opened","original","picture","plugin","popular","private","productivity","provides","recently","recipient","regardless","reminders","repeats","rsquo","sales","schedule","security","source","sponsored","sponsoring","srcset","strong","support","taken","thanks","title","tools","tracking","turns","unnecessary","upload","uploads","useful","users","version","viewed","width"]
	},{
		"title": "TableFlip: the cure for Markdown table editing",
		"url": "/2016/10/05/tableflip-the-cure-for-markdown-table-editing/",
		"tags": ["editor","macos","markdown","multimarkdown"],
		"date": "Oct 5<span>th</span>, 2016",
		"ts": "1475687040",
		"summary": "I was a beta tester for TableFlip, an app for editing Markdown (MultiMarkdown) tables painlessly, and I&rsquo;ve been waiting excitedly to talk about it for quite some time. The table format that showed up early in MultiMarkdown was very effective for adding HTML tables to documents. All of the pipes and dashes were a pain to type out, though, and if the table got large enough, it got difficult to edit and update. This led to a lot of solutions and text-based utilities, but nothing that made it truly simple. TableFlip gives you a spreadsheet interface for quickly creating and editing tables in Markdown documents. You can open the file you&rsquo;re currently editing in a text or Markdown editor and add or modify tables, or create new ones and copy them to the clipboard. Much like Marked, it will make the changes live in the document, and update if the document does. In fact, you can use it with Marked to add advanced capabilities to any text editor. The output from TableFlip is clean and well-aligned. \"Table cleanup\" scripts can do this, but with this workflow you don&rsquo;t have to worry that making changes will mess up all that carefully added whitespace. I believe that TableFlip is a game changer for anyone who uses tables in their Markdown writing. The current price is $18.99 US, but there&rsquo;s a \"Launch Celebration\" sale running until October 15th that will give you an instant 20% discount. The developer is also running a \"Share-for-discount\" campaign that can earn you 80% off by getting the word out on social media. TableFlip requires macOS 10.10 or newer. Find more info at the TableFlip website, and see the roadmap for upcoming features",
		"keywords": ["editor","table","celebration","launch","markdown","marked","multimarkdown","share","table","tableflip","added","adding","advanced","anyone","based","believe","campaign","capabilities","carefully","changer","changes","clean","cleanup","clipboard","create","creating","dashes","developer","difficult","discount","document","documents","editing","editor","effective","enough","excitedly","features","format","getting","gives","instant","interface","macos","making","media","modify","newer","nothing","output","painlessly","pipes","price","quickly","requires","roadmap","rsquo","running","scripts","showed","simple","social","solutions","spreadsheet","table","tables","tester","truly","upcoming","utilities","waiting","website","whitespace","workflow","worry","writing"]
	},{
		"title": "Boom for Mac … loud is an understatement",
		"url": "/2016/10/03/boom-for-mac-dot-dot-dot-loud-is-an-understatement/",
		"tags": ["sponsor"],
		"date": "Oct 3<span>rd</span>, 2016",
		"ts": "1475492400",
		"summary": "Thanks to Boom for sponsoring BrettTerpstra.com this week! The world got together last weekend to celebrate International Music Day, and its love for music remains intense. A similar undying love for music runs through the veins of Global Delight, an innovation-based organization from a small town on the western coast of Indian peninsula. Global Delight is the proud developer of Boom, a powerful app that provides an immersive and mind-melting audio experience. Boom&rsquo;s algorithm makes every sound crisp, clear, and loud… really loud — so much so, that \"loud\" becomes an understatement. Boom is a Mac app that not only boosts the volume but also enhances it for an engrossing experience. It beautifully calibrates itself to the perfect highs and lows and delivers the output in the finest dynamic range. It also comes with a smart Boost Control feature for system speakers, which lets the user have finer control over the boost. And that&rsquo;s not all! Boom also allows users to modify the audio output with adjustable equalizers. Simply adjust the equalizers and create an output that suits you best. Simply put, Boom is an intelligent and a must-have application. Consistently rated 5 stars on the Mac App Store, Boom comes with amazing audio effects that blend seamlessly to create an addictive audio environment. The audio effects — namely Ambience, Fidelity, Spatial, Nightmode and Pitch — can be added with in-app purchases, and are also available for time-limited trial. Boom isn&rsquo;t just for music, either. It works system-wide, so YouTube videos, Netflix movies, and even Skype calls are all enhanced. Boom can be downloaded from the web store as a one-time purchase for $14.99. It can be powered up with the audio effects for just $4.99. Alternatively, you can download it from the Mac app store at $19.99, including all of the audio effects. Boom is also available for iOS with slightly different features, yet equally powerful output — where loud remains just an understatement",
		"keywords": ["apple","itunes","store","ambience","boost","brettterpstra","consistently","control","delight","fidelity","global","indian","international","music","netflix","nightmode","pitch","simply","skype","spatial","store","thanks","youtube","added","addictive","adjust","adjustable","algorithm","allows","amazing","audio","available","based","beautifully","becomes","blend","boomformac","boost","boosts","brettterpstra","calibrates","calls","celebrate","class","clear","coast","comes","control","create","crisp","delivers","developer","different","download","downloaded","dynamic","effects","either","engrossing","enhanced","enhances","environment","equalizers","equally","experience","feature","features","finer","finest","globaldelight","height","highs","https","image","immersive","including","index","innovation","intelligent","intense","itself","ldquo","limited","loading","makes","media","melting","modify","movies","music","namely","nofollow","noscript","organization","original","output","peninsula","picture","powered","powerful","proud","provides","purchases","range","rated","rdquo","remains","rsquo","seamlessly","similar","slightly","small","smart","sound","source","speakers","sponsoring","srcset","stars","store","suits","system","through","title","together","trial","understatement","undying","uploads","users","veins","videos","volume","weekend","western","where","width","works","world"]
	},{
		"title": "A better Hyper key hack for Sierra",
		"url": "/2016/09/29/a-better-hyper-key-hack-for-sierra/",
		"tags": ["keyboard","macos"],
		"date": "Sep 29<span>th</span>, 2016",
		"ts": "1475177460",
		"summary": "Update: Karabiner elements can once again do the Hyper Key modification on its own, see my post A Hyper Key with Karabiner Elements, full instructions. In the last Web Excursions, I posted a hack for getting Hyper Key functionality back in Sierra. It uses Karabiner-Elements and Keyboard Maestro. It couldn&rsquo;t do one of the things I liked best about the Hyper key, though: allow me to tap it without hitting any other keys to use send Escape. My muscle memory for that has gotten to the point where using Vim without it is an exercise in pain. Matt Petty posted a different hack to GitHub, one using Hammerspoon with Karabiner-Elements for more flexibility. Granted, it&rsquo;s a lot more complex to configure, but I now have full functionality back. Here&rsquo;s a link to the necessary configuration files. I also put my own Hammerspoon configuration up with a few ideas for using it the way I was used to. My Hyper key shortcuts were frequently app shortcuts, so that&rsquo;s what&rsquo;s listed in the example. I had most of my other shortcuts set up through BetterTouchTool and System Preferences, so I&rsquo;m just adding lines to the Hammerspoon config to send the same key combination and continue to trigger those. I made some loops in my examples to allow more efficient configuration of a bunch of keys. Even if you don&rsquo;t know Lua (I sure don&rsquo;t) it should be pretty easy to extend those lists. By the way, the Lua section at tutorialspoint was quite helpful with learning the syntax basics. Matt also helped me figure out the combination of Lua and Hammerspoon API calls needed to create sequential hotkeys. In my example, you&rsquo;ll see a section where I configure it such that hitting Hyper-A,F opens Finder. A lot of my app shortcuts were based on this kind of thing because it allows me to group apps by type under a single letter, then use common keys to launch apps within that type. More combinations available, which is kind of the point of the Hyper key to begin with. Hammerspoon can do a lot more with automation and shortcuts. It&rsquo;s definitely worth checking out",
		"keywords": ["hammerspoon","hyper","bettertouchtool","elements","escape","excursions","finder","github","granted","hammerspoon","hyper","karabiner","keyboard","maestro","petty","preferences","sierra","system","adding","again","allow","allows","automation","available","based","basics","because","begin","bunch","calls","checking","combination","combinations","common","complex","config","configuration","configure","continue","couldn","create","definitely","different","efficient","elements","example","examples","exercise","extend","figure","files","flexibility","functionality","getting","gotten","group","helped","helpful","hitting","hotkeys","ideas","instructions","launch","learning","letter","liked","listed","lists","loops","memory","muscle","necessary","needed","opens","point","posted","rsquo","section","sequential","shortcuts","single","syntax","through","trigger","tutorialspoint","under","using","where","within","worth"]
	},{
		"title": "SearchLink 2.2.3 with Apple Music searches",
		"url": "/2016/09/28/searchlink-2-dot-2-3-with-apple-music-searches/",
		"tags": ["search","searchlink","service"],
		"date": "Sep 28<span>th</span>, 2016",
		"ts": "1475091360",
		"summary": "Most of my free projects are the result of solving my own problems, and often get left behind once I&rsquo;m not actively using them anymore. Among the ones I&rsquo;ve used every day for years now is SearchLink. I still consider it the most useful thing I&rsquo;ve ever written. The first part of this post is just to announce a new version, 2.2.3. If you&rsquo;re an experienced SearchLink user, go ahead and download it below. If not, I&rsquo;d recommend heading to the project page and getting a feel for it first. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip; Bing is shutting down what I believe to be the last free search API available in December. Given a complete lack of alternatives, the primary search is now done with a DuckDuckGo scrape. In DuckDuckGo, you can append a \"\" to a search query and it will automatically open the first link. So I&rsquo;m leveraging that and just grabbing the redirection result. As Amazon changed their format for affiliate links, I had to update both the script and the configuration parameters. If you&rsquo;re using SearchLink to generate Amazon affiliate links, you&rsquo;ll need to update your config in . The key should now be a string with your shop tag instead of the previous array. SearchLink can now search Apple Music and generate proper affiliate links. The results are essentially the same as using the !iart, !ialb, etc. iTunes searches, but formatted to search more specifically and output a link conforming to slightly different parameters. &ndash; Apple Music Artist &ndash; Apple Music Album &ndash; Apple Music Song Now, if you select just an @username and run SearchLink on it, it will automatically turn it into a link to a Twitter profile. So becomes . I also added quick conversions for Facebook profiles, using . So you can type to create (or ). Aaron Dowd (@thepodcastdude) has created a video intro to SearchLink. I&rsquo;m hoping to write a post soon that walks through why I love this project and how I use it. Time…",
		"keywords": ["blogging","facebook","markdown","twitter","aaron","affiliate","album","amazon","among","apple","artist","changelog","check","donate","download","duckduckgo","facebook","format","handles","markdown","music","published","quick","searchlink","social","tuvbv&#39;","tutorial","twitter","updated","video","youtube","actively","added","affiliate","ahead","album","alternatives","amalb","amalbe","amart","amazon","amsong","announce","anymore","append","apple","applemusic","array","automatically","available","background","becomes","behind","believe","below","bottom","brettterpstra","changed","changelog","class","config","configuration","conforming","consider","container","conversions","country","cover","create","created","description","diamond","different","dlbox","donate","download","downloads","editor","embed","essentially","experienced","facebook","fathom","figure","first","format","formatted","frameborder","getting","github","gives","grabbing","gradient","handles","heading","height","hellip","highlight","highlighter","hoping","https","itunes","iframe","information","intro","language","latest","ldquo","leaving","leveraging","linear","links","loading","media","music","ndash","noscript","often","onclick","original","output","padding","parameters","partner","picture","plaintext","primary","problems","profile","profiles","project","projects","proper","published","query","quick","rdquo","recommend","redirection","releases","repeat","replaced","results","rouge","rsquo","scrape","script","search","searches","searchlink","shutting","slightly","social","solving","source","specifically","srcset","string","strong","style","thepodcastdude","through","thumbnail","title","tools","trackgoal","ttscoff","tutorial","twitter","updated","uploads","useful","username","using","version","video","videoid","walks","watch","width","write","written","years","youtu","youtube"]
	},{
		"title": "nvALT 2.2 take 2.2 (one more time, with feeling)",
		"url": "/2016/09/27/nvalt-2-dot-2-take-2-dot-2-one-more-time-with-feeling/",
		"tags": ["nvalt"],
		"date": "Sep 27<span>th</span>, 2016",
		"ts": "1475025240",
		"summary": "Ok, so the first nvALT 2.2 release was an unmitigated wreck. The second one was something just less than a major disaster. A minor major disaster? Here&rsquo;s one more for you, this one tested by a good number of people already, and hopefully good to go. Thanks to everyone who&rsquo;s donated already, it gave us additional incentive to get this release fixed up in the face of new OS issues and variables. As a summary, the first issue was that we built the release on the macOS 10.12 (Sierra) SDK, which was a bit risky as far as backward compatibility, especially considering the age of the Notational Velocity code nvALT is built on. Then there was the fact that 10.12 removed OpenSSL, so some core libraries used in nvALT weren&rsquo;t available for dynamic linking anymore. After a couple of failed attempts, I think I&rsquo;ve built a static library that will run on any system equalt to or newer than 10.9. Then there&rsquo;s App Translocation. This new security measure in macOS causes some serious issues for apps that update via mechanisms like Sparkle. I&rsquo;m still waiting to learn more, but in the meantime we&rsquo;re distributing nvALT via codesigned disk images (DMG) that require the user to drag the app to the Applications folder manually, which is essentially the only thing that Translocation considers a safe install. This version also fixes an issue with freezing while typing a tag name, creating new notes by pasting, crashes while editing, and TaskPaper formatting. Download below. Your support makes new things possible. Or me on GitHub! nvALT v2.2.8 (128) Download nvALT v2.2.8 (128) A fork of Notational Velocity with MultiMarkdown preview and advanced Markdown editing capabilities. Other good stuff. Published 06/08/13. Updated 09/19/17. Changelog Donate &bull; More info&hellip",
		"keywords": ["macos","sierra","applications","changelog","donate","download","github","markdown","multimarkdown","notational","openssl","published","sierra","sparkle","taskpaper","thanks","translocation","updated","velocity","advanced","anymore","attempts","available","backward","below","built","capabilities","causes","codesigned","compatibility","considering","considers","couple","crashes","creating","disaster","distributing","donated","dynamic","editing","equalt","especially","essentially","everyone","failed","first","fixed","fixes","folder","formatting","freezing","hellip","hopefully","images","incentive","install","issues","learn","libraries","library","linking","macos","major","makes","manually","meantime","measure","mechanisms","minor","newer","notes","nvalt","pasting","people","possible","preview","release","removed","risky","rsquo","second","security","serious","static","stuff","summary","support","system","tested","think","typing","unmitigated","variables","version","waiting","weren","while","wreck"]
	},{
		"title": "Web Excursions for September 26, 2016",
		"url": "/2016/09/26/web-excursions-for-september-26-2016/",
		"tags": ["bookmarks"],
		"date": "Sep 26<span>th</span>, 2016",
		"ts": "1474905600",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Hyper Key hack in Sierra using Karabiner-Elements and Keyboard Maestro For those who&rsquo;ve upgraded to Sierra and are lamenting the loss of their Hyper Key (because Karibiner breaks in 10.12), here&rsquo;s a hack using Karabiner-Elements and Keyboard Maestro. Honestly, the escape key functionality of my original hyper key (tap for escape, hold for modifiers) has become so ingrained in my muscle memory that I&rsquo;m happier doing a simple hack to make it just an escape key, and then using a basic key combo to trigger a Keyboard Maestro group with my old launching shortcuts. Expanded Comics I don&rsquo;t read a lot of comics, but not because I don&rsquo;t appreciate the art form. This new app demonstrates a potential future that combines 3D animation, models and sculptures, original music, and other things you&rsquo;ll never see on a page. Comic fans might scoff and wax nostalgic, but this is motivating for me to dive into graphic storytelling again. inessential: Memory Graph Debugger Tips The latest Xcode has a new memory graph debugger, and Brent Simmons shares his tips after his first day of working with it. The MIT License, Line by Line From /dev/lawyer, an in-depth look at what the MIT license actually means. It&rsquo;s something anyone using it should probably understand, but very few of us do. Pantsuit: The Hillary Clinton UI pattern library Worth blogging based on the name alone, this is the internal design system for Hillary Clinton&rsquo;s campaign. Usar Marked 2 para previsualizar AsciiDoc A Spanish-language how-to for using Marked with AsciiDoc. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["clinton","developer","hillary","hyper","language","spanish","xcode","asciidoc","brent","check","clinton","comic","comics","debugger","elements","expanded","graph","hillary","honestly","hyper","karabiner","karibiner","keyboard","license","maestro","marked","memory","mindmeister","pantsuit","sierra","simmons","spanish","worth","xcode","again","alone","animation","anyone","appreciate","based","basic","because","blogging","boosting","brainstorming","breaks","brought","campaign","collaborating","collaborative","combines","combo","comics","debugger","demonstrates","depth","design","doing","escape","excursions","first","functionality","graph","graphic","group","happier","hyper","inessential","ingrained","internal","lamenting","language","latest","launching","lawyer","library","license","mapping","memory","models","modifiers","motivating","muscle","music","nostalgic","original","partnership","pattern","potential","previsualizar","productivity","rsquo","scoff","sculptures","shares","shortcuts","simple","software","storytelling","system","trigger","understand","upgraded","using","working"]
	},{
		"title": "OK, nvALT 2.2 take 2",
		"url": "/2016/09/23/ok-nvalt-2-dot-2-take-2/",
		"tags": ["nvalt"],
		"date": "Sep 23<span>rd</span>, 2016",
		"ts": "1474644660",
		"summary": "Update: Even take 2 was a disaster, so the download has been updated to version 2.2 (122). It&rsquo;s worked for all testers thus far. For more info on the issues, see here. Please report issues on GitHub, not on Twitter or via email. It helps keep everything manageable and avoids us having to answer the same questions in a hundred different tweets and messages. Along the same lines, please take a look at existing tickets before starting a new one. So we released the final version of nvALT 2.2 last night, except I threw in a bug that would crash it for everybody except me. Silly static linking issues. The update is back in the automatic updater (nvALT->Check for Updates), but anyone who already updated will need to download the new version directly (below). Thanks for your patience. Feel free to donate and keep David and me alive while we finish up work on BitWriter! Your support makes new things possible. Or me on GitHub! nvALT v2.2.8 (128) Download nvALT v2.2.8 (128) A fork of Notational Velocity with MultiMarkdown preview and advanced Markdown editing capabilities. Other good stuff. Published 06/08/13. Updated 09/19/17. Changelog Donate &bull; More info&hellip",
		"keywords": ["macos","notational","velocity","bitwriter","changelog","check","david","donate","download","github","markdown","multimarkdown","notational","published","silly","thanks","twitter","updated","updates","velocity","advanced","alive","answer","anyone","automatic","avoids","before","below","capabilities","crash","different","directly","disaster","donate","download","editing","email","everybody","everything","except","finish","having","hellip","helps","hundred","issues","linking","makes","manageable","messages","night","nvalt","patience","possible","preview","questions","released","report","rsquo","starting","static","stuff","support","testers","threw","tickets","tweets","updated","updater","version","while","worked"]
	},{
		"title": "nvALT 2.2: bugfixes, Sierra compatibility",
		"url": "/2016/09/22/nvalt-2-dot-2-bugfixes-sierra-compatibility/",
		"tags": ["nvalt"],
		"date": "Sep 22<span>nd</span>, 2016",
		"ts": "1474584300",
		"summary": "Update: Due to widespread issues, even with the second release attempt, the download has been updated to version 2.2 (121). It&rsquo;s worked for all testers thus far. For more info on the issues, see here. Please report issues on GitHub, not on Twitter or via email. It helps keep everything manageable and avoids us having to answer the same questions in a hundred different tweets and messages. Along the same lines, please take a look at existing tickets before starting a new one. Sorry it&rsquo;s been a slow week of posting here. Much to do. Speaking of, nvALT ran into some trouble with Sierra that I hadn&rsquo;t noticed because I&rsquo;ve been cheating and running a dev version for so long. That prompted David and I to get this one last release of nvALT out and ensure stability for at least the next year. In the meantime, we&rsquo;re getting close to a BitWriter beta. This will be the replacement for nvALT, rewritten from the ground up and using modern code that will be easier to maintain moving forward. Keep your eyes peeled on this blog and Twitter, both ttscoff and nvALTApp will have beta signup and release news. In the meantime, you can continue to report nvALT issues on GitHub, but I wouldn&rsquo;t count on any future releases except in the case that I screwed something up on this update that breaks it for everyone. Note that this release should run on 10.9 (not tested), but that&rsquo;s the minimum. If you&rsquo;re running something really old and nvALT is currently working for you, don&rsquo;t update. The release should show up in automatic updates (nvALT->Check For Updates), or download it directly below. Stay tuned for more BitWriter news! Your support makes new things possible. Or me on GitHub! nvALT v2.2.8 (128) Download nvALT v2.2.8 (128) A fork of Notational Velocity with MultiMarkdown preview and advanced Markdown editing capabilities. Other good stuff. Published 06/08/13. Updated 09/19/17. Changelog Donate &bull; More info&hellip",
		"keywords": ["github","markdown","notational","twitter","velocity","bitwriter","changelog","check","david","donate","download","github","markdown","multimarkdown","notational","published","sierra","sorry","speaking","twitter","updated","updates","velocity","advanced","answer","automatic","avoids","because","before","below","breaks","capabilities","cheating","close","continue","count","different","directly","download","easier","editing","email","everyone","everything","except","getting","ground","having","hellip","helps","hundred","issues","maintain","makes","manageable","meantime","messages","modern","moving","noticed","nvalt","nvaltapp","peeled","possible","posting","preview","prompted","questions","release","releases","replacement","report","rewritten","rsquo","running","screwed","second","signup","stability","starting","stuff","support","tested","testers","tickets","trouble","ttscoff","tuned","tweets","updated","updates","using","version","widespread","worked","working","wouldn"]
	},{
		"title": "TextExpander – consistent messaging for entire teams",
		"url": "/2016/09/15/textexpander-consistent-messaging-for-entire-teams/",
		"tags": ["sponsor","textexpander"],
		"date": "Sep 15<span>th</span>, 2016",
		"ts": "1473937200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Communicate smarter with TextExpander. Use TextExpander to eliminate boilerplate drudgery. Speed through&mdash;and still customize&mdash;your repetitive stuff. Transform that repetitive stuff into knowledge. Share it with your whole team, and make everyone more productive. TextExpander is perfect for sharing consistent answers on a support team and consistent marketing messages across a whole company. TextExpander for Teams now includes group statistics, so you can see how much more productive your team is and which content you use most often. Try TextExpander free for 30 days. TextExpander subscriptions include software for Mac, iPhone, iPad, and Windows (beta). Visit smilesoftware.com/brett for more info",
		"keywords": ["iphone","macos","productivity","smile","textexpander","brettterpstra","share","speed","teams","textexpander","thanks","transform","visit","windows","across","answers","boilerplate","brett","company","consistent","content","customize","drudgery","eliminate","everyone","group","iphone","includes","knowledge","marketing","mdash","messages","often","productive","repetitive","sharing","smarter","smilesoftware","software","sponsoring","statistics","stuff","subscriptions","support","through","whole"]
	},{
		"title": "Back to School: Udemy $15 courses",
		"url": "/2016/09/12/back-to-school-udemy-15-dollars-courses/",
		"tags": [],
		"date": "Sep 12<span>th</span>, 2016",
		"ts": "1473707580",
		"summary": "Here&rsquo;s a quick note to let you know about the current Back to School promotion from Udemy. Learn some iOS and Swift skills for just $15 (normally $200) using the code (or clicking any of the links below to have it applied automatically). The coupon works sitewide, but here are some featured courses I&rsquo;d highly recommend for any developer working with iOS. The Back to School promo is running now and ends tomorrow, so if you want to do some learning, take advantage of it",
		"keywords": ["android","store","udemy","beginner","build","create","developer","learn","professional","school","swift","udemy","advantage","applied","automatically","below","clicking","coupon","courses","developer","featured","highly","learning","links","normally","promo","promotion","quick","recommend","rsquo","running","sitewide","skills","tomorrow","using","working","works"]
	},{
		"title": "Shimo VPN client: ready for PPTP on macOS Sierra",
		"url": "/2016/09/08/shimo-vpn-client-ready-for-pptp-on-macos-sierra/",
		"tags": ["sponsor"],
		"date": "Sep 8<span>th</span>, 2016",
		"ts": "1473332400",
		"summary": "Thanks to VPN client Shimo for sponsoring BrettTerpstra.com this week! As some of you might know, a couple of months ago Apple announced that PPTP VPN will no longer be supported by Apple&rsquo;s built-in VPN client on macOS Sierra. Security issues are mentioned among the main reasons for this decision: PPTP VPN has simply become outdated, vulnerable to threats, and insecure. Although this might seem to be a reasonable change which would motivate Mac enthusiasts to switch to more secure VPN protocols, it is also understandable that it may cause some users inconveniences in the immediate future. For those who will miss PPTP VPN on macOS Sierra and look for alternatives to Apple’s built-in VPN client, there is one great solution. It’s the VPN Client for Mac Shimo. Not only is it ready for macOS Sierra and supports PPTP, it also supports L2TP, Cisco AnyConnect, OpenVPN and all standard-compliant IPSec connections. The developers at Feingeist Software have recently announced a major update to Shimo. Shimo 4.1 now easily handles complex VPN networking configurations, including route management and DNS handling. A 30 days free trial period allows you to test the full range of functionalities that Shimo offers. Among the benefits that you get by using this VPN client are the highest security standards and an optimized user experience. Shimo also allows you to automatically connect VPN accounts based on certain trigger conditions: your network connection is automatically secured whenever required, for example, when connecting to an unknown Wi-Fi network. Users can also configure actions to be performed when a particular VPN connection is established or terminated. Connect to network servers, launch other applications or just check your company email — everything is possible with Shimo’s automation features. For more information, visit the Shimo website",
		"keywords": ["security","shimo","although","among","anyconnect","apple","brettterpstra","cisco","client","connect","feingeist","ipsec","openvpn","security","shimo","sierra","software","thanks","users","accounts","actions","allows","alternatives","among","announced","applications","automatically","automation","based","benefits","brettterpstra","built","cause","certain","change","check","class","client","company","complex","compliant","conditions","configurations","configure","connect","connecting","connections","couple","decision","developers","easily","email","enthusiasts","established","everything","example","experience","features","functionalities","great","handles","handling","height","highest","https","image","immediate","including","inconveniences","information","insecure","issues","launch","loading","longer","macos","major","management","media","mentioned","motivate","network","networking","nofollow","noscript","offers","optimized","original","outdated","particular","performed","picture","possible","protocols","range","ready","reasonable","reasons","recently","required","route","rsquo","secure","secured","security","servers","simply","solution","source","sponsoring","srcset","standard","standards","supported","supports","switch","terminated","threats","title","trial","trigger","understandable","unknown","uploads","users","using","visit","vulnerable","website","whenever","width"]
	},{
		"title": "iPhone 7 and VR?",
		"url": "/2016/09/06/iphone-7-and-vr/",
		"tags": ["apple","iphone"],
		"date": "Sep 6<span>th</span>, 2016",
		"ts": "1473196080",
		"summary": "I&rsquo;m not one to spend time on rumors, and rarely invest much energy in speculation, but the technical specs dug up by Softorino while hacking away on the next version of WALTR are intriguing. The benchmarks they&rsquo;ve run show that the A9 chip in the iPhone 6 Plus can already handle VR video playback. VR requires 2 streams of at least 4k video quality, and the A9 chip can provide that. An A10 chip in the next iPhone should reasonably be more than capable of it, which makes speculation about an Apple venture into VR a reasonable conclusion. See the details and results at Softorino&rsquo;s blog",
		"keywords": ["iphone","reality","virtual","apple","softorino","waltr","benchmarks","capable","details","energy","hacking","handle","iphone","intriguing","invest","makes","playback","quality","rarely","reasonable","reasonably","requires","results","rsquo","rumors","specs","speculation","spend","streams","technical","venture","version","video","while"]
	},{
		"title": "Web Excursions for September 05, 2016",
		"url": "/2016/09/05/web-excursions-for-september-05-2016/",
		"tags": ["bookmarks"],
		"date": "Sep 5<span>th</span>, 2016",
		"ts": "1473084000",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. TheAppStore.org - Search and filter the iTunes App Store on the web with your browser A way faster, better way to search the iTunes and Mac App Stores. CloudCannon Officially Out of Jekyll Beta CloudCannon has finished their Jekyll beta, making Jekyll and plugins available to all users on every plan. They&rsquo;ve also added a bunch of configuration options and cool features like inline editing for Markdown files. If you want an easy way to run a Jekyll blog with an awesome GUI, check it out. All Shapes And Sizes - Transforming negative into positive, if we can do it, so can you. A worthy charity of interest to my Scottish friends. Our vision is to enhance life of Adults with Learning Disabilities/Difficulties (ALD) and/or with mental health issues, by promoting social inclusion to those individuals and to raise awareness & understanding to the public. By enhancing their lives & sense of wellbeing is to become a valued member of society via inclusion in all things. Playlist Machinery A collection of amazing tools for building and managing playlists on Spotify. Party - Spotify This is excellent. I&rsquo;m enjoying Apple Music&rsquo;s selection, radio, and curated playlists, but this kind of innovation (along with Spotify Running) is making me happily keep my Spotify subscription. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["itunes","store","adults","apple","check","cloudcannon","disabilities","jekyll","learning","machinery","markdown","mindmeister","music","officially","party","playlist","running","scottish","search","shapes","sizes","spotify","store","stores","theappstore","transforming","added","amazing","available","awareness","awesome","boosting","brainstorming","brought","browser","building","bunch","charity","check","collaborating","collaborative","collection","configuration","curated","editing","enhance","enhancing","enjoying","excellent","excursions","faster","features","files","filter","finished","friends","happily","health","itunes","inclusion","individuals","inline","innovation","interest","issues","lives","making","managing","mapping","member","mental","negative","options","partnership","playlists","plugins","positive","productivity","promoting","public","radio","raise","rsquo","search","selection","sense","social","society","software","subscription","tools","understanding","users","valued","vision","wellbeing","worthy"]
	},{
		"title": "What's wrong with the web forms these days?",
		"url": "/2016/09/01/whats-wrong-with-the-web-forms-these-days/",
		"tags": ["personal","webdesign"],
		"date": "Sep 1<span>st</span>, 2016",
		"ts": "1472740500",
		"summary": "Filling out forms on the web is an inconsistent and often infuriating experience. What follows are some of my major complaints. I&rsquo;m not a UX professional, though as a front-end developer it&rsquo;s definitely been part of my job. This post is written from a user standpoint, though. A frustrated, annoyed customer of e-commerce websites, a user who regularly signs up for services, and one who even occasionally fills out a contact form. A lot of form issues are largely due to over-designing. It happens in Mac apps sometimes, too, where developers want to \"spruce\" up standard controls and end up breaking standard behavior. While the default controls and behaviors might not always be perfect, it&rsquo;s a language that users understand. Bad HTML practices include poor use (or lack of use) of tab indexes, or forms with \"fancy\" Javascript that breaks the default keys used to focus fields or navigate dropdown selections. This is basic functionality that should never be broken. Even beyond accessibility concerns, pissing users off during checkout on an e-commerce site is just bad business. If you feel the need to change the design of a form field (and I get it, defaults are ugly and often wildly inconsistent between browsers and platforms), don&rsquo;t change the functionality. This is especially true of dropdowns. It&rsquo;s possible to build an autocomplete combo field that is still keyboard navigable. It&rsquo;s possible to create a form field with placeholder text that becomes a label when the user starts typing without breaking tab index. It&rsquo;s possible to create custom input fields that still indicate focus. I think indicating focus on a field might be the second most frustrating issue commonly found in web forms. I never fill out a form by clicking each field; I tab between them. Tab order is annoying enough, especially when most elements can be focused with the tab key but custom dropdown fields are skipped, but it&rsquo;s worse when I tab and have no idea where the cursor has gone. Highlighting the focused field with an outline is a standard part of the user&rsquo;s language. Don&rsquo;t break it without providing an obvious alternative, and for the love of jebus don&rsquo;t remove the highlight completely. Stop this. I recently went through a signup process for Minnesota&rsquo;s ACA insurance website. It was, if I recall, about 8 pages long. They separated the pages into multiple screens, and added a Javascript animation between them&hellip;",
		"keywords": ["address","email","forms","animated","apple","doing","email","field","filling","forms","frustratingly","gmail","highlighting","impropriety","javascript","minnesota","mobile","overdesign","recognize","refreshing","showing","validate","validation","while","worse","accept","accepted","accessibility","account","added","address","again","alias","aliases","allow","angry","animated","animation","annoyed","annoying","anymore","anyway","aside","audio","autocomplete","autofill","automatic","automatically","backlink","backspace","backspacing","basic","because","becomes","before","behavior","behaviors","between","beyond","bored","break","breaking","breaks","brettterpstra","broken","browser","browsers","build","business","button","buttons","caused","causes","change","character","check","checkout","clarity","class","clicked","clicking","combo","commerce","commonly","compatible","complaint","complaints","completely","concerns","consistency","contact","controls","corrected","correctly","crappy","create","criticizing","cursor","custom","customer","declare","default","defaults","defeats","definitely","design","designing","destination","developed","developer","developers","devices","difference","different","disabled","displayed","doesn","doing","downfall","dropdown","dropdowns","easily","elements","email","emotional","endnotes","enough","enter","entering","entire","entirely","erase","error","especially","example","expected","experience","expression","fails","fancy","field","fields","filling","fills","filter","finish","first","fnref","focus","focused","follows","footnote","footnotes","formatters","formatting","forms","found","front","frustrated","frustrating","functionality","gmail","going","habit","handle","handling","happens","height","helpful","highlight","highlighter","hitting","horrible","horses","https","hyphenate","image","important","impropriety","inconsistent","index","indexes","indicating","indicator","information","infuriating","inline","input","insurance","invalid","issues","jebus","judged","keyboard","keyup","label","language","largely","ldquo","leads","leave","leaves","legal"]
	},{
		"title": "Web Excursions for August 29, 2016",
		"url": "/2016/08/29/web-excursions-for-august-29-2016/",
		"tags": ["bookmarks"],
		"date": "Aug 29<span>th</span>, 2016",
		"ts": "1472479200",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Notion &ndash; Docs, wikis, tasks, seamlessly in one. \"A unified workspace for modern teams.\" A nice combination of sharing, project management, and documentation wiki with Slack integration. Wonder An SMS bot that stores your own questions and their answers, providing answers back to you with a text-based query. It&rsquo;s like QuickQuestion for your phone&hellip; BlokDust A browser-based interface for visually building synthesizer sounds. Control them with MIDI or computer keyboard. As one might expect with an web-based synth, there are social sharing options as well. Vesper, Adieu A valuable insight for developers from John Gruber on the demise of Vesper and what he would have done differently. flickr cc attribution bookmarklet maker A nifty, customizable bookmarklet that can grab everything you need for embedding an image from a Flickr photo page with Creative Commons licensing. Automatically generate an image link and attribution text/link in HTML, Markdown, or WordPress shortcodes. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["autocomplete","adieu","automatically","blokdust","check","commons","control","creative","flickr","gruber","markdown","mindmeister","notion","quickquestion","slack","vesper","wonder","wordpress","answers","attribution","based","bookmarklet","boosting","brainstorming","brought","browser","building","collaborating","collaborative","combination","computer","customizable","demise","developers","differently","embedding","everything","excursions","expect","flickr","hellip","image","insight","integration","interface","keyboard","licensing","maker","management","mapping","modern","ndash","nifty","options","partnership","phone","photo","productivity","project","providing","query","questions","rsquo","seamlessly","sharing","shortcodes","social","software","sounds","stores","synth","synthesizer","tasks","teams","unified","valuable","visually","wikis","workspace"]
	},{
		"title": "The PDFpen Family: Powerful PDF for all your devices",
		"url": "/2016/08/25/the-pdfpen-family-powerful-pdf-for-all-your-devices/",
		"tags": ["sponsor"],
		"date": "Aug 25<span>th</span>, 2016",
		"ts": "1472122800",
		"summary": "Thanks to Smile and the PDFpen Family for sponsoring BrettTerpstra.com this week! Engage your PDF-fu on all of your devices with the PDFpen Family: PDFpen for macOS, PDFpen for iPad and iPhone, and PDFpen Scan+. PDFpen for macOS is the ultimate PDF editing tool, and you can have that same power on your mobile device with PDFpen for iPad & iPhone. Break the scan-print-sign-fax cycle and do it all in paperless style. Add text and graphics, make corrections, and much more. PDFpen Scan+ adds scanning and OCR to your mobile toolkit. OCR when away from your desk and scanner. Scan receipts with ease. See smilesoftware.com/brett for full details on the PDFpen Family",
		"keywords": ["iphone","macos","pdfpen","touch","break","brettterpstra","engage","family","pdfpen","smile","thanks","brett","corrections","cycle","details","device","devices","editing","graphics","iphone","macos","mobile","paperless","print","receipts","scanner","scanning","smilesoftware","sponsoring","style","toolkit","ultimate"]
	},{
		"title": "MightyDeals: 3 Amazing TypeType Font Families for $17",
		"url": "/2016/08/18/mightydeals-3-amazing-typetype-font-families-for-17-dollars/",
		"tags": ["sponsor"],
		"date": "Aug 18<span>th</span>, 2016",
		"ts": "1471518000",
		"summary": "Thanks to MightyDeals for sponsoring BrettTerpstra.com this week! When it comes to fonts, you either want quality or quantity. In some cases, you can get both, like this Mighty Deal from the TypeType Foundry! You&rsquo;ll get 3 popular Font Families that are as packed with high-quality awesomeness as they are with number of typefaces in each family. You&rsquo;ll snag more than 50 unique fonts in a variety of styles, all with multilingual support. From blockbuster films to a perfect universal tool, this collection is sure to impress! Bluescreens, the perfect font for blockbuster films, posters, titles and movie trailers, with a family of 30 unique fonts. Firs, a universal sans-serif font family in Scandinavian style, with a font family of 18 unique fonts. Prosto Sans Condensed, a condensed version of the popular Prosto Sans font family optimized for the web, with 10 unique fonts in the family. Each font includes multiple weights and styles, kerning pairs, and 400+ glyphs per typeface. Normally, this set of typefaces sells for $289, but for a limited time only you can get all 3 TypeType Font Families for just $17 or get both the desktop + web fonts together for only $24",
		"keywords": ["arial","serif","typeface","bluescreens","brettterpstra","check","condensed","families","foundry","mighty","mightydeals","normally","prosto","scandinavian","thanks","typetype","awesomeness","blockbuster","bundle","collection","comes","condensed","desktop","either","family","films","fonts","glyphs","impress","includes","kerning","limited","movie","multilingual","multiple","optimized","packed","pairs","popular","posters","quality","quantity","rsquo","sells","serif","sponsoring","style","styles","support","titles","together","trailers","typeface","typefaces","unique","universal","variety","version","weights"]
	},{
		"title": "CSV to MultiMarkdown table update",
		"url": "/2016/08/17/csv-to-multimarkdown-table-update/",
		"tags": ["markdown","markdownservices","multimarkdown"],
		"date": "Aug 17<span>th</span>, 2016",
		"ts": "1471462740",
		"summary": "I&rsquo;ve made a quick update to the \"Tables - Create from CSV\" Service in the Markdown Service Tools that I posted last month. It fixes an error (thanks to Javier Jarava for the report) that would occur if any line in the middle of the CSV data ended with whitespace, as well as offering cleaner exits if an error occurs in parsing the CSV. See more details on the Service here, on the Markdown Service Tools here, and download v2.14 of the tools with the updated Service below. I&rsquo;ve also updated the Gist for those using it as a standalone script. Markdown Service Tools v3.0.3 Download Markdown Service Tools v3.0.3 The Markdown Service Tools are a collection of macOS Services designed to make creating Markdown-formatted text that much easier. Services work in almos any macOS application. Published 01/09/14. Updated 09/14/20. Changelog Donate &bull; More info&hellip",
		"keywords": ["column","comma","excel","microsoft","separated","values","changelog","create","donate","download","jarava","javier","markdown","published","service","services","tables","tools","updated","almos","below","cleaner","collection","creating","designed","details","download","easier","ended","error","exits","fixes","formatted","hellip","macos","middle","occur","occurs","offering","parsing","posted","quick","report","rsquo","script","standalone","thanks","tools","updated","using","whitespace"]
	},{
		"title": "Web Excursions for August 16, 2016",
		"url": "/2016/08/16/web-excursions-for-august-16-2016/",
		"tags": ["bookmarks"],
		"date": "Aug 16<span>th</span>, 2016",
		"ts": "1471376400",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Colorized man pages: Understood and customized An awesome tip I recieved via Alex Krivov. Adds color to the Unix command with a simple update to your shell init files. Hey Siri A list of Siri commands (English and German). I use Siri for what I know she can do, but this compilation is very helpful in further exploration of Siri as a productivity tool. NetFlix Streaming by Alternate Genres (Extended List) A collection of genre links that Netflix doesn&rsquo;t expose in its interface. Looking specifically for cult horror movies? No problem. Trunk Notes One of my early favorites on the iPhone, Trunk Notes has continued to improve. Definitely worth checking out the latest version. How Chef Yotam Ottolenghi Reset the Table I ordered two of Yotam Ottolenghi&rsquo;s cookbooks almost immediately after reading this article. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["cooking","iphone","alternate","check","colorized","definitely","english","extended","genres","german","krivov","looking","mindmeister","netflix","netflix","notes","ottolenghi","reset","streaming","table","trunk","yotam","almost","article","awesome","boosting","brainstorming","brought","checking","collaborating","collaborative","collection","color","command","commands","compilation","continued","cookbooks","customized","doesn","excursions","exploration","expose","favorites","files","genre","helpful","horror","iphone","improve","interface","latest","links","mapping","movies","ordered","pages","partnership","problem","productivity","reading","recieved","rsquo","shell","simple","software","specifically","version","worth"]
	},{
		"title": "The Systematic Casting Call is back!",
		"url": "/2016/08/12/the-systematic-casting-call-is-back/",
		"tags": ["personal","podcast","systematic"],
		"date": "Aug 12<span>th</span>, 2016",
		"ts": "1471006800",
		"summary": "The Systematic casting call is open for submissions! Here&rsquo;s the TLDR: I&rsquo;m looking for new podcast guests for Systematic and you can submit an intro to the Audiodrop. More details at the end, but here&rsquo;s some backstory. If you&rsquo;ve followed my story over the last year, it&rsquo;s been a rough one. To sum up: I&rsquo;ve been treated for ADHD and bi-polar for the last decade, successfully, and the diagnoses and treatment changed my life. A year ago, the psychiatrist I&rsquo;d been seeing for the last 5 years retired, and when I was placed with a new one, he immediately cut most of my meds. This left me unable to work, and the process of trying to find a new doctor went horribly, ultimately leaving me with the label of \"doctor shopper\" and making it nearly impossible to get help. Over this time, all of my work suffered, including progress on BitWriter (the commercial nvALT) and Marked 2, and my podcast schedule (Overtired and Systematic) dwindled to every other week at best. I recently underwent extensive (and expensive) testing to \"prove\" my conditions were real. My bi-polar diagnosis changed slightly to a more generalized \"cycling mood disorder,\" and my ADHD diagnosis was augmented to \"ADHD Inattentive.\" I applied for a waiting list for the psych department at the facility that handled the testing, and just came up on the list a couple of weeks ago. My new doctor there was able to take my history of successful treatment and my test results and put me back on the meds that helped me. I&rsquo;m currently back to work and extremely grateful that the nightmare is over. I actually think I&rsquo;m in an even better place than before, as the year without meds forced me to focus on other ways to deal with my ADHD, including exercise and meditation, and now I can augment the medications with practices that keep me not only productive, but far healthier than I&rsquo;ve been in the last decade. As a result, I&rsquo;m working on amping my Systematic schedule back up. This means I need more guests! To sum up the show, I&rsquo;ll quote my favorite iTunes review ever: \"Brett asks the awkward questions with wide-eyed curiosity.\" We talk about the jobs and hobbies that make each guest unique, and I learn something every week. I make a point of bringing on guests that no one in the tech/podcast world have heard from before, and love talking to people outside of the usual \"tech\" community. You love what you do, whether it&rsquo;s your day job&hellip;",
		"keywords": ["audition","casting","itunes","audiodrop","bitwriter","brett","inattentive","marked","overtired","systematic","upload","amping","answer","applied","apply","augment","augmented","awkward","backstory","before","borrow","bringing","casting","changed","commercial","community","conditions","contact","couple","curiosity","cycling","decade","decent","department","details","diagnoses","diagnosis","disorder","doctor","doesn","dwindled","enough","exercise","expensive","extensive","facility","favorite","focus","followed","forced","generalized","grateful","guest","guests","handled","healthier","heard","helped","history","hobbies","horribly","itunes","impossible","including","interesting","internet","intro","introduction","label","learn","leaving","links","looking","makes","making","medications","meditation","message","microphone","nearly","nightmare","nvalt","outside","people","personally","placed","podcast","point","polar","practices","process","productive","prove","psych","psychiatrist","pursuit","qualified","questions","quote","recently","record","results","retired","rough","rsquo","schedule","seeing","shopper","short","slightly","sometimes","story","submission","submissions","successful","successfully","suffered","suggest","talking","testing","think","treated","treatment","trying","unable","underwent","unique","waiting","weeks","while","willing","working","world","years"]
	},{
		"title": "TextExpander: simply indispensable",
		"url": "/2016/08/11/textexpander-simply-indispensable/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Aug 11<span>th</span>, 2016",
		"ts": "1470913200",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! Check out the new TextExpander. It&rsquo;s simply indispensable. Imagine never typing the same email address, chunk of code, brand message, directions or data more than once. Store them in a snippet — a shortcut you create. Share groups of snippets with others, expand your common knowledge, and keep them all in sync. TextExpander includes apps for Mac, iPhone, iPad, and Windows (currently in beta). You&rsquo;ll have all of your snippets on all your devices all the time. Boost your productivity and learn more at smilesoftware.com/brett",
		"keywords": ["iphone","smile","textexpander","windows","boost","brettterpstra","check","imagine","share","store","textexpander","thanks","windows","address","adjust","blank","brand","brett","brettterpstra","chunk","class","common","create","customize","devices","directions","email","expand","flexible","groups","height","https","iphone","image","includes","indispensable","knowledge","learn","loading","media","message","nofollow","noscript","original","others","picture","productivity","responses","rsquo","shortcut","simply","smilesoftware","snippet","snippets","source","sponsoring","srcset","title","typing","uploads","width"]
	},{
		"title": "The DevMate Mac Dev Survey results",
		"url": "/2016/08/10/the-devmate-mac-dev-survey-results/",
		"tags": ["developer","macos"],
		"date": "Aug 10<span>th</span>, 2016",
		"ts": "1470863100",
		"summary": "DevMate recently asked 679 Mac developers about their experiences selling inside and outside Apple&rsquo;s App Store. The results of the survey are enlightening, and of special interest to anyone currently deciding where and how to offer their app for sale. See what developers are saying about profitability, ease, review processes and more in the Mac Dev Survey results",
		"keywords": ["apple","developer","store","apple","devmate","store","survey","anyone","asked","deciding","developers","enlightening","experiences","inside","interest","offer","outside","processes","profitability","recently","results","rsquo","saying","selling","special","survey","where"]
	},{
		"title": "Web Excursions for August 05, 2016",
		"url": "/2016/08/05/web-excursions-for-august-05-2016/",
		"tags": ["bookmarks"],
		"date": "Aug 5<span>th</span>, 2016",
		"ts": "1470407280",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. David Chang&rsquo;s Unified Theory of Deliciousness I&rsquo;ve written (as many have) about the parallels between cooking and programming. David Chang of Momofuku waxes a little more philosophical about the code behind cooking. I can&rsquo;t tell you how much I love this. God in the Grit Despite being atheist, I find religion fascinating. Call me an educated outside observer. I started working on a new podcast with Rabbi Eric Linder a while back (still in progress), but in the meantime he&rsquo;s started up a new podcast with a Presbyterian reverend to discuss a wide range of topics from a religious perspective. Marp - Markdown Presentation Writer An editor for creating, presenting, and exporting slide decks using Markdown. Similar to Deckset, except the editor is built in, the code is open source, and you can build custom themes. GitKraken The Git GUI with a visual, intuitive, cross-platform experience and one-click undo functionality! Indexed search of commit messages, notes, and more. Taut - the fast, beautiful macOS native Slack app &ndash; Kickstarter A Kickstarter to support building a native macOS client for Slack. There&rsquo;s room for improvement, so I&rsquo;d be curious to see this happen. Quick reminders from Terminal (bash) - Linux version A quick modification of my reminders cli for Linux. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["burger","chang","david","momofuku","veggie","chang","check","david","deckset","deliciousness","gitkraken","indexed","kickstarter","linder","linux","markdown","mindmeister","momofuku","presbyterian","presentation","quick","rabbi","similar","slack","terminal","theory","unified","writer","atheist","beautiful","behind","between","boosting","brainstorming","brought","build","building","built","click","client","collaborating","collaborative","commit","cooking","creating","cross","curious","custom","decks","editor","educated","except","excursions","experience","exporting","fascinating","functionality","happen","improvement","intuitive","little","macos","mapping","meantime","messages","native","ndash","notes","observer","outside","parallels","partnership","perspective","philosophical","platform","podcast","presenting","productivity","programming","quick","range","religion","religious","reminders","reverend","rsquo","search","slide","software","source","started","support","themes","topics","using","version","visual","waxes","while","working","written"]
	},{
		"title": "Inbox Zero In No Time With MailButler",
		"url": "/2016/08/04/inbox-zero-in-no-time-with-mailbutler/",
		"tags": ["sponsor"],
		"date": "Aug 4<span>th</span>, 2016",
		"ts": "1470308400",
		"summary": "Thanks to MailButler for sponsoring BrettTerpstra.com this week! Every email user is familiar with this problem: important incoming emails often get lost if they are not responded to right away. They drop down quickly to the bottom of your inbox, replaced by lots of new messages. If you want to deal with the email later, you just have to press the “Snooze” button and set the time when you want to get back to it: be it in several hours or at the beginning of the next workday. After that, the email is removed from your inbox and moves back to the top later, right at your preferred time. While a \"snoozed\" email is no longer visible in the main email inbox, it is still available the entire time in a specially designated folder, allowing access at any time. The new Snooze feature is just the latest addition to an already impressive array of tools MailButler has previously offered to Apple Mail users. Among its productivity boosting features is the ability to schedule, undo, and track emails, convert emails to notes, upload email attachments regardless of size, and more. The developers plan to add new things to this list",
		"keywords": ["apple","inbox","mailbutler","among","apple","brettterpstra","inbox","mailbutler","snooze","sponsored","syndicate","thanks","vsayd","while","ability","access","aibawp","allowing","array","attachments","available","before","beginning","blockquote","boosting","bottom","brettterpstra","button","class","convert","designated","developers","download","email","emails","entire","familiar","feature","features","folder","height","hours","https","image","important","impressive","inbox","incoming","later","latest","ldquo","learn","loading","longer","media","messages","moves","nofollow","noscript","notes","offered","offers","often","original","picture","preferred","press","previously","problem","productivity","program","quickly","rdquo","reach","regardless","removed","replaced","responded","right","schedule","several","snoozed","solution","source","specially","sponsoring","srcset","strong","title","tools","track","upload","uploads","users","visible","width","workday"]
	},{
		"title": "Product Hunt bookmarklet update",
		"url": "/2016/07/29/product-hunt-bookmarklet-update/",
		"tags": ["bookmarklet"],
		"date": "Jul 29<span>th</span>, 2016",
		"ts": "1469808300",
		"summary": "I posted a bookmarklet for quickly opening Product Hunt product links in the same browser tab in June. It was based on a specific CSS selector for finding the \"Get It\" link, and Product Hunt has since changed the markup, breaking the bookmarklet. Just drag the button below to your bookmarks bar (removing the older one if you have it installed) and click it when you&rsquo;re on a Product Hunt product page. If your Chromium browser doesn&rsquo;t allow bookmarklets (like Arc), download the PHopen extension version and follow the instructions here",
		"keywords": ["chrome","product","safari","chromium","phopen","product","store","allow","avoid","based","below","bookmarklet","bookmarklets","bookmarks","breaking","browser","button","buttons","change","changed","chooses","click","containing","continue","doesn","download","dropdown","extension","finding","forgiving","handles","installed","instructions","links","markup","menus","older","opening","posted","product","proof","quick","quickly","relatively","removing","reoccurrence","rsquo","selector","since","specific","version","website"]
	},{
		"title": "Indeed Prime: Apply to 100 top tech companies with 1 simple application",
		"url": "/2016/07/28/indeed-prime-apply-to-100-top-tech-companies-with-1-simple-application/",
		"tags": ["sponsor"],
		"date": "Jul 28<span>th</span>, 2016",
		"ts": "1469703600",
		"summary": "Thanks to Indeed Prime for sponsoring BrettTerpstra.com this week! Indeed.com, the number 1 job site in the world, has created a special site just for tech: Indeed Prime. Indeed Prime is designed to match top software engineers, data scientists, product managers and UX designers with the best tech employers. Indeed Prime is free and signing up is easy. Apply in a few minutes and go live in our exclusive network of top tech companies. Indeed Prime is launched in San Francisco, New York, Seattle, Boston, Austin and Los Angeles. Meet companies immediately. Interested employers reach out with salary, position, and equity upfront. Only elite companies are selected for Indeed Prime’s exclusive network. Get paid well. The average salary offered through Indeed Prime for software engineers is $125,000. Plus, you get a $2,000 signing bonus from Indeed Prime",
		"keywords": ["angeles","boston","chicago","francisco","indeed","seattle","washington","angeles","apply","austin","boston","brettterpstra","check","francisco","indeed","interested","prime","seattle","sponsored","syndicate","thanks","vsayd","average","blockquote","bonus","brettterpstra","class","companies","created","designed","designers","elite","employers","engineers","equity","exclusive","height","https","image","indeed","launched","loading","managers","match","media","minutes","network","nofollow","noscript","offered","original","picture","position","prime","product","reach","salary","scientists","selected","signing","software","source","special","sponsoring","srcset","strong","through","title","upfront","uploads","width","world"]
	},{
		"title": "A new Markdown Service Tool for easy MultiMarkdown tables",
		"url": "/2016/07/27/csv-to-multimarkdown-tables/",
		"tags": ["markdown","markdownservices","multimarkdown"],
		"date": "Jul 27<span>th</span>, 2016",
		"ts": "1469649060",
		"summary": "So first, the good news, I have my meds sorted out and it seems like I&rsquo;m back on track. I&rsquo;m sure I&rsquo;ll talk more about it on Overtired, and will post more of the story here after I&rsquo;m sure things have leveled out. I&rsquo;m primarily directing my energy toward BitWriter (the nvALT update), but wanted a morning project, thus&hellip; This tool converts CSV style input to MultiMarkdown tables. It&rsquo;s based on Christopher Brandow&rsquo;s Swift utility that I linked a little bit back. I took the idea and rebuilt it in Ruby, added handling for a few things I considered missing, and turned it into a Markdown Service Tool. The Service lets you use simple CSV syntax for creating MultiMarkdown tables. Comma-separated cells, and alignment row is built based on Christopher&rsquo;s syntax using \"<\", \">\", and \"=\" (left, right, center). This version allows the use of double quotes to include a comma within a cell, handles \"cleaning\" (justifying spaces based on alignment), and adds a few extra syntax characters. Use CSV formatting, with cells separated by commas and newlines defining end of row. A second row containing only , , , and commas (whitespace ignored) can be added to force column aligment. If this row isn&rsquo;t found, one will be created for you with a default \"center\" value for every column. An alignment row must contain the same number of cells as the longest row. Because this tool can handle figuring out how to pad rows of different lengths, it&rsquo;s forgiving in every area except this row. Which MultiMarkdown will interpret as \"one\" being two columns wide, \"two\" being three columns. Whitespace surrounding cell data is ignored Empty (blank) rows are stripped To force an empty row, use a single comma on a line To force a single-cell (full span) empty row, use&nbsp;&raquo; alone on the line Download the service as part of the Markdown Service Tools package. I&rsquo;ve also thrown the script up as a Gist, as messy as it may be. Markdown Service Tools v3.0.3 Download Markdown Service Tools v3.0.3 The Markdown Service Tools are a collection of macOS Services designed to make creating Markdown-formatted text that much easier. Services work in almos any macOS application. Published 01/09/14. Updated 09/14/20. Changelog Donate &bull; More info&hellip; I bet you're making tons on all the time you save. Or me on GitHub",
		"keywords": ["column","comma","excel","microsoft","separated","values","alignment","because","bitwriter","brandow","changelog","christopher","column","comma","donate","download","empty","example","github","header","markdown","multimarkdown","notes","outputs","overtired","published","service","services","swift","table","tools","updated","whitespace","added","aligment","alignment","allows","almos","alone","based","beginning","blank","built","caption","cells","center","characters","cleaning","collection","column","columns","comma","commas","consecutive","considered","contain","containing","contents","converts","create","created","creates","creating","default","defines","defining","designed","different","directing","double","easier","empty","energy","example","except","extra","figuring","first","force","forgiving","formatted","formatting","found","handle","handles","handling","headers","hellip","ignored","input","interpret","justifying","lengths","leveled","linked","little","longest","looks","macos","making","messy","missing","morning","multiple","newlines","nvalt","package","primarily","project","quotes","raquo","rebuilt","required","right","rsquo","rundown","script","second","seems","separated","service","simple","single","sorted","spaces","spanning","story","stripped","style","surround","surrounding","syntax","table","tables","thrown","toward","track","turned","using","utility","value","version","wanted","whitespace","within"]
	},{
		"title": "MicFlip 2.0, the best USB cable I've ever had",
		"url": "/2016/07/26/micflip-2-dot-0-the-best-usb-cable-ive-ever-had/",
		"tags": ["hardware"],
		"date": "Jul 26<span>th</span>, 2016",
		"ts": "1469547900",
		"summary": "A while back, WinnerGear sent me a reversible micro USB cable called the Micflip. It was the result of a Kickstarter project, and it was great. The micro USB end of the cable could be inserted into a port in either direction, a la Lightning adapters. I talked about it with Ed Zitron on Systematic 162, and we both agreed this should always have existed. I just got the 2.0 version in the mail yesterday. In addition to gold plating, rubber protection on the plugs, a nylon braided cable, and the reversible Micro USB plug, the USB Type-A (the port on your computer or hub) at the other end is now reversible as well. This is amazing. This should absolutely always have existed. The cable works for data and charging, and I can vouch that you can plug it into a hub with your eyes closed, first try. There&rsquo;s not much else to say. This is awesome. You can pick one up for about $20. If you own any peripherals with micro USB adapters (and who doesn&rsquo;t?), this is a no-brainer",
		"keywords": ["cable","micflip","serial","universal","kickstarter","lightning","micflip","micro","systematic","winnergear","zitron","adapters","agreed","amazing","awesome","braided","brainer","cable","called","charging","closed","computer","direction","doesn","either","existed","first","great","inserted","micro","nylon","peripherals","plating","plugs","project","protection","reversible","rsquo","rubber","talked","version","vouch","while","works","yesterday"]
	},{
		"title": "The intriguing legal ramifications of Pokémon GO",
		"url": "/2016/07/25/the-intriguing-legal-ramifications-of-pokemon-go/",
		"tags": ["legal"],
		"date": "Jul 25<span>th</span>, 2016",
		"ts": "1469461080",
		"summary": "I have a guest post for you today. It&rsquo;s by Gary Nissenbaum, Esq. (not pictured at right), the managing attorney for the Nissenbaum Law Group. His firm focuses on intellectual property cases and works with developers and cases pertaining to apps regularly. By Gary Nissenbaum, Esq. Recently, there has been a virtual tsunami of articles about the so-called hidden dangers of using the Pokémon GO app. The vast majority of them concern potential violations of the privacy rights of both consumers and landmark-owners. The media’s Chicken Little-like take on this is that augmented reality apps are opening the door to a dystopian future. However, what has not been widely discussed is the impact of all this on the developers of augmented reality apps. That deserves some space as well. I am the managing attorney of the Nissenbaum Law Group, LLC, a boutique commercial law firm located in NY, NJ, PA and TX with a focus in intellectual property. Our firm handles a fair amount of work involving apps. This includes everything from licensing agreements and movie and book deals to lawsuits over infringement of our clients’ intellectual property. We have reviewed the Pokémon GO controversy from the developers’ perspective and have come to the conclusion that it raises some very intriguing legal issues. Here are a few. What sort of access is really necessary in order to utilize the app? Many commentators have complained that signing into Pokemon GO provides “full access” to users’ Google accounts, i.e. gmail, maps, contacts, calendar, etc. See Slate.com’s excellent article on this concern. But does the app need to require a user to give total access to their Google account or is that simply an unnecessary overreach? If not, why stir up the hornet’s nest of privacy concerns when you can simply dial back the access without impairing the app’s functionality? The developer may not have complete control over how the app is downloaded, but that is precisely the point. Indeed, implementing such legal protections might give the developer a marketing edge to sell a more privacy-friendly product when others are not, e.g. end-to-end encryption. On the other hand, many developers have taken the position that no change is necessary since the heightened access level is fully disclosed and consented to by the app users in the terms and conditions and privacy policy. Either way, the developer should enter this legal thicket with eyes open. There is a downside of having&hellip;",
		"keywords": ["augmented","iphone","pokemon","reality","virtual","another","appropriation","arlington","aspect","augmented","believe","candy","cemetery","chicken","company","consumer","developer","different","directory","doesn","either","facebook","google","gotta","group","having","holocaust","however","hubbell","indeed","interests","internet","intrusion","jersey","legal","likeness","little","martindale","messenger","mewtwo","museum","national","nissenbaum","notable","pennsylvania","perhaps","pikachulegal","players","pokemon","privacy","private","proper","protecting","publicity","quality","rating","reality","recently","restatement","restaurant","seclusion","second","sections","service","setting","slate","stops","texas","torts","whatsapp","where","while","zziyfmvrsstzp","access","account","accounts","adage","adult","advertises","affairs","against","agreements","allowing","amount","another","apply","appropriates","arguably","arlington","arose","article","articles","aside","associate","associated","associating","attorney","augmented","authorize","awarded","aware","backlash","based","basic","basis","because","behooves","benefit","beyond","blogs","boutique","brand","breaks","brettterpstra","building","businesses","calendar","called","campaign","candies","candy","catch","categories","caused","cemetery","challenge","challenges","change","circumstances","claim","claims","class","clauses","clients","commentators","commercial","company","complained","complemented","completely","concern","concerns","conditions","conduct","consented","consequences","consider","consumers","contacts","continuously","control","controversy","copyright","copyrighted","country","cover","crashes","create","created","critical","cyber","damage","damages","dangers","deals","defense","depicted","deserves","design","developer","developers","differ","digital","diminishes","disclosed","discounted","discussed","disruptive","distracted","distributing","distributor","doing","downloaded","downside","driving","dystopian","eastern","email","emphasis","encryption","endtoend","enforce","enforcement","enhanced","enter","entertainment","everything","exacerbated","example","examples","excellent","existence","extend","family","federally"]
	},{
		"title": "Claquette - Animated Screenshots",
		"url": "/2016/07/21/claquette-animated-screenshots/",
		"tags": ["sponsor"],
		"date": "Jul 21<span>st</span>, 2016",
		"ts": "1469098800",
		"summary": "Thanks to Claquette for sponsoring BrettTerpstra.com this week! Have you ever needed to communicate application or website features, or to demonstrate interactions in software products quickly and clearly? Animated GIFs are a perfect way to show exactly what you need to, and Claquette makes it easy. Claquette allows you to seamlessly record your Mac&rsquo;s screen, microphone and camera. After finishing a recording, use the built-in crop and trim tools to define the relevant portions of your recording before you export to a movie file, or as highly optimized animated GIF or PNG. Create stunning video tutorials or screencasts to reach your online audience in a more personal way. Use short videos to promote and sell your products or create animated GIFs to enhance your blog posts. Animated GIFs are also great for developers and designers to communicate issues in software projects or create meaningful bug reports. Claquette can also be integrated into your professional video editing workflow with the optional Pro Exporter Pack. This pack contains exporters for Apple&rsquo;s Final Cut Pro X, Motion 5 and ProRes. The custom lossless recording codec guarantees high quality recordings and vibrant, color perfect exports. Visit our product page to learn more about all features, or download the application from the Mac App Store",
		"keywords": ["format","graphics","interchange","animated","apple","brettterpstra","claquette","create","ednyn","exporter","kwsmo","motion","prores","sponsored","store","syndicate","thanks","visit","vsayd","allows","animated","audience","before","blockquote","brettterpstra","built","camera","claquette","class","clearly","codec","color","contains","create","custom","define","designers","developers","download","editing","enhance","export","exporters","exports","features","finishing","great","guarantees","height","highly","https","image","integrated","interactions","issues","learn","loading","lossless","makes","meaningful","media","microphone","movie","needed","nofollow","noscript","online","optimized","optional","original","personal","picture","portions","posts","product","products","professional","projects","promote","quality","quickly","reach","record","recording","recordings","relevant","reports","rsquo","screen","screencasts","seamlessly","short","software","source","sponsor","sponsoring","srcset","stunning","title","tools","tutorials","uploads","vibrant","video","videos","website","width","workflow"]
	},{
		"title": "Mac 'Pick a Bundle' 2016",
		"url": "/2016/07/20/mac-pick-a-bundle-2016/",
		"tags": ["bundle"],
		"date": "Jul 20<span>th</span>, 2016",
		"ts": "1469042880",
		"summary": "The Mac &lsquo;Pick a Bundle&rsquo; 2016 from Creatable has some real gems this year. Choose any 10 of the options to build your own bundle for $39. With options like Vox + Loop, Yummy FTP Pro, BlueSense, AppDelete, WaterMarker 2, TaskPaper, MailButler, Mind Vector, and many more, you can grab the software you don&rsquo;t already have at a great price",
		"keywords": ["bundle","creatable","software","taskpaper","appdelete","bluesense","bundle","check","choose","creatable","mailbutler","taskpaper","vector","watermarker","yummy","build","bundle","great","lsquo","options","price","rsquo","software","useful"]
	},{
		"title": "Back from Macstock",
		"url": "/2016/07/19/back-from-macstock/",
		"tags": ["personal"],
		"date": "Jul 19<span>th</span>, 2016",
		"ts": "1468936680",
		"summary": "I&rsquo;m headed home from Macstock 2016 on an Amtrak train as I write this. It&rsquo;s been a great weekend. I got ill on the way to Chicago, and remained under the weather for the duration of the conference, but hey, I feel good on the train ride home, which makes sense based on how little I enjoy traveling. Macstock was an opportunity to meet up with many of the people and personalities I always enjoyed going to Macworld for. It&rsquo;s not huge (yet), but it&rsquo;s big enough to be a lot of fun, the speakers were great and the attendees were wonderful. I plan to go back next year (might even pitch a talk of my own), and hope to see it grow rapidly. Thanks to Mike, Barry, all the speakers, and all the people who headed out to support making a new big meetup for the Mac community. By the time I post this, I&rsquo;ll probably be 38. I only know this because my Mac popped up a notification from Facebook&rsquo;s Birthday calendar this morning. It&rsquo;s been a whirlwind few days. Systematic is on a brief hiatus as I&rsquo;m traveling a lot more over the next few weeks, but Christina and I are trying to keep Overtired regular",
		"keywords": ["amtrak","chicago","macstock","overtired","systematic","amtrak","barry","birthday","chicago","christina","facebook","macstock","macworld","overtired","systematic","thanks","attendees","based","because","brief","calendar","community","conference","enjoy","enjoyed","enough","going","great","headed","hiatus","little","makes","making","meetup","morning","notification","people","personalities","pitch","popped","rapidly","regular","remained","rsquo","sense","speakers","support","train","traveling","trying","under","weather","weekend","weeks","whirlwind","wonderful","write"]
	},{
		"title": "MightyDeals - Massive discounts on Stock Photos",
		"url": "/2016/07/14/mightydeals-massive-discounts-on-stock-photos/",
		"tags": ["sponsor"],
		"date": "Jul 14<span>th</span>, 2016",
		"ts": "1468494000",
		"summary": "Thanks to MightyDeals for sponsoring BrettTerpstra.com this week! Depositphotos offers one of the largest stock photo libraries on the Web, and you can nab either 100 or 200 images of your choice for up to 87% off the regular price! What makes this deal so spectacular is that besides a ginormous library to browse, you can select ANY SIZE photo you want, including the much sought-after and generally pricey XXL and XXXL sizes. This Mighty Deal is so mighty that for a limited time only, we&rsquo;re bringing you two incredible pricing options to get this phenomenal deal: 50,000,000+ Files Available It may take you an entire lifetime or two to get through DepositPhoto&rsquo;s entire library of stock images! With more than 50 million high-quality photos, and vector images, it would be downright impossible for you not to find exactly what you&rsquo;re looking for! Dozens of Different Categories Don&rsquo;t worry, those 50 million plus assets available in the library aren&rsquo;t all from the same category. That would really be nuts! Instead, dozens of today&rsquo;s most popular trends and topics are represented including: Abstract, Animals, Business, Cities, Computers, Food and Drink, Holidays, Medicine, Nature, People, Religious, Science, Shopping, Sports and so much more. No Daily Limit Royalty-Free Photos Choose Any Size You Want Customizable Vector Images Multi-Language Support",
		"keywords": ["depositphotos","library","mightydeals","abstract","animals","available","brettterpstra","business","categories","check","choose","cities","computers","customizable","daily","depositphoto","depositphotos","different","dozens","drink","files","highlights","holidays","images","language","limit","medicine","mighty","mightydeals","multi","nature","people","photos","regularly","religious","royalty","science","shopping","sports","support","thanks","vector","assets","available","besides","bringing","browse","category","choice","downright","dozens","either","entire","generally","ginormous","images","impossible","including","incredible","largest","libraries","library","lifetime","limited","looking","makes","mighty","million","offers","options","phenomenal","photo","photos","popular","price","pricey","pricing","quality","regular","represented","rsquo","sizes","sought","spectacular","sponsoring","stock","through","today","topics","trends","vector","worry"]
	},{
		"title": "Web Excursions for July 13, 2016",
		"url": "/2016/07/13/web-excursions-for-july-13-2016/",
		"tags": ["bookmarks"],
		"date": "Jul 13<span>th</span>, 2016",
		"ts": "1468426200",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. A Quick Swift Script Yak Shave A Swift script/OS X Service by Christopher Brandow for quickly creating MultiMarkdown tables with CSV-like shorthand, avoiding all the pipes, colons, and dashes that are painful to type. How well do you know CSS display? A complete overview of the display property in CSS. Worthwhile reading even if you&rsquo;ve been designing web pages for years. engageinteractive/front-end-baseplate - _mixins.scss The mixins from Engage Interactive&rsquo;s front-end baseplate are huge timesavers. For some highlights, see 10 Sass (SCSS) mixins you should be using in your projects. iOS Stash A Visual directory of iOS app development tools. keith/reminders-cli A simple Swift-based CLI for interacting with OS X reminders. Available from Homebrew or build it yourself. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["cascading","sheets","style","available","brandow","check","christopher","engage","homebrew","interactive","mindmeister","multimarkdown","quick","script","service","shave","stash","swift","visual","worthwhile","avoiding","based","baseplate","boosting","brainstorming","brought","build","collaborating","collaborative","colons","creating","dashes","designing","development","directory","display","engageinteractive","excursions","front","highlights","interacting","keith","mapping","mixins","overview","pages","painful","partnership","pipes","productivity","projects","property","quickly","reading","reminders","rsquo","script","shorthand","simple","software","tables","timesavers","tools","using","years"]
	},{
		"title": "Web Excursions for July 05, 2016",
		"url": "/2016/07/05/web-excursions-for-july-05-2016/",
		"tags": ["bookmarks"],
		"date": "Jul 5<span>th</span>, 2016",
		"ts": "1467749580",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Brave A new web browser project focusing on privacy and safety. It&rsquo;s open source on GitHub as well, with versions for iOS, Mac, Windows, Android, and more. Launch Center Pro I&rsquo;ve used Launch Center Pro on and off, but the addition of shortcuts you can add to a force touch from the homescreen and a customizable Today Widget pallete make it extremely handy. anime.js A flexible, lightweight JavaScript animation library using CSS, Individual Transforms, SVG, DOM attributes and JS Objects. Type Anything A free typography tool for creating and trying out font combinations for web projects. I&rsquo;m a sucker for anything that makes typography easier&hellip; Free Landing UI Kit A free UI kit for creating landing pages in Sketch or Photoshop. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["animation","browser","cascading","document","element","graphics","javascript","jquery","model","object","scalable","sheets","style","vector","android","brave","center","check","github","individual","javascript","landing","launch","mindmeister","objects","photoshop","sketch","today","transforms","widget","windows","animation","anime","attributes","boosting","brainstorming","brought","browser","collaborating","collaborative","combinations","creating","customizable","easier","excursions","flexible","focusing","force","handy","hellip","homescreen","landing","library","lightweight","makes","mapping","pages","pallete","partnership","privacy","productivity","project","projects","rsquo","safety","shortcuts","software","source","sucker","touch","trying","typography","using","versions"]
	},{
		"title": "Web Excursions for June 24, 2016",
		"url": "/2016/06/24/web-excursions-for-june-24-2016/",
		"tags": ["bookmarks"],
		"date": "Jun 24<span>th</span>, 2016",
		"ts": "1466783700",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. BusyCal 3 BusyMac has released BusyCal 3 for Mac and iOS. It&rsquo;s a calendar app with an excellent month view with integrated info panel, integrated weather info and travel time estimates, a menu bar mini-calendar, calendar sets you can switch between, and much more. Bear - Notes for iPhone, iPad and Mac I&rsquo;m a little jealous that Bear from Shiny Frog is ahead of BitWriter on its beta release, but I&rsquo;ve been testing it for a while and it&rsquo;s a gorgeous note-taking app with sync across macOS and iOS. Elegant editing with a Markdown-esque syntax, and solid export options. Marvel - Design Apps On Your Phone on the App Store An intetesting app for mocking up iPhone, iPad, and Apple Watch apps starting with pen and paper and working up to clickable prototypes you can share. Apple doesn&rsquo;t understand photography All true. Cutestrap A tiny Bootstrap alternative for web designers who just want grid and typography features. Pure CSS (with Sass), including tools for easily creating and adjusting vertical rhythm, consistent form fields and grid layouts. eggplanetio/mert A CLI-based window and pane manager for iTerm 2 and 3. Stencil I&rsquo;ve been having fun with Pablo from Buffer. This new web app is about the same thing (making quick social media images with text), but offers a little more flexibility in design. Great for making demotivational posters as a rebellion against trite quotes on zen backgrounds. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["iphone","store","touch","apple","bitwriter","bootstrap","buffer","busycal","busymac","check","cutestrap","design","elegant","great","markdown","marvel","mindmeister","notes","pablo","phone","shiny","stencil","store","watch","across","adjusting","against","ahead","backgrounds","based","between","boosting","brainstorming","brought","calendar","clickable","collaborating","collaborative","consistent","creating","demotivational","design","designers","doesn","easily","editing","eggplanetio","esque","estimates","excellent","excursions","export","features","fields","flexibility","gorgeous","having","iphone","iterm","images","including","integrated","intetesting","jealous","layouts","little","macos","making","manager","mapping","media","mocking","offers","options","panel","paper","partnership","photography","posters","productivity","prototypes","quick","quotes","rebellion","release","released","rhythm","rsquo","share","social","software","solid","starting","switch","syntax","taking","testing","tools","travel","trite","typography","understand","vertical","weather","while","window","working"]
	},{
		"title": "Quickie bookmarklet for Product Hunt",
		"url": "/2016/06/23/quickie-bookmarklet-for-product-hunt/",
		"tags": ["bookmarklet"],
		"date": "Jun 23<span>rd</span>, 2016",
		"ts": "1466712000",
		"summary": "I love Product Hunt, and find new things there daily. I just get annoyed that when I open a bunch of products in tabs, each tab then creates a new tab when you try to go to the product&rsquo;s homepage. This bookmarklet just finds the \"Get it\" button on a product page and opens the target url in the same tab. Simple, effective. (Only tested in Chrome, but should work anywhere.) Just drag the button below to your bookmarks bar and click it when you&rsquo;re on a Product Hunt product page",
		"keywords": ["chrome","product","safari","chrome","product","simple","annoyed","anywhere","basis","below","bookmarklet","bookmarks","bunch","button","click","creates","daily","effective","finds","found","handy","homepage","opens","product","products","quick","rsquo","target","tested","whipped"]
	},{
		"title": "SUMMERFEST: Artisanal software for writers",
		"url": "/2016/06/23/summerfest-artisinal-software-for-writers/",
		"tags": ["sponsor"],
		"date": "Jun 23<span>rd</span>, 2016",
		"ts": "1466679600",
		"summary": "Thanks to Summerfest for sponsoring BrettTerpstra.com this week! This week, Summerfest can save you 25% on your choice of some of the best and most interesting tools for writers, designers, and thinkers. Get great prices, straight from the developers &mdash; no bundles, games or gimmicks. Tinderbox: the tool for notes. Storyspace: serious hypertext narrative DEVONthink Pro Office: document management reinvented Nisus Writer Pro: the powerful word processor for OS X. Scrivener: grow your ideas in style. Bookends: the reference manager you’ve been looking for. Aeon Timeline 2: the timeline tool for creative thinking. Taskpaper: make lists and get organized BBEdit: power tool for text TextExpander: type more with less effort Scapple: quickly capture and connect ideas PDFpen: powerful pdf editing WriteRoom: write without distractions HoudahSpot: powerful file search Take Control Books: the answers that you need now. Summer&rsquo;s the time for new plans, fresh projects, and great new ideas. Whether you&rsquo;re mapping out your next novel, finishing your dissertation, planning a product, or writing memories for your grandkids, these great tools will help. These are tools with attitude and style, tools crafted by creators, not focus groups. These tools live at the intersection of art and research, crafted with care and refined by years of study and exploration. Check out the Summerfest site for more info, and grab the software you need to create and write",
		"keywords": ["artisanal","creativity","scrivener","software","summerfest","tinderbox","writing","bbedit","bookends","books","brettterpstra","check","control","devonthink","houdahspot","nisus","office","pdfpen","scapple","scrivener","storyspace","summer","summerfest","taskpaper","textexpander","thanks","timeline","tinderbox","writeroom","writer","answers","artisanalsoftwarefestival","attitude","brettterpstra","bundles","capture","choice","class","connect","crafted","create","creative","creators","designers","developers","dissertation","distractions","document","editing","effort","exploration","finishing","focus","fresh","games","gimmicks","grandkids","great","groups","height","https","hypertext","ideas","image","interesting","intersection","lists","loading","looking","management","manager","mapping","mdash","media","memories","narrative","nofollow","noscript","notes","novel","organized","original","picture","planning","plans","powerful","prices","processor","product","projects","quickly","refined","reinvented","research","rsquo","search","serious","software","source","sponsor","sponsoring","srcset","straight","strong","study","style","summerfest","thinkers","thinking","timeline","title","tools","uploads","width","write","writers","writing","years"]
	},{
		"title": "A new email trick with SaneBox, Spark, and OmniFocus",
		"url": "/2016/06/22/a-new-email-trick-with-sanebox-spark-and-omnifocus/",
		"tags": ["email","productivity"],
		"date": "Jun 22<span>nd</span>, 2016",
		"ts": "1466610180",
		"summary": "I&rsquo;ve used SaneBox happily for a couple of years now. It&rsquo;s a tool that automatically sorts your inbox, filtering out things you can read later, newsletters, bulk emails, and more, leaving your inbox with only the emails that actually matter. You can train it by moving emails from your inbox to special folders, and after a couple of weeks it will have your inbox neat and tidy. I&rsquo;ve also been using Spark on iOS as my email client. I love its configurability, and it works perfectly with my existing system, providing parity with my email habits on my Mac. A new feature that SaneBox added recently, SaneFwd, lets you set up custom folders that automatically forward emails to one or more addresses. I was excited because now I could use a \"move to folder\" shortcut to send emails to my OmniFocus mail drop. When the SaneFwd feature first launched it lacked the OmniFocus domain, so I requested it and was just informed that it&rsquo;s been added. This makes it easy for me to add OmniFocus capabilities to Spark, which it&rsquo;s currently lacking. I created a folder called @OmniFocus that forwards to my sync.omnifocus.com address. By customizing a swipe gesture in Spark settings, I can now do a long swipe to the left to move an email to my custom SaneFwd folder, automatically creating a task for it in OmniFocus. I highly recommend SaneBox, so here&rsquo;s my affiliate link if you want to check it out. I also think Spark is the best iOS email client, having tried them all (I think). Here&rsquo;s Macworld&rsquo;s review, and you can get Spark on the App Store",
		"keywords": ["omnifocus","sanebox","spark","macworld","omnifocus","sanebox","sanefwd","spark","store","added","address","addresses","affiliate","automatically","because","called","capabilities","check","client","configurability","couple","created","creating","custom","customizing","domain","email","emails","excited","feature","filtering","first","folder","folders","forwards","gesture","habits","happily","having","highly","inbox","informed","lacked","lacking","later","launched","leaving","makes","moving","newsletters","omnifocus","parity","perfectly","providing","recently","recommend","rsquo","settings","shortcut","sorts","special","swipe","system","think","train","tried","using","weeks","works","years"]
	},{
		"title": "My current blogging workflow",
		"url": "/2016/06/20/my-current-blogging-workflow/",
		"tags": ["markdown","personal","writing"],
		"date": "Jun 20<span>th</span>, 2016",
		"ts": "1466452020",
		"summary": "Admittedly, my publishing pace has been down for a while, but I&rsquo;m working to get it back to its former levels. This reboot has been a good chance to re-evaluate my workflow. I thought it was also a good time to share my current list of tools and tricks for blogging. The trick I&rsquo;ve found to always having something to write about is simply to write down everything I think of writing about. I keep a single list of quick ideas in nvALT titled \"Blogging Ideas\". I use a TaskPaper formatted1 list to make it easy to clean up as I mark things @done. As a large part of my blogging is about projects I work on, I keep a separate list of \"Project Ideas.\" When a project moves from development to release and I want to write about it, it moves to the writing list. I use wiki links in these lists to create a \"starter note\" for brainstorming. In nvALT this means surrounding the subject with double square brackets, e.g. . This is recognized as a wiki link, and clicking the link opens a search for a note with the same name, and hitting enter will create that note if it doesn&rsquo;t exist. In the starter note I&rsquo;ll begin with an exposition paragraph. I usually write it as if it were the first paragraph of a final piece, covering the reason for the post and summarizing the concepts. This little graf makes it much easier for me to come back to an idea, remember what I was thinking more clearly, and avoid the \"blank page syndrome.\" If I have a clear enough idea at this point, I&rsquo;ll start outlining the sections ideas. Just the major points, things that would become level 2 headers if I split the post up. A Markdown format bullet list does the trick. If an idea gets a starter page and outline, it moves up on the main list. At this point I can leave it until I&rsquo;m ready to take it to the next stage. When I&rsquo;m ready to start working on a post, it can go one of two directions. If it&rsquo;s a simple (and short) post, I can just copy the topic outline into MultiMarkdown Composer and start writing. If I want to work on iOS, I have a plethora of tools I enjoy writing in (and I do have an iOS writing app comparison post/series on that Blogging Ideas list). I generally do my best writing on my laptop, though, so MultiMarkdown Composer is where I head most often. If a post is longer&mdash;whether it&rsquo;s a tutorial, project description, or a review&mdash;it goes into a mind map for further brainstorming. I love iThoughtsX (and iThoughts HD&hellip;",
		"keywords": ["blogging","ithoughts","marked","toketaware","tools","workflow","admittedly","amazon","aside","blogging","brainstorming","collecting","composer","developing","dixit","export","google","ideas","jekyll","markdown","marked","mindnode","multimarkdown","notes","outline","preferences","preview","project","searchlink","service","services","simply","snippets","suggested","system","systematic","taskpaper","textexpander","tools","using","while","within","writing","above","adding","almost","alone","another","anyone","anyway","anywhere","apple","automatically","avoid","backlink","basic","because","before","begin","between","bindings","blank","blogging","bottom","brackets","brain","brainstorming","branching","brand","brettterpstra","broken","browser","built","bullet","capabilities","capability","capitalizing","chance","check","child","class","clean","cleaned","clear","clearly","clicking","clockwise","collect","collecting","comments","common","company","comparison","completely","complex","concepts","contains","converts","copying","correction","count","covering","create","creating","crippling","curiosity","decimal","define","delimiters","depending","description","developed","developing","development","develops","directions","document","doesn","doing","double","dragging","easier","easily","editor","efficiency","endnotes","enjoy","enough","enter","entry","especially","everything","exist","export","exposition","extension","extensions","extensive","feature","feedback","files","first","flexibility","fnref","footnote","footnotes","format","formats","formatted","former","found","general","generally","getting","going","grammar","grand","great","groups","guest","handling","handy","having","headers","height","higher","highlight","highlighter","hitting","hogbaysoftware","https","ithoughts","ithoughtsx","itunes","ideal","ideas","iknow","image","immense","important","improving","individual","initial","insatiable","inserting","intended","interest","items","ithoughts","ithoughtsx","itunes","keybinding","keyboard","keystroke","language","laptop","ldquo","leave","leaving","level","levels","likely","links","lists","little","loading"]
	},{
		"title": "Shimo: the #1 VPN client for Mac",
		"url": "/2016/06/16/shimo-the-number-1-vpn-client-for-mac/",
		"tags": ["sponsor"],
		"date": "Jun 16<span>th</span>, 2016",
		"ts": "1466074800",
		"summary": "Thanks to Shimo for sponsoring BrettTerpstra.com this week! It&rsquo;s no secret that a VPN client is a must-have for those who want to keep their data safe. To surf anonymously and with encrypted transmission of your data, a reliable online bodyguard is needed. This is exactly what Shimo is. This VPN client for Mac guarantees highest security standards and delivers an optimized user experience. It also goes above and beyond by allowing you to automatically connect VPN accounts based on certain trigger conditions. All you have to do is to choose the condition that fits best. Once you&rsquo;ve done so, Shimo makes sure that your network connection is automatically secured whenever required. Connecting to an unknown Wi-Fi network, for example, or under any other conditions that you set up. You can also configure actions to be performed when a particular VPN connection is established or terminated. Connect to network servers, launch other applications or just check your company email &mdash; everything is possible with Shimo&rsquo;s automation features. Last, but not least: Shimo enables you to establish multiple connections at the same time. The developers at Feingeist Software have recently announced a major update to Shimo. Shimo 4.1 now easily handles complex VPN networking configurations, including route management and DNS handling. It&rsquo;s a perfect time to give it a try. No borders. No limits. Just connect with Shimo",
		"keywords": ["address","internet","network","brettterpstra","client","connect","connecting","feingeist","shimo","software","sponsored","syndicate","thanks","vsayd","above","accounts","actions","allowing","announced","anonymously","applications","automatically","automation","based","beyond","blockquote","bodyguard","borders","brettterpstra","certain","check","choose","class","client","company","complex","conditions","configurations","configure","connect","connections","delivers","developers","easily","email","enables","encrypted","established","everything","example","experience","features","guarantees","handles","handling","height","highest","https","image","including","launch","limits","loading","major","makes","management","mdash","media","multiple","needed","network","networking","nofollow","noscript","online","optimized","original","particular","performed","picture","possible","recently","reliable","required","route","rsquo","secret","secured","security","servers","source","sponsoring","srcset","standards","terminated","title","transmission","trigger","under","unknown","uploads","whenever","width"]
	},{
		"title": "Web Excursions for June 14, 2016",
		"url": "/2016/06/14/web-excursions-for-june-14-2016/",
		"tags": ["bookmarks"],
		"date": "Jun 14<span>th</span>, 2016",
		"ts": "1465917600",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Awesome Desktop Switcher A Desktop switcher for Mac that allows you to have different folders and files on multiple Desktops. The cool part about this one is that it works with Spaces, so you can have different sets of files per space. A menu item makes it easy to drag files between desktops, and even search all desktops at once. Warn Before Quitting Macro A KeyboardMaestro macro that adds Chrome&rsquo;s delayed quit feature to any apps on your Mac. Introducing DeepText: Facebook&rsquo;s text understanding engine DeepText leverages several deep neural network architectures, including convolutional and recurrent neural nets, and can perform word-level and character-level based learning. Black Screen Black Screen is an Electron-based terminal emulator that provides amazing autocompletion menus and display options using HTML and CSS for the UI. It won&rsquo;t replace iTerm2 for me, but I love the idea. Lacona - Natural Language Commands for your Mac Call up Lacona with a keyboard shortcut and type whatever you want to do. It gives intelligent suggestions as you type and then follows your orders. The developers have also open sourced the Elliptical JavaScript API used for language recognition, so you can use it in your own projects",
		"keywords": ["command","interface","keyboard","shortcut","awesome","before","black","check","chrome","commands","deeptext","desktop","desktops","electron","elliptical","facebook","introducing","javascript","keyboardmaestro","lacona","language","macro","natural","quitting","screen","setapp","spaces","switcher","access","allows","amazing","architectures","autocompletion","based","between","brought","character","convolutional","delayed","desktops","developers","different","display","emulator","engine","excursions","feature","files","folders","follows","gives","hundreds","iterm","including","intelligent","keyboard","language","learning","level","leverages","macro","makes","menus","monthly","multiple","network","neural","options","orders","partnership","projects","provides","recognition","recurrent","replace","rsquo","search","several","shortcut","sourced","space","subscription","suggestions","switcher","terminal","today","understanding","using","whatever","works"]
	},{
		"title": "PDFpen 8: The ultimate pdf editing tool",
		"url": "/2016/06/09/pdfpen-8-the-ultimate-pdf-editing-tool/",
		"tags": ["sponsor"],
		"date": "Jun 9<span>th</span>, 2016",
		"ts": "1465470000",
		"summary": "Thanks to Smile and PDFpen 8 for sponsoring BrettTerpstra.com this week! PDFpen is the ultimate tool for editing PDFs. Break the scan-print-sign-and-fax cycle. Do it all in paperless style. Add text and graphics. Make corrections. Redact sensitive information. Number pages. Whatever you need. The new PDFpen 8 (see what&rsquo;s new!) enriches your PDF creation and editing experience. Make audio notes you can record in-place. Access file attachments. Sign documents with digital signatures, so you can send and receive PDFs with a greater degree of trust than ever before. Even export to Microsoft Word without the need for internet access. Current PDFpen owners can upgrade from any prior version to PDFpen 8 for $30, and you can upgrade to PDFpenPro 8 from any other version for $50",
		"keywords": ["character","digital","document","format","microsoft","optical","pdfpen","pdfpenpro","portable","recognition","signature","smile","software","access","break","brettterpstra","learn","microsoft","pdfpen","pdfpenpro","redact","smile","thanks","whatever","access","attachments","audio","before","corrections","creation","cycle","degree","digital","documents","editing","enriches","experience","export","graphics","greater","information","internet","notes","owners","pages","paperless","print","receive","record","rsquo","sensitive","signatures","sponsoring","style","today","ultimate","upgrade","version"]
	},{
		"title": "MultiMarkdown Composer and CriticMarkup",
		"url": "/2016/06/08/multimarkdown-composer-and-criticmarkup/",
		"tags": ["criticmarkup","markdown","texteditor"],
		"date": "Jun 8<span>th</span>, 2016",
		"ts": "1465405920",
		"summary": "While it&rsquo;s never really caught on with any of the larger publishers, CriticMarkup is a great tool when working on edits between collaborators using Markdown or other plain text formats. It lets you specify insertions, deletions, substitutions, and comments, all with the option to include attributions, timestamps, and other notes. The syntax isn&rsquo;t fast to type, though, and additional tools are needed to handle viewing it in any intuitive way. The CriticMarkup Toolkit offers a lot of integrations, but my favorite thus far has been the way that Fletcher Penney has built it into MultiMarkdown Composer. As a side note, while MultiMarkdown Composer offers a CriticMarkup preview, I tend to use Marked 2. I&rsquo;ve added quite a few CriticMarkup features to it, including the ability to automatically detect CriticMarkup syntax, process it for preview, and display a menu for switching between markup, edited, and original views. You can even set Marked as the default preview in MultiMarkdown Composer Preferences->Preview. The first major feature in MultiMarkdown Composer of note is the Track Changes feature under the View menu. With this turned on, it will add the syntax for CriticMarkup automatically as you make changes. For example, if you delete some text it will surround it with instead of removing it, and it does a great job of deciding how to handle changes versus insertions. You can also define a default comment for changes in Preferences->CriticMarkup, so your changes can automatically be tagged (e.g. with your initials and a timestamp). This makes it easier for multiple people to offer input and have changes attributed. Under View->CriticMarkup Preview, you can use Original Version or Changed Version to revert or accept all the changes in the document after reviewing. You can also see a panel with all of the changes in the document using Window->Show Change Panel (or using ⌘⇧V). This panel allows you to click a change to jump to and highlight it in the document, then click Accept or Reject in the panel to deal with each individual change. Lastly, a feature I love despite that fact that I only need it on rare occasions: file comparison. You can take any open file and use File->Compare to Other File (⌘D) to create a new buffer containing a \"diff\" style comparison using CriticMarkup syntax. This makes it possible for someone who isn&rsquo;t familiar with CriticMarkup to send you a revised file, and then easily see and handle the changes&hellip;",
		"keywords": ["editor","accept","another","change","changed","changes","compare","composer","control","criticmarkup","draft","fletcher","latex","lastly","libreoffice","markdown","marked","multimarkdown","original","pages","panel","penney","preferences","preview","reject","scrivener","toolkit","track","under","version","while","window","ability","accept","added","allows","apple","attributed","attributions","autocomplete","automatically","avoid","between","brettterpstra","buffer","built","capable","caught","change","changes","class","click","collaboration","collaborators","comment","comments","comparison","composer","containing","control","create","criticmarkup","deciding","default","define","deleted","deletions","detect","display","document","draft","easier","easily","edited","editor","edits","example","explanation","familiar","favorite","feature","features","filetypes","first","footnotes","formats","github","great","handle","handling","handy","height","highlight","highlighter","highly","https","image","including","individual","initials","input","insertions","integrations","interesting","intuitive","itunes","language","larger","ldquo","loading","major","makes","markdown","marked","markup","media","minute","multimarkdown","multiple","navigation","needed","noscript","notes","offer","offers","original","panel","people","picture","plaintext","possible","preview","primary","process","publishers","rdquo","reasons","recommend","removing","revert","reviewing","rouge","rsquo","source","specify","srcset","strong","style","substitutions","surround","switching","syntax","tagged","timestamp","timestamps","title","titles","toolkit","tools","tracking","turned","under","uploads","using","version","versus","viewing","views","while","width","working","works"]
	},{
		"title": "The Image2Icon winners",
		"url": "/2016/06/07/the-image2icon-winners/",
		"tags": ["giveaway","macos"],
		"date": "Jun 7<span>th</span>, 2016",
		"ts": "1465319520",
		"summary": "The developers will be emailing the winners directly with their licenses. If you don&rsquo;t hear from them, feel free to check in with me. You can try out Image2Icon for free, and the In-App purchases will extend the functionality",
		"keywords": ["image","shinyfrog","aslam","beavers","blohowiak","christian","coder","hambly","image","jacob","javed","kunal","leddy","mcabee","michael","ornithologist","stoeckel","thanks","check","developers","directly","emailing","everyone","extend","functionality","giveaway","licenses","participated","purchases","rsquo","unlock","winners"]
	},{
		"title": "Still my favorite iPhone accessory",
		"url": "/2016/06/07/still-my-favorite-iphone-accessory/",
		"tags": ["hardware","iphone"],
		"date": "Jun 7<span>th</span>, 2016",
		"ts": "1465304400",
		"summary": "Six months ago I mentioned LizzyTape as a fix for slippery iPhones. I wanted to add a quick update to this recommendation, as it&rsquo;s still the handiest iPhone accessory I&rsquo;ve ever purchased. To recap, LizzyTape is a stick-on pad made from a non-adhesive, nano-suction-cup. It can stick to any non-porous surface, and add extra grip even on more uneven surfaces (like your hand). The product is a small pad that will fit on any size device (not just iPhones). My phone still has the same piece of LizzyTape I wrote about in November. I&rsquo;d expected it to wear out faster, and had ordered a few with the expectation of needing to replace it every few months. It&rsquo;s every bit as useful now as it was then. It doesn&rsquo;t pick up pocket lint, and causes no friction when sliding it in and out of pockets or bags. It will take a coin or two with it if it&rsquo;s in your change pocket, but there&rsquo;s really no inconvenience factor. The convenience is amazing, though. In my bathroom there&rsquo;s a two-foot-tall trash bin, the kind with a foot lever and rounded top. I can set my phone on the spherical lid and it doesn&rsquo;t move. I can toss it on my dashboard or leather seat in the car and it stays in place. It doesn&rsquo;t slide, but it&rsquo;s also not stuck. Even on a mirrored surface where it gets great suction, picking it up just requires a slight pressure on an edge and it pops off. I don&rsquo;t use cases or screen protectors anymore, but I did like rubberized cases for the same reason. LizzyTape adds no bulk and provides the same benefit for me. For seven bucks, I recommend trying it out! It&rsquo;s also available in a gecko shape if you want something a little less utilitarian-looking",
		"keywords": ["iphone","rubberized","lizzytape","accessory","adhesive","amazing","anymore","available","bathroom","benefit","bucks","causes","change","convenience","dashboard","device","doesn","expectation","expected","extra","faster","friction","gecko","great","handiest","iphone","iphones","inconvenience","leather","lever","little","looking","mentioned","mirrored","needing","ordered","phone","picking","piece","pocket","pockets","porous","pressure","product","protectors","provides","purchased","quick","recap","recommend","recommendation","replace","requires","rounded","rsquo","rubberized","screen","seven","shape","slide","sliding","slight","slippery","small","spherical","stays","stick","stuck","suction","surface","surfaces","trash","trying","uneven","useful","utilitarian","wanted","where","wrote"]
	},{
		"title": "Web Excursions for June 06, 2016",
		"url": "/2016/06/06/web-excursions-for-june-06-2016/",
		"tags": ["bookmarks"],
		"date": "Jun 6<span>th</span>, 2016",
		"ts": "1465218000",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. How to use nvALT in academia Some good tips for using nvALT in an academic setting. Don&rsquo;t worry, these will still apply to BitWriter! \"Where&rsquo;s the App for That?\" &ndash; Fixing App Store Discovery John Voorhees offers a 4600-word piece detailing the shortcomings (and potential fixes) of Apple&rsquo;s App Store search, an issue near and dear to my developer heart. 15 iPhone Tricks Apple Has Been Hiding From You Some good iOS tips, including a few I didn&rsquo;t know but really wanted. Take Better Notes in Class Using a Mind Map Mind mapping is the best way for me to take notes during a lecture or presentation that are actually useful to me later. eliangcs/http-prompt An interactive CLI HTTP client with autocomplete and syntax highlighting. This will be handy for API testing as an alternative to redundant curl commands. Via OneThingWell What The F*** Should I Make For Dinner? I enjoy cooking and I like swearing, so I find this barebones meal suggestion tool both likeable and enjoyable",
		"keywords": ["apple","iphone","store","apple","bitwriter","class","cleanmymac","dinner","discovery","fixing","hiding","notes","onethingwell","store","tricks","using","voorhees","where","academia","academic","apply","autocomplete","barebones","brought","client","commands","cooking","detailing","developer","eliangcs","enjoy","enjoyable","excursions","fixes","handy","heart","highlighting","iphone","including","interactive","later","lecture","likeable","mapping","ndash","notes","nvalt","offers","partnership","piece","potential","presentation","prompt","redundant","rsquo","search","setting","shortcomings","speed","suggestion","swearing","syntax","testing","tools","useful","using","wanted","worry"]
	},{
		"title": "Image2icon 2.0 giveaway!",
		"url": "/2016/06/03/image2icon-2-dot-0-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Jun 3<span>rd</span>, 2016",
		"ts": "1464968160",
		"summary": "ShinyFrog has offered 10 Image2icon licenses to BrettTerpstra.com readers. Enter the random drawing below for a chance to win a code that unlocks all of the advanced features of Image2icon ($9.99 value). At its root, Image2icon is for customizing and personalizing folder appearances using regular image files. It can convert them to format and apply them to a folder with drag and drop. One of the most useful features for me, personally, is easy creation of favicon formats for the web. Export everything you need for a website, from standard 16x16 and 32x32 to iPad, iPhone, Android, and IE10 Metro formats. All with batch options for one-click export. The advanced features are available as In-App Purchases, and the codes from this giveaway will give them all to you. These include templates, background removal, and favicon, Windows ICO, Inconset, JPEG, and PNG exports. Add your name and email below to enter. Only the email addresses of the 10 winners will be shared with the developer for the purpose of providing the unlock codes only. One entry per person, and the drawing will take place at 12pm CST on Tuesday, June 7th, 2016. Sorry, this giveaway has ended",
		"keywords": ["format","graphics","interchange","iphone","network","portable","store","android","brettterpstra","enter","export","image","inconset","metro","purchases","shinyfrog","sorry","tuesday","windows","addresses","advanced","appearances","apply","available","background","batch","below","chance","click","codes","convert","creation","customizing","developer","drawing","email","ended","enter","entry","everything","export","exports","favicon","features","files","folder","format","formats","giveaway","iphone","image","licenses","offered","options","person","personalizing","personally","providing","random","readers","regular","removal","shared","standard","templates","unlock","unlocks","useful","using","value","website","winners"]
	},{
		"title": "MailButler - productivity boosting add-on for Apple Mail",
		"url": "/2016/05/26/mailbutler-productivity-boosting-add-on-for-apple-mail/",
		"tags": ["sponsor"],
		"date": "May 26<span>th</span>, 2016",
		"ts": "1464260400",
		"summary": "Thanks to MailButler for sponsoring BrettTerpstra.com this week! Have you ever wanted to schedule your email rather than send it right away? Have you ever sent an email to the wrong person? If your answer is yes, and it probably is, MailButler is just the thing for you. MailButler allows you to schedule an email to be sent at a specific date and time, so you can finish a lot of tasks in advance by writing several emails at once and letting MailButler ensure their scheduled delivery later. Another familiar situation: incorrectly addressed, unfinished content, and other common email mistakes. MailButler keeps the email in your Mac&rsquo;s outbox for a short while after you&rsquo;ve pressed \"send\". You can define how long you want this safety period to be. During this time you can undo the sending of the email and correct it the way you want. There are 7 other cool features that MailButler adds to Apple Mail, including the the ability to convert emails to notes, upload attachments to the cloud (regardless of size), create beautiful signatures, and more. The developers are regularly adding new components to this list",
		"keywords": ["apple","client","email","mailbutler","plugin","another","apple","brettterpstra","check","mailbutler","sponsored","syndicate","thanks","ability","adding","addressed","allows","answer","attachments","beautiful","cloud","common","components","content","convert","coupon","create","define","delivery","developers","discount","email","emails","familiar","features","finish","including","incorrectly","keeps","later","letting","mistakes","notes","outbox","person","pressed","rather","regardless","regularly","right","rsquo","safety","schedule","scheduled","sending","several","short","signatures","situation","specific","sponsoring","tasks","unfinished","upload","valid","wanted","while","writing","wrong"]
	},{
		"title": "Web Excursions for May 25, 2016",
		"url": "/2016/05/25/web-excursions-for-may-25-2016/",
		"tags": ["bookmarks"],
		"date": "May 25<span>th</span>, 2016",
		"ts": "1464192540",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Hazel Field Guide &ndash; MacSparky MacSparky (David Sparks) has released a new Video Field Guide focusing on Hazel, an amazing tool for automating file management. Currently $19.99, and worth every penny, even if you already think you know what Hazel can do. Pay What You Want: Spring 2016 Mac Bundle The Pay What You Want: Spring 2016 Mac Bundle has been extended for an extra week. 13 great apps, including Marked, at a price you get to choose. Gutenberg &ndash; A Meaningful Web Typography Starter Kit A \"web typography starter kit.\" Sets up vertical rhythm, base type sizes, and other important considerations in a flexible way using a Sass framework. Simple Grid - Lightweight CSS grid for web development If you&rsquo;ve panned larger CSS frameworks in the past due to bloat, this one offers just the grid features for responsive design. nylas/N1: An extensible desktop mail app built on the modern web. There have been a few new options popping up for email clients on the Mac. I&rsquo;m still sticking with MailMate (for very nerdy reasons), but AirMail 3 is looking great. This one is open source and easily extensible, so I&rsquo;m pretty curious to dig in and see what it can do. misterGF/echo: convert HTML tables into JSON/CSV objects A Node.js tool for converting HTML tables into JSON/CSV objects. I&rsquo;m hoping to incorporate this into Marky to get better table conversions. Apple Music Affiliate Program FAQ &ndash; Affiliate Resources If you&rsquo;re an iTunes partner, take note of the new url queries specifically for Apple Music links",
		"keywords": ["email","hazel","itunes","software","stacksocial","affiliate","airmail","apple","bundle","check","david","field","guide","gutenberg","hazel","lightweight","macsparky","mailmate","marked","marky","meaningful","music","program","resources","setapp","simple","sparks","spring","starter","typography","video","access","amazing","automating","bloat","brought","built","choose","clients","considerations","conversions","convert","converting","curious","design","desktop","development","easily","email","excursions","extended","extensible","extra","features","flexible","focusing","framework","frameworks","great","hoping","hundreds","itunes","important","including","incorporate","larger","links","looking","management","mistergf","modern","monthly","ndash","nerdy","nylas","objects","offers","options","panned","partner","partnership","penny","popping","price","queries","reasons","released","responsive","rhythm","rsquo","sizes","source","specifically","starter","sticking","subscription","table","tables","think","today","typography","using","vertical","worth"]
	},{
		"title": "Browsy, the smart fullscreen web browser for iOS",
		"url": "/2016/05/19/browsy-the-smart-fullscreen-web-browser-for-ios/",
		"tags": ["sponsor"],
		"date": "May 19<span>th</span>, 2016",
		"ts": "1463655600",
		"summary": "Thanks to Browsy for sponsoring BrettTerpstra.com this week! Browsy is the Smart Fullscreen Web Browser that gets out of your way. Open a webpage and everything else hides. From web surfers to researchers, music lovers to iOS automators, Markdown writers to developers and designers - Browsy has something for everyone. With features like the DuckDuckGo Omnibar, Pinboard Bookmarks view, VoiceOver support, 1Password integration, customizable gestures, and the unique Markdownify extension that allows you to turn entire web pages into Markdown, Browsy is an essential addition to your workflow. And now with version 1.2, Browsy goes above and beyond your iPhone with a ton of new features, including the new Reading view that allows you to read all of your favorite websites in a clean and customizable layout, as well as support for the latest and greatest iOS features like Keyboard Shortcuts, iPad Multitasking, Spotlight Search and 3D Touch. The new Notes view allows you to take notes while browsing, and the new watchOS 2 app allows you to remotely control your iPhone, view your notes and bookmarks, or do a quick search online, all from your wrist. Brought to you as a Universal iOS app by Sl&rsquo;s Repository Ltd, a small company dedicated to making your life better, Browsy is like Safari, without the chrome. Get it now from the App Store for 3.99$ and learn more about it at slsrepo.com. If you download Browsy this week (May 16-23), 20% of your purchase will be donated to St. Jude Children&rsquo;s Research Hospital",
		"keywords": ["browser","browsy","iphone","safari","store","bookmarks","brettterpstra","brought","browser","browsy","children","duckduckgo","fullscreen","hospital","keyboard","markdown","markdownify","multitasking","notes","omnibar","password","pinboard","reading","repository","research","safari","search","shortcuts","smart","spotlight","store","thanks","touch","universal","voiceover","above","allows","automators","beyond","bookmarks","browsing","chrome","clean","company","control","customizable","dedicated","designers","developers","donated","download","entire","essential","everyone","everything","extension","favorite","features","gestures","greatest","hides","iphone","including","integration","latest","layout","learn","lovers","making","music","notes","online","pages","quick","remotely","researchers","rsquo","search","slsrepo","small","sponsoring","support","surfers","unique","version","watchos","webpage","websites","while","workflow","wrist","writers"]
	},{
		"title": "Shell Tricks: halp -- a universal help tool",
		"url": "/2016/05/18/shell-tricks-halp-a-universal-help-tool/",
		"tags": ["terminal"],
		"date": "May 18<span>th</span>, 2016",
		"ts": "1463587920",
		"summary": "I have a lot of aliases and functions in my terminal, in addition to the plethora of UNIX commands. If I&rsquo;m not sure what the source of a command is, getting info on it can require multiple tries. First a check, then a or command to see if it&rsquo;s custom, then a to see if I misspelled something, and so on. I eventually decided to just write an automated way to sift through those possibilities. The function below will simply check if the command exists, then flip through \"file,\" \"function,\" and \"alias\" to see what kind it is, displaying the man page, typing out the function, or showing the alias depending on the result. It really just combines the and functionality into one command. The only switch is , which will show the results of if no matching command is found. I have this running with a modified version of bash-completion that scopes in the command for tab-completing command names. Easy hack, so I won&rsquo;t elaborate on that",
		"keywords": ["function","first","alias","aliases","automated","below","check","combines","command","commands","companion","completing","custom","decided","depending","displaying","elaborate","enough","eventually","exists","files","found","function","functionality","functions","getting","handy","matching","misspelled","modified","multiple","names","plethora","possibilities","results","rsquo","running","scopes","scripts","showing","simply","source","sourced","switch","terminal","through","tries","typing","useful","version","write"]
	},{
		"title": "Associate: Amazon affiliate linking for iOS",
		"url": "/2016/05/17/associate-amazon-affiliate-linking-for-ios/",
		"tags": ["appreview","iphone"],
		"date": "May 17<span>th</span>, 2016",
		"ts": "1463498340",
		"summary": "Associate, a new app from the creator of Blink, makes generating affiliate links for Amazon products on iOS a breeze. Blink is a tool for searching and creating iTunes affiliate links, and Associate takes all of the things learned from making Blink and applies them to Amazon. If you&rsquo;re not familiar with it, the Amazon Associate program allows you to make a little bit of money when sharing links to Amazon products. It doesn&rsquo;t cost the people who click your link anything, and can be a good side source of revenue if you&rsquo;re sharing a lot of links with a large enough audience. Associate can search for products and generate concise urls with your Amazon Associate tag, ready to share. You can do it within the app and copy a plain or Markdown link, or use it from the share sheet with any selected text in whatever app you&rsquo;re working in. Associate&rsquo;s extension also adds the ability to generate affiliate links from within Amazon&rsquo;s own app, or anywhere you want to copy an Amazon link. With a single tap, you can convert an existing Amazon link to one that you can make a bit of money on. Writers who use Markdown can also benefit from multiple Markdown link formats, with the option to add product names as link titles. Associate works with Split View on iPads, too, so you can access it easily while writing in your favorite editor. You can check out Associate on the iTunes App Store. It&rsquo;s currently $4.99 US, and as soon as Apple approves the bundle, you&rsquo;ll be able to get it along with Blink at a 20% discount",
		"keywords": ["affiliate","amazon","mobile","store","amazon","apple","associate","blink","markdown","split","store","writers","ability","access","affiliate","allows","anywhere","applies","approves","audience","benefit","breeze","bundle","check","click","concise","convert","creating","creator","discount","doesn","easily","editor","enough","extension","familiar","favorite","formats","generating","ipads","itunes","learned","links","little","makes","making","money","multiple","names","people","product","products","program","ready","revenue","rsquo","search","searching","selected","share","sharing","sheet","single","source","takes","titles","whatever","while","within","working","works","writing"]
	},{
		"title": "TextExpander: simply indispensable",
		"url": "/2016/05/12/textexpander-simply-indispensable/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "May 12<span>th</span>, 2016",
		"ts": "1463050800",
		"summary": "Thanks to Smile and TextExpander for sponsoring BrettTerpstra.com this week! Check out the new TextExpander. Simply indispensable. Imagine never typing the same email address, chunk of code, brand message, directions or data more than once. Store them in a snippet — a shortcut you create. Share groups of snippets with others, expand your common knowledge, and keep them current together. TextExpander includes apps for Mac, iPhone, iPad, and Windows (currently in beta). You&rsquo;ll have all of your snippets on all your devices all the time",
		"keywords": ["iphone","smile","snippets","software","textexpander","boost","brettterpstra","check","imagine","share","simply","smile","store","textexpander","thanks","windows","address","blank","brand","brett","brettterpstra","chunk","class","common","create","customize","devices","directions","email","expand","groups","height","https","iphone","image","includes","indispensable","knowledge","learn","loading","media","message","nofollow","noscript","original","others","picture","productivity","responses","rsquo","shortcut","smilesoftware","snippet","snippets","source","sponsoring","srcset","title","together","typing","uploads","width"]
	},{
		"title": "Web Excursions for May 11, 2016",
		"url": "/2016/05/11/web-excursions-for-may-11-2016/",
		"tags": ["bookmarks"],
		"date": "May 11<span>th</span>, 2016",
		"ts": "1462995480",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Almost complete guide to flexbox (without flexbox) A cheatsheet for replicating flexbox (CSS) functionality with backwards-compatible methods. Docbase Another documentation system based on Markdown files. I love the built-in realtime search that&rsquo;s automatically generated. My home brew system for Marked 2 documentation does a lot of this, but I may be switching over to a more polished system like this soon. Nuclino This collaborative wiki for teams is really nice. Simple in form and function, but with tools that make creating and maintaining a knowledge base easier (including some Markdown support within the rich text editor). Currently released as a free preview, pricing packages to be announced after full release. I had a chat with the creators of Nuclino about the goals of this project. I think the roadmap sounds excellent and am looking forward to doing a more in-depth review as new features come together. Flow Flow is a static type checker for JavaScript. It can be used to catch common bugs in JavaScript programs before they run, including: silent type conversions, null dereferences, and the dreaded . Gemini 2 The latest version of Gemini is incredibly smart about locating and removing duplicate files on your Mac&rsquo;s hard drive. John Voorhees has a full review over at MacStories. Jam API A service that can turn any website into a JSON API using CSS selectors. osnr/Screenotate: Automatically annotate your screenshots. A Swift-based utility that captures a screenshot of a region and automatically detects and saves the surrounding context (app, window title, web url), plus OCRs the text in the screenshot for searching. Grab a compiled download from the Releases page. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["interface","programming","almost","another","automatically","check","docbase","gemini","javascript","macstories","markdown","marked","mindmeister","nuclino","releases","screenotate","simple","swift","voorhees","annotate","announced","automatically","backwards","based","before","boosting","brainstorming","brought","built","captures","catch","cheatsheet","checker","collaborating","collaborative","common","compatible","compiled","context","conversions","creating","creators","depth","dereferences","detects","doing","download","dreaded","drive","duplicate","easier","editor","excellent","excursions","features","files","flexbox","function","functionality","generated","goals","guide","including","incredibly","knowledge","latest","locating","looking","maintaining","mapping","methods","packages","partnership","polished","preview","pricing","productivity","programs","project","realtime","region","release","released","removing","replicating","roadmap","rsquo","saves","screenshot","screenshots","search","searching","selectors","service","silent","smart","software","sounds","static","support","surrounding","switching","system","teams","think","title","together","tools","using","utility","version","website","window","within"]
	},{
		"title": "Easy retina image serving with Apache rewrites",
		"url": "/2016/05/06/easy-retina-image-serving-with-apache-rewrites/",
		"tags": ["apache","jekyll","webdesign"],
		"date": "May 6<span>th</span>, 2016",
		"ts": "1462548900",
		"summary": "Today I thought I&rsquo;d share a trick for offering retina (@2x) images on a blog where you don&rsquo;t always have high-res images available. The trick uses Apache rewrites and allows every image filename to be inserted in the HTML with \"@2x\" appended, falling back to the base filename if that file doesn&rsquo;t exist. I also occasionally customize an additional format for social sharing, appending \"lg\" instead of \"@2x\", and the rules cascade such that if \"lg\" doesn&rsquo;t exist, it looks for \"@2x\", and barring that, just uses the base filename. My custom Jekyll image plugin adds the \"@2x\" automatically, so my tags include only the base name of the image. If I&rsquo;m able to provide a high-res version, I just give it the exact same name, with \"@2x\" at the end, e.g. and (and optionally ). To make life even easier, I have a Dropzone target that I can drop one or more images onto, and it will detect multiple versions (base, @2x, _lg) and output a single Jekyll (Liquid) tag for the set. (If you&rsquo;re interested in that, let me know.) My Jekyll image plugin also uses to automatically provide width and height attributes based on the lowest resolution image in the HTML output, ensuring that the image is displayed properly at different screen resolutions. It&rsquo;s a simple system, and possibly inefficient as it has to check for the existence of every image file during the load stage, but my tests don&rsquo;t indicate any noticeable latency in the process. I can&rsquo;t guarantee that would scale to more image-heavy sites, but it makes life easy for me on this blog",
		"keywords": ["apache","htaccess","retina","server","apache","dropzone","jekyll","liquid","today","allows","appended","appending","attributes","automatically","available","barring","based","cascade","check","custom","customize","detect","different","displayed","doesn","easier","ensuring","exact","exist","existence","falling","filename","format","guarantee","heavy","height","image","images","inefficient","inserted","interested","latency","looks","lowest","makes","multiple","noticeable","occasionally","offering","optionally","output","plugin","possibly","process","properly","resolution","resolutions","retina","rewrites","rsquo","rules","scale","screen","share","sharing","simple","single","sites","social","stage","system","target","tests","thought","trick","version","versions","where","width"]
	},{
		"title": "Exercise and ADHD",
		"url": "/2016/05/03/exercise-and-adhd/",
		"tags": ["personal"],
		"date": "May 3<span>rd</span>, 2016",
		"ts": "1462302480",
		"summary": "I&rsquo;ve been exercising a lot lately. As my issues with getting the meds I need have started to seem hopeless, I began using long walks to clear my mind. It helped. I lost 10 pounds and started being able to get about 60 solid minutes of work clocked per day, which is a huge step up from a few months of being able to handle about 30 minutes (elapsed) and not enough time to actually complete anything. I started with hiking. First a mile at a time, then two, then extending beyond the point where at least one of my dogs could keep up1. The farther I walked, the more work I could do afterward. I have the good fortune of living within walking distance of an amazing trail system in the bluffs of Southeast Minnesota. I can walk out my door and be at a trailhead in 2 minutes. I&rsquo;ve gotten to know about 8 miles of single track quite well, and have plenty more to explore. Then I was talking to my friend Luc Beaudoin (creator of MySleepButton, one of the most effective sleep aids I&rsquo;ve found), and he mentioned that the key is \"vigorous\" exercise. So I started incorporating short sprints into my hikes. Part of what I love about hiking is observing the forests and plains around me, and trail running absolutely requires keeping your eyes on the trail in front of you (or else ankle sprain), so I only ran for the \"boring\" sections of trails. A few minutes of sprinting combined with 30-60 minutes of walking was still enough to break me into a full sweat and maintain a high pulse rate, and it turned out he was right. Just walking isn&rsquo;t enough to help with things like ADHD. Then I started doing Yoga. I have a good friend who teaches a class at a local wellness center, so I decided to try it. It was good for me. I felt great afterward, and the class setting worked well for keeping me going. I decided to try out some other classes, and went to a Forrest Yoga class. It was an hour and fifteen minutes of soaking my yoga mat with sweat. After the first Forrest class, I went to a friend&rsquo;s poetry reading. I was sitting there when all of the sudden my brain started working. Thoughts, ideas, and plans all started flowing the way they used to. It lasted a couple of hours. I&rsquo;ve been able to replicate it since then, but it takes about an hour of exercise to get two hours of work, so it&rsquo;s not a perfect solution. I have, however, lost almost 20 pounds now and am feeling better physically than I have since I was 25 (which was 12 years ago)&hellip;",
		"keywords": ["aerobic","anxiety","deficit","disorder","exercise","fitness","heart","physical","beaudoin","first","forrest","german","having","inattentive","minnesota","mysleepbutton","squirrel","shepherd","southeast","thoughts","afterward","again","almost","amazing","ankle","apple","asked","awkward","backlink","before","began","beyond","bluffs","boring","brain","break","brettterpstra","brings","carry","center","changes","class","classes","classmates","clear","clocked","cogsci","competition","completed","confirms","couple","creator","decided","desperation","diagnosis","distance","doing","effective","elapsed","encouragement","encouraging","endnotes","enough","everything","exercise","exercising","explore","extending","farther","feeling","fifteen","first","flexibility","flowing","fnref","focus","footnote","footnotes","forests","fortune","found","friend","front","games","getting","girls","going","gotten","great","guide","handle","having","hellip","helped","helpful","hikes","hiking","hopeless","hours","however","https","ideas","idiot","inattentive","instructors","issues","itunes","judgmental","keeping","knees","lasted","ldquo","lifestyle","living","local","looking","maintain","makes","mdash","mentioned","middle","miles","minutes","myself","mysleepbutton","needed","noteref","observing","parted","physically","plains","plans","plenty","poetry","point","pounds","primal","psychiatrist","pulse","rdquo","reading","recap","replicate","requires","reversefootnote","right","rsquo","running","sections","setting","shape","short","since","single","sitting","sleep","soaking","solid","solution","sprain","sprinting","sprints","started","strength","sudden","supportive","sweat","synthetic","system","takes","talking","teaches","testing","track","trail","trailhead","trails","translate","turned","twice","using","vigorous","walked","walking","walks","webmd","wellness","where","wikipedia","within","worked","working","workout","years"]
	},{
		"title": "MailButler - Your Personal Assistant for Apple Mail",
		"url": "/2016/04/28/mailbutler-your-personal-assistant-for-apple-mail/",
		"tags": ["sponsor"],
		"date": "Apr 28<span>th</span>, 2016",
		"ts": "1461841200",
		"summary": "Thanks to MailButler for sponsoring BrettTerpstra.com this week. See the end of the post for a 20% discount! Have you ever wanted to schedule your email rather than send it right away? Or wished you knew if the recipient has actually opened your email? If your answer is \"yes,\" then MailButler is the perfect solution. This Apple Mail plugin allows you to schedule an email to be sent at a specific date and time. You can fulfill many tasks in advance by writing several emails at once and letting MailButler ensure their scheduled delivery. Or another familiar situation: you sent an email several days ago, but still haven&rsquo;t received a reply. What&rsquo;s the best way to react in this case? Email Tracking, MailButler&rsquo;s newest feature, allows you to know if the recipient has actually opened your email. If you know that the first email has already been read, you can proceed with a follow-up. If it hasn&rsquo;t, it&rsquo;s better to wait a few days. There are other cool features that MailButler adds to Apple Mail, such as the ability to convert emails to notes, upload attachments to the cloud regardless of size, and more. The developers are constantly adding new functionality to this list",
		"keywords": ["apple","client","email","mailbutler","apple","brettterpstra","check","email","mailbutler","thanks","tracking","ability","adding","allows","another","answer","attachments","cloud","constantly","convert","coupon","delivery","developers","discount","email","emails","familiar","feature","features","first","fulfill","functionality","haven","letting","newest","notes","opened","plugin","rather","react","received","recipient","regardless","reply","right","rsquo","schedule","scheduled","several","situation","solution","specific","sponsoring","tasks","upload","valid","wanted","wished","writing"]
	},{
		"title": "Shell Tricks: shorten every line of output",
		"url": "/2016/04/27/shell-tricks-shorten-every-line-of-output/",
		"tags": ["scripting","terminal"],
		"date": "Apr 27<span>th</span>, 2016",
		"ts": "1461762000",
		"summary": "Updated: Dr. Drang pointed out that the original functions were mostly working but flawed. I&rsquo;ve updated this whole post. This is a simple bash function that will take each line of the input piped to it and truncate it at a given length (default 70 characters), optionally inserting an ellipsis or other string if the line is truncated. Here&rsquo;s the basic trick, using with an example line length of 60: Here&rsquo;s a more complete version of the function. It accepts a switch to truncate from the left instead of the right (default), and a flag to allow the user to specify an ellipsis or other string to add to lines that have been truncated. These functions can be added to any file that&rsquo;s sourced during login, such as ~/.bash_profile. Then they can be used like",
		"keywords": ["command","interface","drang","example","updated","accepts","added","allow","basic","characters","command","default","ellipses","ellipsis","example","flawed","function","functions","input","inserting","length","login","mostly","optionally","original","output","piped","pointed","profile","right","rsquo","shorten","simple","sourced","specify","string","switch","trick","truncate","truncated","updated","using","version","whole","working"]
	},{
		"title": "Shell Tricks: list files with most text matches",
		"url": "/2016/04/26/shell-tricks-list-files-with-most-text-matches/",
		"tags": ["scripting","terminal"],
		"date": "Apr 26<span>th</span>, 2016",
		"ts": "1461680400",
		"summary": "Here&rsquo;s a Bash function for searching all text files in the current directory for a pattern, then listing the files containing matches in ascending order by number of matches. It&rsquo;s mostly a proof of concept, but a useful companion to a basic grep search. The meat of the script happens in an array declaration. It first uses to list files containing the provided pattern (case insensitive), ignoring binary files. The error redirect at the end of the command will ignore the errors thrown by directories. The results of this are fed to another grep command: which outputs the match count for each file. The results are saved to the array. After including the function in a sourced file (e.g. ), running will show the available flags and switches: Here&rsquo;s the function for pasting into ~/.bash_profile (or other sourced file)",
		"keywords": ["another","array","ascending","available","basic","binary","command","companion","concept","containing","count","declaration","directories","directory","error","errors","files","first","flags","function","happens","ignore","ignoring","including","insensitive","listing","match","matches","mostly","outputs","pasting","pattern","profile","proof","redirect","results","rsquo","running","saved","script","search","searching","sourced","switches","thrown","useful"]
	},{
		"title": "HoudahSpot: Find everything, fast",
		"url": "/2016/04/21/houdahspot-find-everything-fast/",
		"tags": ["sponsor"],
		"date": "Apr 21<span>st</span>, 2016",
		"ts": "1461236400",
		"summary": "Thanks to HoudahSpot for sponsoring BrettTerpstra.com this week. Be sure to read to the end for a 30% discount! HoudahSpot is a powerful file search tool for Mac. Think Spotlight on steroids. Use HoudahSpot to find documents, mail messages, photos, image files and more. HoudahSpot helps you find files quickly using multiple criteria (such as name, text content, kind, author, recipient, date, image dimensions, etc.), and searches are easy to build with a few clicks. HoudahSpot shows your results in a convenient and easy-to-use interface that keeps all your important data within reach. Combine search criteria to narrow down search results to the exact files you need Search multiple locations at once, and exclude folders within selected locations View search results as list or grid. Add columns Create your perfect setup of search criteria, search locations, columns, sort order, and more. Set as default for future searches Store frequently used criteria in snippets that you can drag into new searches Use saved searches and templates for recurring searches If you regularly search for files that match a variety of criteria, you really should have HoudahSpot. It takes all of the tedium out of search and lets you focus on finding what you need, when you need it. BrettTerpstra.com readers can get a 30% discount on HoudahSpot using the code at checkout (valid until April 30). Take a look at HoudahSpot today",
		"keywords": ["houdah","houdahspot","search","software","spotlight","brettterpstra","create","houdahspot","search","spotlight","store","thanks","think","author","build","checkout","clicks","columns","content","convenient","criteria","default","dimensions","discount","documents","exact","files","finding","focus","folders","helps","image","important","interface","keeps","locations","match","messages","multiple","narrow","photos","powerful","quickly","reach","readers","recipient","recurring","regularly","results","saved","search","searches","selected","setup","shows","snippets","sponsoring","steroids","takes","tedium","templates","today","using","valid","variety","within"]
	},{
		"title": "Web Excursions for April 20, 2016",
		"url": "/2016/04/20/web-excursions-for-april-20-2016/",
		"tags": ["bookmarks"],
		"date": "Apr 20<span>th</span>, 2016",
		"ts": "1461163440",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. HoudahGeo 5 &ndash; Photo Geocoding & Geotagging for Mac HoudahGeo 5 is out, adding a bunch of powerful features to the OS X photo geotagging app. New features include Places (saved coordinates and location names), drag-and-drop geocoding, Google Earth/Maps/KML export, direct camera import, and map searching. Writing Workflow 2016, Part 2: Citations, Preview, and Export using Zotero, Marked 2, and Pandoc A great rundown of a workflow for anyone who wants to incorporate citations and more advanced Pandoc features into Marked 2. Franz A free messaging app that combines chat and messaging services into one application. Slack, WhatsApp, WeChat, HipChat, Facebook Messenger, Telegram, Google Hangouts, GroupMe, Skype and more. DeckHub A Tweetdeck-style desktop client for GitHub. 15-day trial, $9.99 to purchase. AppLandr - Beautiful landing pages for your mobile apps Generate good-looking landing pages for mobile apps simply by providing the app&rsquo;s store URL. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["android","facebook","hipchat","instant","messaging","messenger","mobile","skype","whatsapp","applandr","backblaze","beautiful","check","citations","deckhub","earth","export","facebook","franz","geocoding","geotagging","github","google","groupme","hangouts","hipchat","houdahgeo","marked","messenger","pandoc","photo","places","preview","skype","slack","telegram","tweetdeck","wechat","whatsapp","workflow","writing","zotero","adding","advanced","affordably","anyone","backs","brought","bunch","camera","citations","client","cloud","combines","computer","coordinates","desktop","direct","entire","everything","excursions","export","features","geocoding","geotagging","great","import","incorporate","landing","location","looking","messaging","mobile","names","ndash","pages","partnership","photo","powerful","providing","reliably","rsquo","rundown","saved","searching","securely","services","simply","store","style","today","trial","using","wants","workflow"]
	},{
		"title": "Udemy courses for 30% off",
		"url": "/2016/04/19/udemy-courses-for-30-percent-off/",
		"tags": ["learning"],
		"date": "Apr 19<span>th</span>, 2016",
		"ts": "1461082320",
		"summary": "Udemy is offering a 30% discount on all of their courses for the duration of April. You can use the code at checkout to apply the discount. If you want to learn new skills and concepts on-demand, at your own pace and on an amazing array of devices, Udemy has both master and mini courses on everything from programming to photography. Take a look! Just take a look at the available courses, and use the coupon code at checkout",
		"keywords": ["algorithm","development","github","testing","udemy","udemy","amazing","apply","array","available","checkout","concepts","coupon","courses","demand","devices","discount","everything","learn","master","offering","photography","programming","skills"]
	},{
		"title": "Friday Freebie: Infographic Icon Set",
		"url": "/2016/04/15/friday-freebie-infographic-icon-set/",
		"tags": ["design","giveaway"],
		"date": "Apr 15<span>th</span>, 2016",
		"ts": "1460732400",
		"summary": "For your Friday design pleasure, here&rsquo;s a free set of infographic icons from 1001. The graphics include avatars, business charts and icons, mobile devices and more. The pack is licensed under a Creative Commons Attribution 3.0 Unported License. Visit 1001freedownloads.com for more",
		"keywords": ["adobe","business","graphics","icons","illustrator","infographic","scalable","vector","attribution","commons","creative","download","friday","infographic","license","unported","visit","avatars","business","charts","design","devices","download","formats","freedownloads","graphics","icons","image","includes","individual","infographic","licensed","mobile","rsquo","transparent","under"]
	},{
		"title": "PDFpenPro: Complete PDF Power",
		"url": "/2016/04/14/pdfpenpro-complete-pdf-power/",
		"tags": ["sponsor"],
		"date": "Apr 14<span>th</span>, 2016",
		"ts": "1460631600",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com again this week! PDFpen is the Swiss army knife for PDFs, and PDFpenPro is the knife with so many tools it can barely fit in your pocket. PDFpenPro has all the standard tools to add signatures, edit text and images, perform OCR on scanned documents, and export in Microsoft Word format. Only PDFpenPro can create an interactive PDF form, build a table of contents, set document permissions, and convert websites to multi-page PDFs. PDFpenPro 7 adds easy editing of OCR text from scanned documents as well as export in Microsoft Excel, Microsoft PowerPoint, and PDF archive formats",
		"keywords": ["document","format","microsoft","portable","smile","software","brettterpstra","excel","microsoft","pdfpen","pdfpenpro","powerpoint","swiss","thanks","again","archive","barely","build","contents","convert","create","document","documents","download","editing","export","format","formats","images","interactive","knife","multi","permissions","pocket","scanned","signatures","sponsoring","standard","table","today","tools","websites"]
	},{
		"title": "Web Excursions for April 13, 2016",
		"url": "/2016/04/13/web-excursions-for-april-13-2016/",
		"tags": ["bookmarks"],
		"date": "Apr 13<span>th</span>, 2016",
		"ts": "1460552400",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Instaparser Paid access to Instapaper&rsquo;s web scraper. I&rsquo;d like to incorporate this into Marky, but the cost wouldn&rsquo;t even out. Still, one of the best tools available for finding the actual content in a web page. Command - Chrome Extension An open-source extension for Chrome that adds slash-commands (e.g. /giphy or /selfie) to text fields in your browser. If you&rsquo;re a Slack or IRC user, you&rsquo;re familiar with the concept already. Printing TaskPaper 3 documents with Marked 2 CSS templates A script for printing TaskPaper 3 documents via Marked 2 using some automation and CSS magic. AnimateMate - Animation Plugin for Sketch Create animations directly in Sketch. WrapAPI: APIs for the whole web Build an API on top of any existing website or find an API for a site that you need",
		"keywords": ["interface","javascript","programming","taskpaper","animatemate","animation","build","chrome","cleanmymac","command","create","extension","instapaper","instaparser","marked","marky","plugin","printing","sketch","slack","taskpaper","wrapapi","access","animations","automation","available","brought","browser","commands","concept","content","directly","documents","excursions","extension","familiar","fields","finding","giphy","incorporate","magic","partnership","printing","rsquo","scraper","script","selfie","slash","source","speed","templates","tools","using","website","whole","wouldn"]
	},{
		"title": "The TextExpander subscription snafu",
		"url": "/2016/04/12/the-textexpander-subscription-snafu/",
		"tags": ["developer","hosting","smile","support","textexpander"],
		"date": "Apr 12<span>th</span>, 2016",
		"ts": "1460483700",
		"summary": "Smile switched the TextExpander business model to a subscription plan last week, and the response was close to vitriolic from the community. I decided to hold off on saying anything until I had a bit more info. Let me start by saying Smile is a current and long-time supporter of both my blog and my podcast, Systematic, and I&rsquo;m a long time user and lover of Smile&rsquo;s software. I will avoid bias as best I can, but a tilt in favor of Smile and its developers is going to be hard to avoid. Fortunately, there&rsquo;s great news that I&rsquo;ll get to in a moment. The major mistake in the announcement of the new model was a failure to explain the benefits of it, or to provide any major new features along with it that would be relevant to individual users. The touted benefit of the subscription model was group sharing, which is really an enterprise feature, and it felt like individual users were being forced to pay for something they didn&rsquo;t require. TextExpander users have been quite satisfied with the current Dropbox/cloud sync for their snippets. What Smile left out of the marketing was that the current system had hit some limitations, and the move to a hosted service opened a new world of possibilities for feature development. Easy sharing and updating of snippets between users (without having to have a hosted URL) is only the first benefit; it also makes possible improved compatibility between platforms (Windows version in beta), things like Zapier and IFTTT integration and automation, and a host of new features they&rsquo;re excited about (but can&rsquo;t share yet). The new model also ends the repetitive upgrade system. Once users are on the subscription plan, updates will come seamlessly, frequently, and without extra charge or major version bumps. Most of us have been upgrading regularly at a cost that comes out to about the same as a year-long subscription. At face value, the switch was a jolt to me as well, so I understand the anger from current users. I think that a clearer explanation and a slower upgrade path would have made things much smoother. Apparently Smile, in retrospect, thinks so as well, as they&rsquo;ve just announced an update to the release. Previous customers gets a 50% lifetime discount on a subscription plan, and can opt to do a monthly plan at $2.08/month while deciding whether to invest in the yearly plan. TextExpander 5 for Mac and TextExpander 3 for iOS (standalone, Dropbox/iCloud Drive versions) will&hellip;",
		"keywords": ["business","model","smile","software","subscription","apparently","drive","dropbox","fortunately","ifttt","smile","systematic","textexpander","windows","zapier","anger","announced","announcement","attractive","automation","availability","available","avoid","based","basis","begins","benefit","benefits","between","bumps","business","change","charge","clearer","close","cloud","comes","community","compatibility","compelling","continued","continuing","customers","decided","deciding","developers","development","discount","enterprise","excited","explain","explanation","extra","favor","feature","features","first","forced","going","great","group","having","hosted","icloud","improved","individual","integration","invest","lifetime","limitations","lover","major","makes","marketing","mdash","mistake","model","monthly","offer","opened","platform","platforms","podcast","possibilities","possible","pricing","promise","rather","regularly","release","relevant","repetitive","response","retrospect","rsquo","satisfied","saying","seamlessly","service","share","sharing","slower","small","smoother","snippets","software","standalone","subscription","support","supported","supporter","switch","switched","switchover","system","think","thinks","touted","understand","updates","updating","upgrade","upgrading","upsetting","users","value","version","versions","vitriolic","while","world","yearly"]
	},{
		"title": "Arq 5 gets a big speed boost",
		"url": "/2016/04/12/arq-5-gets-a-massive-speed-boost/",
		"tags": ["backup"],
		"date": "Apr 12<span>th</span>, 2016",
		"ts": "1460473200",
		"summary": "I&rsquo;m a strong believer in redundant, excessive backups. I&rsquo;ve lost enough data over my lifetime to more than justify running multiple backup systems constantly and simultaneously. I clone my drives every night. I run Time Machine on all my Macs to a local server. But the big one&mdash;and the one that&rsquo;s turned out to be the most important in cases of severe data loss&mdash;is a good \"cloud\" backup. I&rsquo;ve had great luck with services like Backblaze and CrashPlan, but Arq from Haystack Software (Mac and Windows) has allowed me full control over my backups, and in many cases, the most affordable options over long periods. I use Arq with a couple of external drives connected to a Macminicolo box (the same one that hosts this site), so I don&rsquo;t have any additional monthly fees for backing up multiple machines. I also run a couple of machines to Amazon Glacier, which is dirt cheap for the most part (you pay more for restoring than storage). Arq also works with services like S3, Amazon Cloud Drive, Google Drive, Google Cloud, Dropbox, and OneDrive, or even your local NAS, performing versioned backups to services you probably already have installed. All of your data is encrypted before it leaves your machine, and the storage format is safe regardless of the security of the hosting cloud. Version 5 of Arq just went live today, and it&rsquo;s a major performance upgrade. New LZ4 compression allows backup speeds up to six times faster. The storage format for your backups is open and documented, so no matter which endpoint(s) you choose to use, your data is safe regardless of the host software&rsquo;s development. The flexibility of the app has also improved, with features like fast file search and restore, session logging and reporting, and even the ability to run your own scripts before and/or after backup to mount drives, open tunnels, etc. Arq 5 costs $49.99 (one-time purchase), and Arq 4 users can upgrade for $24.99. If you&rsquo;re looking for a reliable, secure cloud backup solution, check it out",
		"keywords": ["backblaze","crashplan","drive","dropbox","google","microsoft","windows","amazon","backblaze","cloud","crashplan","drive","dropbox","glacier","google","haystack","machine","macminicolo","onedrive","software","version","windows","ability","affordable","allowed","allows","backing","backup","backups","before","believer","cheap","check","choose","clone","cloud","compression","connected","constantly","control","couple","development","documented","drives","encrypted","endpoint","enough","external","faster","features","flexibility","format","great","hosting","hosts","important","improved","installed","justify","leaves","lifetime","local","logging","looking","machine","machines","major","mdash","monthly","mount","multiple","night","options","performance","performing","periods","redundant","regardless","reliable","reporting","restore","restoring","rsquo","running","scripts","search","secure","security","server","services","session","severe","simultaneously","software","solution","speeds","storage","strong","systems","times","today","tunnels","turned","upgrade","users","versioned","works"]
	},{
		"title": "Recap: March (and everything else)",
		"url": "/2016/04/06/recap-march-and-everything-else/",
		"tags": ["recap"],
		"date": "Apr 6<span>th</span>, 2016",
		"ts": "1459959600",
		"summary": "So you may have noticed an extreme lack of posting in March, and it&rsquo;s already creeping into April. I don&rsquo;t have much to recap in this recap post, so I thought I&rsquo;d explain why. A TaskPaper 3.0 review The eclectic soundtrack of an aberrant mind, a personal piece on the music that&rsquo;s shaped my life And I finally got a much-needed update to Marked 2 out the door I mentioned back in September of 2015 that I was having trouble with my meds after my last psychiatrist retired. I&rsquo;ve had a few glimmers of hope since then, but nothing that stuck. With my ADHD completely untreated, I&rsquo;m back to my pre-diagnosis self of 10 years ago, unable to work on much of anything for any period of time that would actually lead to a completed project. The reason for the change was a blanket rule that \"we don&rsquo;t prescribe stimulants to adults,\" which was the result of some doctors in the system over-medicating, apparently. Because I have past issues with drug abuse on my paperwork, they won&rsquo;t even consider the option of prescribing a controlled substance. My 16 years of sobriety and 10 years of successful treatment without issues (and with great results) doesn&rsquo;t carry any weight, Turns Out&trade;, as every psychiatrist I see now makes up their mind on the subject before I even get into the room. Over the last year I&rsquo;ve been through a series of new psychiatrists (most recently discussed on Overtired 58), and a litany of alternative treatments including Prozac, Wellbutrin and other mood-altering drugs. All of these had negative effects on me, both mental and physical, further increasing my frustration. I&rsquo;m currently doing a second trial of Strattera. It&rsquo;s has been mostly fruitless thus far, but it&rsquo;s my best hope right now, so I&rsquo;m giving it every chance. The only option offered for returning to my previous med schedule was for me to complete ADHD testing through a clinic. Note that ADHD is a diagnosis I&rsquo;ve already received from psychiatric professionals twice before, and have years of evidence that treatment with stimulants works wonders. Over 9 years I went from nothing to a business owner to a senior developer at a large corporation to a fairly successful independent developer. I coded, invented, wrote, podcasted, developed, marketed, and had&mdash;by all measures&mdash;a successful career of my choosing. The clinical testing would cost me $1,000 out of pocket, and had no&hellip;",
		"keywords": ["health","mental","backblaze","because","bitwriter","first","fortunately","marked","overtired","pdfpenpro","password","prozac","strattera","taskpaper","thanks","turns","wellbutrin","aberrant","abuse","adults","altering","apparently","available","before","blanket","booked","broken","business","career","carry","chance","change","changing","children","choosing","clinic","clinical","coded","completed","completely","consider","continue","continued","controlled","corporation","creeping","daunting","desperate","developed","developer","diagnosis","discussed","doctors","doesn","doing","drugs","eclectic","effects","emails","enjoy","everything","evidence","explain","extended","extreme","fairly","faith","feeling","finally","finances","financial","focused","found","fruitless","frustration","giving","glimmers","going","grateful","great","guarantee","hanging","having","helped","impact","including","increasing","independent","insurance","invented","issues","languishing","litany","makes","manageable","marketed","mdash","meant","meantime","measures","medicating","mental","mentioned","mostly","music","myself","needed","negative","nothing","noticed","nvalt","offered","owner","paperwork","parents","personal","phase","physical","piece","pitch","pocket","podcasted","point","posting","prescribing","productivity","professionals","project","projects","proposition","psychiatric","psychiatrist","psychiatrists","psychologist","published","quiet","recap","received","recently","regardless","resident","results","retired","returning","right","rsquo","schedule","second","senior","series","shaped","since","situation","sobriety","soundtrack","sponsors","stimulants","struggling","stuck","subscriptions","substance","successful","successor","support","system","testing","thought","through","trade","treatment","treatments","trial","trouble","twice","unable","untreated","waiting","waking","wanted","weight","where","wondering","wonders","works","write","wrote","years"]
	},{
		"title": "Web Excursions for March 30, 2016",
		"url": "/2016/03/30/web-excursions-for-march-30-2016/",
		"tags": ["bookmarks"],
		"date": "Mar 30<span>th</span>, 2016",
		"ts": "1459358400",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. FBI vs. Apple: Where is this Going? Lawyer (and friend) David Sparks offers his take on the Apple vs. FBI situation, and the ramifications moving forward. Wireless Routers: Tomato Firmware on an Asus N66U Steve Lambert and I discussed Tomato and open firmware routers on Systematic. He&rsquo;s updated his tutorial to work with ASUS N66* routers, so if you&rsquo;re interested in the details, check it out. Integrating Default Folder X with LaunchBar A new LaunchBar action for integrating Default Folder X favorites and recent items. List.js Add search, sort (multiple criteria), and filter to tables, lists and other elements using existing HTML. I&rsquo;ve been home-rolling these features for a while, but this library is small and very fast. Pressure.js A JavaScript library for working with Force and 3D touch on iOS devices. VPenkov/okayNav: The world&rsquo;s okayest responsive navigation A responsive website navigation bar that adds menu items falling over the edge to a pulldown menu. TODO: implement it on this blog&hellip",
		"keywords": ["apple","bureau","federal","investigation","iphone","apple","check","david","default","firmware","folder","force","going","integrating","javascript","lambert","launchbar","lawyer","pressure","routers","setapp","sparks","steve","systematic","tomato","vpenkov","where","wireless","access","action","brought","check","criteria","details","devices","discussed","elements","excursions","falling","favorites","features","filter","firmware","friend","hellip","hundreds","integrating","interested","items","library","lists","monthly","moving","multiple","navigation","offers","okaynav","okayest","partnership","pulldown","ramifications","recent","responsive","rolling","routers","rsquo","search","situation","small","subscription","tables","today","touch","tutorial","updated","using","website","while","working","world"]
	},{
		"title": "Marked 2.5.5",
		"url": "/2016/03/28/marked-2-dot-5-5/",
		"tags": ["markdown","marked"],
		"date": "Mar 28<span>th</span>, 2016",
		"ts": "1459170000",
		"summary": "Marked 2.5.5 is out for direct customers and submitted to the Mac App Store for review. Barring any rejections, the MAS version should be available in about 3 days. Marked 2 now recognizes base Meta-Data replacements in Scrivener documents, such as to insert the name of the project as defined in Meta-Data settings. You can now place a page at the very beginning of the Drafts folder and title it \"Metadata\" to include MultiMarkdown-formatted meta keys and values. The result is that the page is compiled such that these will be recognized in the preview, even if \"Include document titles as headers\" is enabled. A lot of the fixes are for lesser-known features. The most important fix is in the \"Save HTML\" feature, which was hanging when using a custom processor. Check Marked 2 out at marked2app.com. If you write in Markdown, for anything from books to GitHub READMEs, it&rsquo;s the most useful tool you could own. It should be version 2.5.4.2 but the MAS only allows three integers in a version number, so it&rsquo;s 2.5.5 on both.&nbsp;↩",
		"keywords": ["github","metadata","barring","check","continuous","custom","documents","drafts","features","github","interface","markdown","marked","metadata","multi","multimarkdown","processor","readmes","scrivener","spellcheck","store","allows","available","backlink","based","beginning","blank","books","bottom","brettterpstra","chart","class","compiled","contains","custom","customers","defined","direct","document","documents","enabled","endnotes","export","failing","falling","feature","features","filedocumentpreviewfeatures","filename","fixes","fnref","folder","footnote","footnotes","formatted","hanging","headers","height","highlighter","hover","https","image","important","integers","integration","language","ldquo","lesser","loading","marked","markedicon","media","minimap","mostly","multi","noscript","noteref","original","parenthesis","picture","plaintext","preview","processor","project","projecttitle","rdquo","recognition","recognized","recognizes","rejections","related","replacements","reversefootnote","rouge","rsquo","settings","source","spaces","srcset","submitted","system","title","titles","uploads","useful","using","values","version","width","write"]
	},{
		"title": "Backblaze: unlimited, unthrottled backup for Mac and PC",
		"url": "/2016/03/24/backblaze-unlimited-unthrottled-backup-for-mac-and-pc/",
		"tags": ["sponsor"],
		"date": "Mar 24<span>th</span>, 2016",
		"ts": "1458817200",
		"summary": "Thanks to Backblaze for sponsoring BrettTerpstra.com this week! In this digital world, losing your data is a really big deal. Backing up should be a no-brainer, and Backblaze online backup will keep everything safe while you work (and play). It&rsquo;s unlimited, unthrottled, uncomplicated business and personal backup for documents, music, photos, videos, and all your user data. Backblaze continuously and securely backs up all the data on your computer and external hard drives. No throttling means fast backups, and Backblaze has backed up well over 200 Petabytes of data. They&rsquo;ve also restored 10 Billion files. Getting to your data is easy. You can access your backups with native apps for Mac or PC, use any web browser to download your data, access files with the iOS or Android apps, or even have Backblaze FedEx you a flash key or USB hard drive. Data loss happens. Protect yourself. For $5/month, Backblaze will back up all the data on your Mac or PC. Get a 2-week free trial (risk-free, no credit card required) and start securing your data today",
		"keywords": ["backblaze","backup","computer","iphone","personal","android","backblaze","backing","billion","brettterpstra","fedex","getting","petabytes","protect","thanks","access","backed","backs","backup","backups","brainer","browser","business","computer","continuously","credit","digital","documents","download","drive","drives","everything","external","files","flash","happens","losing","music","native","online","personal","photos","required","restored","rsquo","securely","securing","sponsoring","throttling","today","trial","uncomplicated","unlimited","unthrottled","videos","while","world"]
	},{
		"title": "TaskPaper 3.0",
		"url": "/2016/03/16/taskpaper-3-dot-0/",
		"tags": ["macos","productivity","taskpaper"],
		"date": "Mar 16<span>th</span>, 2016",
		"ts": "1458156780",
		"summary": "A quick search on this blog will reveal I&rsquo;m a long-time fan of TaskPaper. The plain-text task manager has provided the simplest form of portable project management I could ask for. TaskPaper 3.0 has been officially released, and it&rsquo;s a complete rewrite for a new era. TaskPaper&rsquo;s file format consists of simple indented lists and project headers, and is one you can create in any text editor. The TaskPaper app serves as an elegant graphical interface for the underlying format, and it&rsquo;s this separation that I love about it. The format hasn&rsquo;t changed, but the interface has been rewritten. Version 3.0 boasts a new, flexible folding implementation, allowing better focus on multiple areas of your projects and todos. The outliner and text editor features are more powerful, and features like zooming outline text in and out add more useful navigation to the interface. Search is a vital part of managing larger projects. TaskPaper has always had a good natural syntax search, but version 3.0 extends it with hierarchical and relative date/time searches, and it adds the one feature I&rsquo;ve always wanted: saved searches. You can now add a saved search to the sidebar, and have instant access to your more complex search criteria. I&rsquo;ve always enjoyed customizing TaskPaper to fit my own needs via AppleScripts and custom themes. As a caveat, any existing AppleScripts you have set up for TaskPaper 2 are going to break. The API is now entirely JavaScript-based, and the TaskPaper community is already offering an array of JSX scripts to fill the void and take advantage of the more flexible automation possibilities. Theming is also now LESS-based, rather than the older XML formats. Theming is easier now that you can edit LESS/CSS files to modify colors, and things like tag-based highlighting are available via CSS selectors instead of more complex predicates. For the next week, TaskPaper 3 is available at a \"Launch Sale\" price of $14.99 US (40% off). Whether you&rsquo;re a current TaskPaper 2 user or someone looking for a highly-portable task management solution, go check it out",
		"keywords": ["editor","format","javascript","applescripts","javascript","launch","search","taskpaper","theming","version","access","advantage","allowing","areas","array","automation","available","based","boasts","break","caveat","changed","check","colors","community","complex","consists","create","criteria","custom","customizing","easier","editor","elegant","enjoyed","entirely","extends","feature","features","files","flexible","focus","folding","format","formats","going","graphical","headers","hierarchical","highlighting","highly","implementation","indented","instant","interface","larger","lists","looking","management","manager","managing","modify","multiple","natural","navigation","needs","offering","officially","older","outline","outliner","portable","possibilities","powerful","predicates","price","project","projects","quick","rather","relative","released","reveal","rewrite","rewritten","rsquo","saved","scripts","search","searches","selectors","separation","serves","sidebar","simple","simplest","solution","syntax","themes","todos","underlying","useful","version","vital","wanted","zooming"]
	},{
		"title": "Web Excursions for March 15, 2016",
		"url": "/2016/03/15/web-excursions-for-march-15-2016/",
		"tags": ["bookmarks"],
		"date": "Mar 15<span>th</span>, 2016",
		"ts": "1458069300",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Announcing TableFlip From Christian Tietze, creator of WordCount for Mac, the announcement of his upcoming Mac app, and it&rsquo;s one the Markdown world really needs: Open any Markdown file with TableFlip and you can visually edit the tabular data included. Save and the Markdown file is updated. It&rsquo;s that simple. Upgrading to Paper Ben Elijah details why and how he&rsquo;s switching from his task management app of choice to a (slightly) less digital (and more secure) world of productivity. An Indie&rsquo;s Guide to the Press Partly in response to a great post from Rene Ritchie, this is Chris Herbert&rsquo;s take on surviving in the App Store. Tripoto A bot that can help you plan a trip, suggesting things to do, places to eat, and more. How we debate the pronunciation of GIF This nails it pretty well, as per The Oatmeal standard. proselint A linter for prose. Not a grammar checker, something different. It&rsquo;s a command line utility, but there&rsquo;s a web version/demo. Via Jason Gilman Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["productivity","store","announcing","check","chris","christian","elijah","gilman","guide","herbert","indie","jason","markdown","mindmeister","oatmeal","paper","partly","press","ritchie","store","tableflip","tietze","tripoto","upgrading","wordcount","announcement","boosting","brainstorming","brought","checker","choice","collaborating","collaborative","command","creator","debate","details","different","digital","excursions","grammar","great","included","linter","management","mapping","nails","needs","partnership","places","productivity","pronunciation","prose","proselint","response","rsquo","secure","simple","slightly","software","standard","suggesting","surviving","switching","tabular","upcoming","updated","utility","version","visually","world"]
	},{
		"title": "The eclectic soundtrack of an aberrant mind",
		"url": "/2016/03/10/the-eclectic-soundtrack-of-an-aberrant-mind/",
		"tags": ["music","personal"],
		"date": "Mar 10<span>th</span>, 2016",
		"ts": "1457641020",
		"summary": "Sometimes I think I&rsquo;d like to build a sensory deprivation chamber that lets me have only my hearing, and only hear music. Music has always been an important part of my life. I like haunting music. I like raw, aggressive music. I like happy songs and everything between. From Bach and Beethoven to Metallica, from Basie to the Birth of the Cool, from Lee Moses to Jimmy Hendrix, from the Jimmy Page to Slash, from Elvis to Johnny Rotten, I&rsquo;ve been captured more times by a song than by any other influence in my life. I have a playlist of songs for this depravation chamber. It&rsquo;s by no means comprehensive, but what follows are a few selections that have stuck with me through decades, some recorded recently, some from before I existed. Songs that make me feel things I love, whether sorrow and loss or pure joy, and things feelings I don&rsquo;t always have words for. I think you can tell a lot about a person by the songs that matter most to them, and rarely will two people&rsquo;s lists be the same. Consider this our first date, and I&rsquo;m telling you all about me, except I&rsquo;m not attempting to not scare you off. Gimmie Shelter &ndash; Rolling Stones (Let It Bleed - 1969) War is a shot away, love just a kiss away. And yes, when Let It Bleed was released, the track was spelled \"Gimmie Shelter.\" I&rsquo;m a purist. Or something. Like many songs in my life&mdash;especially songs before my time&mdash;I didn&rsquo;t truly appreciate it until I had a translator. In this case, it was one of the dozens of cover versions that came into my life, this one by Patti Smith. Her cover made me hear it&mdash;really hear it&mdash;and adding the context of the history of the Vietnam era helped me understand why it&rsquo;s been such a mainstay in popular movies and media, and proclaimed one of the greatest songs the Stones ever recorded. Ain&rsquo;t No Sunshine &ndash; Bill Withers (Just As I Am - 1971) Wonder this time where she&rsquo;s gone Wonder if she&rsquo;s gone to stay Ain&rsquo;t no sunshine when she&rsquo;s gone And this house just ain&rsquo;t no home Anytime she goes away I don&rsquo;t think I need to say much about this song. It&rsquo;s hauntingly beautiful, in natural minor with a string arrangement by Booker T. Wither&rsquo;s story (9 years in the Navy, then factory jobs, shopping demos around, recording hits while refusing to quit his job) further increased my appreciation of the song. It was a pleasure&hellip;",
		"keywords": ["metallica","songs","soundtrack","askhjavdqv","against","american","anytime","aplaylist","apple","arthur","attscoff","auser","basie","beautiful","beethoven","billy","birth","black","bleed","blood","bluegrass","boats","bonnie","booker","bourne","cards","carrol","catholic","ceremony","chelsea","children","coffee","cohen","connor","consider","creation","darkness","david","dirty","elvis","epitaph","family","friend","fugazi","funeral","gimmie","hanoi","hendrix","heroin","hotel","house","humanity","identity","incident","jeremey","jimmy","johnny","johnson","joseph","junkie","justice","leonard","listed","little","masque","mayhem","mercy","metallica","michael","middle","minnesota","monroe","moses","motorcycle","music","national","oldham","onward","patti","people","prince","promises","psych","rancid","rebel","robinson","rocks","rolling","roses","rotten","rufus","saved","school","scrubs","sharon","shelter","shrek","since","sinead","sisters","slash","smith","sometimes","songs","spaghetti","spotify","stain","stomp","stones","stupid","sunshine","swamp","tompkins","touch","transformer","trouble","underground","unholy","university","usher","variations","velvet","vietnam","wainwright","waits","walking","walkman","wanna","where","winona","wither","withers","wolves","wonder","words","ybopxoxenzy","yfdubbouoa","aberrant","above","absorbed","acoustic","action","addiction","addictions","adding","aftermath","aggressive","album","allowtransparency","almost","amazing","another","anthem","anytime","anyway","apple","appreciate","appreciated","appreciation","approach","apropos","arrangement","arthur","artist","attempting","backing","backlink","backup","bands","barely","beats","beautiful","became","because","before","began","belongs","between","blockquote","bluegrass","blush","boatsandbluegrass","bootleg","brain","brash","brettterpstra","build","called","cappella","captured","careless","casualty","ceiling","cfdaffc","chamber","changes","chaotic","check","chelsea","childhood","children","chord","class"]
	},{
		"title": "PDFpenPro: an even bigger Swiss Army Knife for PDFs",
		"url": "/2016/03/10/pdfpenpro-an-even-bigger-swiss-army-knife-for-pdfs/",
		"tags": ["sponsor"],
		"date": "Mar 10<span>th</span>, 2016",
		"ts": "1457611200",
		"summary": "Thanks to PDFpen for sponsoring BrettTerpstra.com this week! PDFpen is the Swiss army knife for PDFs, and PDFpenPro is the knife with so many tools it can barely fit in your pocket. PDFpenPro has all the standard tools to add signatures, edit text and images, perform OCR on scanned documents, and export in Microsoft Word format. Only PDFpenPro can create an interactive PDF form, build a table of contents, set document permissions, and convert websites to multi-page PDFs. PDFpenPro 7 adds easy editing of OCR text from scanned documents as well as export in Microsoft Excel, Microsoft PowerPoint, and PDF archive formats. Try the free demo download of PDFpenPro 7 today at smilesoftware.com/brett",
		"keywords": ["document","excel","format","microsoft","office","pdfpen","pdfpenpro","portable","powerpoint","smile","brettterpstra","excel","microsoft","pdfpen","pdfpenpro","powerpoint","swiss","thanks","voiceover","accessibility","archive","barely","brett","build","contents","convert","create","document","documents","download","editing","export","fields","format","formats","images","interactive","knife","multi","permissions","pocket","scanned","signatures","smilesoftware","sponsoring","standard","table","today","tools","tooltips","websites"]
	},{
		"title": "Web Excursions for March 09, 2016",
		"url": "/2016/03/09/web-excursions-for-march-09-2016/",
		"tags": ["bookmarks"],
		"date": "Mar 9<span>th</span>, 2016",
		"ts": "1457556060",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. MeisterTask 2.0 for iOS Is Out MeisterTask, my favorite tool for Kanban-style project management just updated its iOS app with a redesigned dashboard, built-in time tracking, and even Slack-style emoji syntax. Mastering Markdown A free video course on Markdown from Wes Bos with all the basics plus some great insights on Markdown workflows. Instant Logo Search Tired of Googling for the right image to represent a company logo you&rsquo;re writing about? This site has thousands of SVG and PNG versions of company logos. That&rsquo;s way easier than digging into a company homepage to extract a mediocre-resolution image&hellip; Google Cloud Vision API enters open beta The new Cloud Vision API from Google can analyze images and detect objects, read text, and identify logos. When combined with an Arduino, it allows robots to identify real life objects by imaging them and querying the service. It&rsquo;s pretty amazing. Cloudinary A service (with API) for automatically finding the optimal image sizes needed for the best viewing experience in responsive web & mobile sites. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["arduino","google","graphics","iphone","network","portable","scalable","vector","arduino","backblaze","check","cloud","cloudinary","google","googling","instant","kanban","markdown","mastering","meistertask","search","slack","tired","vision","affordably","allows","amazing","analyze","automatically","backs","basics","brought","built","cloud","company","computer","dashboard","detect","digging","easier","emoji","enters","entire","everything","excursions","experience","extract","favorite","finding","great","hellip","homepage","identify","image","images","imaging","insights","logos","management","mediocre","mobile","needed","objects","optimal","partnership","project","querying","redesigned","reliably","resolution","responsive","right","robots","rsquo","securely","service","sites","sizes","style","syntax","thousands","today","tracking","updated","versions","video","viewing","workflows","writing"]
	},{
		"title": "The Great Mac Dev Survey",
		"url": "/2016/03/07/the-great-mac-dev-survey/",
		"tags": ["survey"],
		"date": "Mar 7<span>th</span>, 2016",
		"ts": "1457365800",
		"summary": "The team at fournova has announced a survey for Mac developers (web, mobile, app, anything that involves coding on a Mac). I think the information gathered will generate some useful stats, and they&rsquo;re offering some great prizes for participating. I put in 10 licenses for Marked 2, joining other great apps like Ulysses, BBEdit, xScope, and a dozen more. You can specify which prizes you&rsquo;re most interested in at the end of the survey. If you code on a Mac, join The Great Mac Dev Survey",
		"keywords": ["developer","fournova","tower","bbedit","great","marked","survey","ulysses","announced","coding","developers","dozen","fournova","gathered","great","information","interested","involves","joining","licenses","mobile","offering","participating","prizes","rsquo","specify","stats","survey","think","useful","xscope"]
	},{
		"title": "Stress-free online security with 1Password",
		"url": "/2016/03/03/stress-free-online-security-with-1password/",
		"tags": ["sponsor"],
		"date": "Mar 3<span>rd</span>, 2016",
		"ts": "1457006400",
		"summary": "Thanks to 1Password for sponsoring BrettTerpstra.com this week! I&rsquo;ve been using 1Password since before it was called 1Password, and I wouldn&rsquo;t want to work without the security it provides. I&rsquo;ve tested similar products, but nothing has topped the combination of convenience and security of 1Password. What do you do when you have to create yet another account on yet another website? Do you panic because you know it&rsquo;s a bad idea to rely on the password you&rsquo;ve used on other sites? Use a system, like jumbling the site name and adding some personal flair? Avoid creating a new account because you just don&rsquo;t want to deal with it? Your days of feeling stressed because of passwords are over, thanks to 1Password. Use its Strong Password Generator to create long, strong, unique passwords everywhere you need them, then automatically save them. Log in to websites with a single click of your mouse or a couple of finger taps. Despite what its name may lead you to believe, 1Password isn&rsquo;t just about generating gobbledygook passwords&mdash;it also helps you keep track of all sorts of sensitive information: addresses, credit cards, bank accounts, passport details, and even free-form text. All together. All behind the single password only you know. Best of all, 1Password Families takes the frustration out of sharing your most sensitive information. No more shouting the Netflix password across the room at your kids, frenzied calls from the house sitter after they forgot the alarm code, or frustration because your partner is the only one who can make the credit card payment. 1Password has been a trusted name for almost a decade. Trust the software, trust the people who make it. A world-class customer support team&mdash;which includes everyone in the company, even the developers and co-founders!&mdash;is available to help you, seven days a week, in forums, by e-mail, on Twitter, and on Facebook",
		"keywords": ["credit","dropbox","facebook","family","netflix","password","security","avoid","brettterpstra","check","facebook","families","generator","netflix","password","strong","thanks","twitter","account","accounts","achieve","across","adding","addresses","alarm","almost","another","automatically","available","because","before","behind","believe","called","calls","cards","class","click","combination","company","convenience","couple","create","creating","credit","customer","decade","details","developers","everyone","everywhere","feeling","finger","flair","forgot","forums","founders","frenzied","frustration","generating","gobbledygook","hassle","helps","house","includes","information","jumbling","management","mdash","mouse","nothing","online","panic","partner","passport","password","passwords","payment","people","personal","products","provides","rsquo","security","sensitive","seven","sharing","shouting","similar","since","single","sites","sitter","software","sorts","sponsoring","stressed","strong","support","system","takes","tested","thanks","today","together","topped","track","trusted","unique","using","website","websites","world","wouldn"]
	},{
		"title": "Recap: February",
		"url": "/2016/03/01/recap-february/",
		"tags": ["recap"],
		"date": "Mar 1<span>st</span>, 2016",
		"ts": "1456864260",
		"summary": "Timing - The better way to track your time Swiss Army PDFpen 7 MeisterTask for iOS, Mac, and Android DevMate, a development and distribution platform, is now available for free Slogger with Day One 2 (Feb 4th) Day One 2 is out, and if you&rsquo;re using Slogger, it&rsquo;s one simple step to upgrade. Marked 2.5.4: Updates, fixes, and improvements (Feb 12th) Marked 2.5.4 is officially out for both direct and MAS customers. There are a lot of fixes and some new features, so check it out! A look back at 2015 I published my yearly \"best of\" lists a bit late this year, but I did it. It was still Q1, so it counts based on the 3-month rule. My Top Mac Apps (Feb 17th) My Top iOS Apps (Feb 22nd) The Rest of the Best (Feb 26th) The baked goods of my subconscious (Feb 23rd) I had a dream about pop stars baking cakes. I still find it entertaining. In which I review an airport restroom (Feb 28th) I think this is arguably the best review of an airport bathroom I&rsquo;ve ever written. Recaps are a quick, curated summary of each month&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get monthly summaries in digest format",
		"keywords": ["baking","dream","marked","android","devmate","first","marked","meistertask","pdfpen","recaps","slogger","swiss","timing","updates","airport","arguably","available","baked","baking","based","bathroom","cakes","check","counts","curated","customers","development","digest","direct","distribution","dream","entertaining","features","fixes","format","goods","improvements","interest","lists","monthly","officially","platform","posts","published","quick","restroom","rsquo","simple","specifically","sponsors","stars","subconscious","subscribe","summaries","summary","thanks","think","track","upgrade","using","written","yearly"]
	},{
		"title": "In which I review an airport restroom",
		"url": "/2016/02/28/in-which-i-review-an-airport-restroom/",
		"tags": ["personal"],
		"date": "Feb 28<span>th</span>, 2016",
		"ts": "1456693140",
		"summary": "While this is a rare class of post from me, the Minneapolis-St. Paul Airport (MSP) is no stranger to restroom stories. But this one is good and has nothing to do with Larry Craig. I&rsquo;ve always loved MSP, as far as airports go. I&rsquo;ve spent some time there (I know which gate the rolling beds are at), and&mdash;in my experience&mdash;it&rsquo;s one of the best airports in the country to be stuck at for any extended period of time1. They did a complete redesign of gate G17 (where Delta flights to San Francisco board), and it was insanely good. Other gates have followed since. Booth seating through the whole gate, every outlet has a USB port, iPads at every table, and a dedicated food court with a good beer selection. But that pales in comparison to the beauty of the new bathrooms near F10. From the second I walked in, I knew this bathroom was special. I also knew that the day would eventually come that I would review an airport bathroom, a prospect that had never crossed my mind previously. Yelp and FourSquare reviews will back me up on this. The traffic flow was great. Circular entryways have become common, but there&rsquo;s still a good chance you&rsquo;ll have to do the left-right-excuse-me dance with someone while dragging your carry-on behind you. The openness of the redesigned entryway reached a solid balance between obfuscation of the interior and freedom of movement. Upon entering, things are where you want them to be. In men&rsquo;s restrooms, the current norm seems to be a room full of urinals, a row of sinks, then a room full of stalls. That might be a priority list, but on a busy day it causes traffic jams when there are lines at any of them. This bathroom had its facilities spread out in a way that you could walk in and be where you wanted to be without having to peek around any corners. I imagine the women&rsquo;s restroom has a similar layout, though I did no investigation. The thing that struck me most, though, was the stall. A thing of beauty. Something that in a perfect world you would take for granted, but for anyone who&rsquo;s used a restroom at any airport, this might as well have had a track of angels singing when you crossed the threshold. First, there are no gaps on the sides of the door, and the walls of every stall go to the floor. There are air-passage breaks in the base of the wall, but if you drop change out of your pocket, there&rsquo;s a 96% chance it won&rsquo;t roll into the next stall.2 In terms of a&hellip;",
		"keywords": ["dakota","minneapolis","public","south","toilet","again","airport","booth","circular","craig","delta","first","foursquare","francisco","larry","minneapolis","recesses","uninvited","vegas","while","acceptable","accessing","accurate","across","adult","ahead","airport","airports","among","angels","anyone","appreciated","available","avoiding","awkward","backlink","backpack","balance","basin","bathroom","bathrooms","beauty","because","behind","between","beyond","bidets","board","breaks","brettterpstra","bucket","carry","casting","causes","certain","chance","change","chest","choice","choose","choosing","cigarette","class","cleanliness","closer","common","comparison","completely","confrontations","contained","corners","couldn","country","court","covers","crossed","cubbies","dance","dedicated","dispensers","disturbing","dollop","dragging","drying","easily","endnotes","enjoyed","enough","enter","entering","entire","entryway","entryways","events","eventually","excuse","experience","extended","facilities","false","faucets","finishing","flights","floor","flush","flushed","flushes","fnref","foamed","followed","footnote","footnotes","forcing","foursquare","freedom","front","gaming","gates","gentle","going","granted","great","grouped","handle","hands","handy","hanging","happens","hated","having","height","hooks","hours","https","human","ipads","image","imagine","impressive","improved","inclined","insanely","interior","international","investigation","items","layout","ldquo","leave","level","little","loading","locker","loved","makes","maximum","mdash","mechanism","media","memorable","miscellaneous","motion","movement","movie","noscript","noteref","nothing","obfuscation","often","openness","original","outlet","pales","partly","passage","perfectly","phone","picture","planned","pocket","point","position","positioned","precisely","previously","priorities","priority","privacy","prospect","protein","public","putting","random","randomly","ranks","rarely","rdquo","reached","redesign","redesigned","released","repeatedly","responded","restroom","restrooms"]
	},{
		"title": "A look back at 2015: The Rest of the Best",
		"url": "/2016/02/26/a-look-back-at-2015-the-rest-of-the-best/",
		"tags": ["books"],
		"date": "Feb 26<span>th</span>, 2016",
		"ts": "1456516800",
		"summary": "Here&rsquo;s the final installment of my favorite stuff from 2015, the very late edition. This covers the \"everything else\" category, but be sure to check out my lists for Mac and iOS. For a decade I didn&rsquo;t finish a novel. I read some reference and programming books, but had lost the love of fiction that I had as a kid. Most of the times I got in trouble in grade school were for reading under my desk. It came back this year. Secondhand Souls After reading A Dirty Job: A Novel, Christopher Moore became my new favorite author. He writes in a style I would describe as \"Douglas Adams with ADHD.\" Secondhand Souls is the sequel to Dirty Job, and I recommend reading them in order. Lamb Another by Christopher Moore in a very different vein. The story of the missing three decades of the life of Jesus, as told by his best friend, Biff. It&rsquo;s both hilarious and irreverent, but probably not terribly offensive to open-minded Christians. Skinny Legs and All Tom Robbins was one of my favorite authors back when I used to read. I picked this up based on the author alone, and ended up loving it. It took me twice as long as I expected to finish, mostly because his writing is so fascinating that I would frequently re-read paragraphs just to enjoy the word play. The Jesus Cow Michael Perry is a \"midwest author.\" Those curious about Midwest small town life would enjoy this, but it&rsquo;s especially fun for those of us who grew up here. Aside from a wonderful story, references to local gas station chains and farm supply stores made me feel right at home. Both of the first two items are things I&rsquo;ve been using since before 2015, but given their daily usage last year, I think they&rsquo;re worth mentioning for anyone who missed them before. Aqua Notes Merlin Mann turned me onto these. Waterproof notes with suction cups for the shower. I use them for everything from todo lists to song lyrics, to ideas for tweets (which for some reason happen more frequently in the shower than anywhere else). Sleep Headphones A pair of soft, flat headphones for sleeping on a pillow. The headband can also be pulled down to double as a sleep mask (though not an official feature). They&rsquo;re so comfortable I actually sleep better with them on even when not using them as headphones. My wife and I have been using this product for years. The first version tended to wear out after about a year, but the newer version with the fabric cable and more&hellip;",
		"keywords": ["markdown","marked","projects","reading","aaron","adams","allen","amazon","analytics","another","answered","apple","armenante","aside","bluetooth","books","cheaters","christians","christina","christopher","clean","david","dirty","douglas","finder","fleishman","georgia","glenn","google","headphones","holzschlag","imperia","jesus","jillian","ljmtsg","lambert","linder","links","lizzytape","machine","mahnke","maker","markdown","marked","merlin","michael","midwest","molly","moore","notes","novel","originally","overtired","pasta","perry","podcasts","preview","projects","rabbi","recounting","robbins","sazxyprghxu","searchlink","secondhand","shuttle","skinny","sleep","souls","stackexchange","steve","stretchlink","stuff","suffice","systematic","terminal","warren","waterproof","acquired","adding","affiliate","alone","amazon","angel","answered","answers","anyone","anywhere","apple","astounds","author","authors","automatic","automatically","backlink","based","became","because","before","bestof","blast","books","bretts","brettterpstra","browser","bunch","cable","category","cfbcd","chains","cheat","cheaters","check","class","clean","cleaned","click","clipboard","comfortable","computer","cooking","covers","creative","creativeasin","cryptic","curious","customizable","cutting","daily","decade","decades","describe","designed","detail","detailpage","development","different","direction","discoveries","dishes","doing","double","earlier","editing","edition","editor","elegantly","ended","endnotes","enjoy","enjoyed","episode","episodes","especially","everything","expected","extension","fabric","fascinating","father","favorite","favorites","feature","fettuccini","fiction","finish","first","fnref","footnote","footnotes","formats","friend","going","grade","guests","handles","happen","haven","headband","headphones","height","highlights","hilarious","homemade","hoping","https","iphones","itunes","ideas","image","important","installment","invest","iphones","irreverent","issues","items","itunes","lasted","later","latter","ldquo","lengthen","linguini","linkcode"]
	},{
		"title": "90% off Python for Data Structures, Algorithms, and Interviews at Udemy",
		"url": "/2016/02/26/90-percent-off-python-for-data-structures-algorithms-and-interviews-at-udemy/",
		"tags": ["programming","python"],
		"date": "Feb 26<span>th</span>, 2016",
		"ts": "1456500660",
		"summary": "I wanted to share a quick note for anyone with basic to intermediate Python skills. Udemy has an excellent deal on their course \"Python for Data Structures, Algorithms, and Interviews\" which covers all of the major data structures and algorithms you should know when looking for a job in the field. It also includes resume creation, social profiles, and mock interviews for preparation. The course is normally $199 (for 228+ lectures and 17 hours of content), and until Sunday you can pick it up for $19 (90% off). Check it out at Udemy and use coupon code ",
		"keywords": ["algorithm","computer","python","science","structure","algorithms","check","interviews","python","structures","sunday","udemy","algorithms","anyone","basic","content","coupon","covers","creation","excellent","field","hours","includes","intermediate","interviews","lectures","looking","major","normally","preparation","profiles","quick","resume","share","skills","social","structures","wanted"]
	},{
		"title": "DevMate, a development and distribution platform, is now available for free",
		"url": "/2016/02/25/devmate-a-development-and-distribution-platform-is-now-available-for-free/",
		"tags": ["sponsor"],
		"date": "Feb 25<span>th</span>, 2016",
		"ts": "1456401600",
		"summary": "Thanks to DevMate for sponsoring BrettTerpstra.com this week. They have some big news to share! From this moment on, the DevMate platform is free for all users. DevMate is much like an exoskeleton for Mac developers: you could do without, but why in the world would you when you can have all of its perks? First and foremost, DevMate is a way to sell apps outside the Mac App Store. It has an advanced SDK designed to provide tools for licensing, crash reporting, update delivery, and feedback collection for your OS X apps. But development feels like a side-dish when it comes to the analytics you&rsquo;ll find on DevMate&rsquo;s dashboards. Get all the stats on downloads, versions, sales, and revenues. Plus, info on your users and how they use your apps. DevMate was originally created by MacPaw as a backbone for their popular Mac apps, CleanMyMac 3, Gemini, and Hider 2. Now the goods of the platform are available to devs across the globe, and plenty &ndash; such as like RealMac and Smile Inc. &ndash; have already switched. Hop on board, create your app, and leave the rest to DevMate. And it costs nothing",
		"keywords": ["apple","store","brettterpstra","cleanmymac","devmate","first","gemini","hider","macpaw","realmac","smile","store","thanks","across","advanced","analytics","available","backbone","board","collection","comes","crash","create","created","dashboards","delivery","designed","developers","development","downloads","exoskeleton","feedback","feels","foremost","globe","goods","leave","licensing","ndash","nothing","originally","outside","perks","platform","plenty","popular","reporting","revenues","rsquo","sales","share","sponsoring","stats","switched","tools","users","versions","world"]
	},{
		"title": "Web Excursions for February 24, 2016",
		"url": "/2016/02/24/web-excursions-for-february-24-2016/",
		"tags": ["bookmarks"],
		"date": "Feb 24<span>th</span>, 2016",
		"ts": "1456339980",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. This week&rsquo;s Web Excursions brought to you by Macstock 2016. Use coupon code (or just click here) to save $50 on registration! Portia The list of web scraping services keeps growing. This one is especially nice due to its visual builder, just click to highlight and define portions of a web page to create your own data-gatering tool. santinic/how2: stackoverflow from the terminal There are a few good command line tools for accessing StackOverflow answers, but this one goes the extra step of incorporating Google search to overcome some shortcomings in the StackOverflow API. Convert informal date-times in TaskPaper 3 I love this Keyboard Maestro macro for detecting @due(tomorrow) type strings when typing in TaskPaper 3 and automatically turning them into @due(2016-02-24) format. The scripting engine in TaskPaper 3 is completely reworked, so I&rsquo;m still feeling my way around that, as well as continuing to be amazed at what Keyboard Maestro can do. herrbischoff/awesome-command-line-apps \"Use your terminal shell to do awesome things.\" A long list of useful tools for command line hackers from Marcel Bischoff. Also check out Marcel&rsquo;s list of OS X-specific commands. How to Secure Your WordPress Blog/Site A comprehensive guide to hardening WordPress installations against attacks. I&rsquo;m not using WordPress these days, but I&rsquo;ve had a lot of experience with it and this is a great resource. I&rsquo;m headed to Macstock in July, and I&rsquo;m excited to see everybody! Use this link or code to register and save $50",
		"keywords": ["command","interface","linux","programming","bischoff","cleanmymac","convert","excursions","google","keyboard","macstock","maestro","marcel","portia","secure","stackoverflow","taskpaper","wordpress","accessing","against","amazed","answers","attacks","automatically","awesome","brought","builder","check","click","command","commands","completely","comprehensive","continuing","coupon","create","define","detecting","engine","especially","everybody","excited","excursions","experience","extra","feeling","format","gatering","great","growing","guide","hackers","hardening","headed","herrbischoff","highlight","informal","installations","keeps","macro","overcome","partnership","portions","register","registration","resource","reworked","rsquo","santinic","scraping","scripting","search","services","shell","shortcomings","specific","speed","stackoverflow","strings","terminal","times","tomorrow","tools","turning","typing","useful","using","visual"]
	},{
		"title": "The baked goods of my subconscious",
		"url": "/2016/02/23/the-baked-goods-of-my-subconscious/",
		"tags": ["personal"],
		"date": "Feb 23<span>rd</span>, 2016",
		"ts": "1456245060",
		"summary": "Fair warning, this is way off topic for this blog. I am not one to journal my dreams, but I really wanted to share this one and it needs more than 140 characters. I am not making this up or embellishing, my brain actually did this. I woke up at 4am and was a bit restless. After a bit, I fell asleep, and immediately had this dream. I woke up again at 5:30, got up for a bit, and when I went back to bed my wife asked me if I was ok. I detailed the dream I&rsquo;d just had, and the combination of light sleep and verbalizing it made it stick with me in full. I don&rsquo;t listen to a lot of pop music, but am always intrigued by cultural trends, including the area of pop stardom. I&rsquo;ve been watching pop stars since the days of Cindy Lauper and Madonna, and the current batch is both baffling and fascinating. So this is what my subconscious did with that. I dreamt I was hosting a show called Mean Cakes where baked goods were psychoanalyzed. We were broadcasting a live celebrity episode. After analyzing the first entry, Steven Tyler&rsquo;s funnel cake was deemed passive-aggressive. One analyst called it \"a little stale,\" but the comment was struck from the record for irrelevance to the the judging criteria. Kanye West offered an Angel Food cake that took some time to diagnose. It was eventually determined to be bi-polar with delusions of grandeur. The big surprise of the evening was Taylor Swift&rsquo;s Black Forest cake. There was a gasp from the audience when it was unveiled, and in short order it was qualified as sociopathic with violent tendencies. No one really saw that coming. For the record, my conscious brain has no idea where that came from. I think she&rsquo;s a nice lady. I don&rsquo;t know what the grading scale was, or how points were awarded, but Khloé Kardashian won for no apparent reason and without presenting a cake. Don&rsquo;t analyze it too much, I say",
		"keywords": ["kanye","swift","taylor","angel","black","cakes","cindy","forest","kanye","kardashian","lauper","madonna","steven","swift","taylor","tyler","again","aggressive","analyst","analyze","analyzing","asked","asleep","audience","awarded","baffling","baked","batch","brain","brettterpstra","broadcasting","called","celebrity","characters","class","combination","coming","comment","conscious","criteria","cultural","deemed","delusions","detailed","determined","diagnose","dream","dreams","dreamt","embellishing","entry","episode","evening","eventually","fascinating","first","funnel","goods","grading","grandeur","height","hosting","https","image","including","intrigued","irrelevance","journal","judging","ldquo","light","listen","little","loading","making","meancakes","media","music","needs","noscript","offered","original","passive","picture","points","polar","presenting","psychoanalyzed","qualified","rdquo","record","restless","rsquo","scale","share","short","since","sleep","sociopathic","source","srcset","stale","stardom","stars","stick","struck","subconscious","surprise","tendencies","think","title","topic","trends","unveiled","uploads","verbalizing","violent","wanted","warning","watching","where","width"]
	},{
		"title": "A look back at 2015: My Top iOS Apps",
		"url": "/2016/02/22/a-look-back-at-2015-my-top-ios-apps/",
		"tags": ["appstore","iphone"],
		"date": "Feb 22<span>nd</span>, 2016",
		"ts": "1456167000",
		"summary": "Continuing my very late \"best of 2015\" series, here are my top iOS (including Apple Watch, Apple TV, iPhone, and iPad) for last year. I worked more on my iOS devices in 2015 than all prior years combined. I&rsquo;ve entirely stopped taking my laptop with me on most trips, instead just packing an iPad and a keyboard. There are some things I still wait to get back to my Desktop for, but I&rsquo;ve built workflows that allow me to continue working and have those tasks ready to go when I get back to my desk. I&rsquo;m quite happy with the results. I think I busted out my Sony Alpha twice last year. My iPhone 6+ has taken over 99% of my photography needs, with a little help: Enlight I have a more-than-healthy number of apps for editing and filtering. I&rsquo;ve actually found the tools built into Apple&rsquo;s Photos app to be plenty of power for most of my needs. Enlight has become my go-to app for additional image adjustment (plus it makes creating \"memes\" a snap). Darkroom Darkroom would be my runner up pick, especially good for \"artsy\" photo editing. Pixelmator If I need to do more complex editing, such as masking or compositing, Pixelmator is a great app. I don&rsquo;t love doing more advanced work on my iOS devices in general (as opposed to a desktop), but it gets the job done. DropPics for Dropbox I spent way too long trying to find an easy way to make a slideshow out of a Dropbox folder of images. This app does that superbly, along with other tools that make it more convenient to use Dropbox as photo storage. Despite exponentially increasing the amount of work I do on iOS, I still have my iOS game vices. Altos adventure Alto is probably my favorite game of 2015, and one that I still play regularly. It takes some time and isn&rsquo;t much fun if you have to pause in the middle of a run, so it&rsquo;s one of the few I play that I actually have to sit down and make time for. It&rsquo;s great on the Apple TV as well. SketchParty TV When friends or family come over, this game is always requested (I think it&rsquo;s why my parents bought an Apple TV). A multiplayer game of Pictionary&trade; using an iPad and an Apple TV (either over AirPlay or with the new, native Apple TV app). Rock On I pride myself on knowledge of music across decades, and this game can be a fun way to flaunt it or a humbling rebuttal. It&rsquo;s fun either way, and there&rsquo;s a multiplayer version for Apple TV (SongPop Party) that I highly recommend&hellip;",
		"keywords": ["apple","itunes","store","airplay","alpha","altos","apple","blink","continuing","crossy","darkroom","desktop","display","draft","drafts","droppics","dropbox","enlight","fantastical","flying","frogger","games","handy","inbox","indoor","javascript","kanban","mailmate","meistertask","mindmeister","mountie","mysleepbutton","night","omnifocus","outdoor","pablo","paprika","party","password","photography","photos","pictionary","pinboard","pinswift","pixelmator","point","productivity","prompt","reuters","ruler","sanebox","screen","services","sharing","sketchparty","slack","songpop","spark","store","tally","taptronome","tetris","textexpander","twitter","utilities","vsilencer","watch","while","working","writer","writing","accelerometer","access","account","accuracy","accurate","across","advanced","adventure","affiliate","against","agnostic","allow","allowed","amount","angle","anyway","appreciate","appreciated","approach","artsy","audio","automatic","automatically","awesome","background","backgrounds","based","bathrooms","became","because","began","behind","between","blocks","boilerplates","books","bought","built","busted","calendar","celestial","challenging","change","check","choose","clicks","client","clinometer","cognitive","combination","compatible","complex","compositing","continue","convenient","counts","creating","credit","customizable","decades","default","depressing","desktop","detection","determining","device","devices","different","display","distance","doing","earlier","editing","either","elegant","email","emails","encrypted","ended","ending","enjoy","entirely","entity","especially","essential","excellent","explain","exponentially","extensibility","extension","fallen","family","favorite","favorites","feature","features","figured","filtering","first","flaunt","flexibility","flexible","focus","folder","forecasts","forwarding","found","friends","games","gathering","general","generators","genres","getting","great","handling","hands","handy","happy","healthy","heard","hesitate","highly","horrible","humbling","iphone","itunes","identify","image","images","immediate","impossible"]
	},{
		"title": "MeisterTask for iOS, Mac, and Android",
		"url": "/2016/02/18/meistertask-for-ios-mac-and-android-sponsor/",
		"tags": ["sponsor"],
		"date": "Feb 18<span>th</span>, 2016",
		"ts": "1455796800",
		"summary": "Thanks to MeisterTask for sponsoring BrettTerpstra.com this week! MeisterTask is the most intuitive task management and collaboration tool on the web, and now it&rsquo;s better than ever. MeisterTask works in your browser, in the free mobile app for iPhone and iPad (plus Apple Watch and Android, too), and now on your Mac. All your project-related data and files are safely stored in the cloud and synced&mdash;in real-time&mdash;across all devices. You can stay on top of your projects and their to-do lists wherever you are, all with efficient team collaboration. Google and Apple independently listed MeisterTask among the best apps of 2015: At the end of the year MeisterTask was featured in the &lsquo;Best of 2015&rsquo; roundups of the App Store as well as the Chrome Web Store. What&rsquo;s New? MeisterTask supports iOS 9: Split View (fantastic for simultaneously viewing a MindMeister mind map and its related project board in MeisterTask), 3D Touch and Spotlight Search iCal feed: sync tasks with your calendar Section Actions: automate recurring steps in your workflow to work more efficiently and consistently. We currently have 5 Actions. Users can activate one or multiple actions for each section in your project boards Bulk Actions: complete and subsequently archive all tasks in a section at once Time tracking: built-in time tracking functionality with CSV export so users can import their tracked time to the time tracking app Harvest Bidirectional integration with Slack: create tasks directly in a Slack channel as well as receive Slack notifications when a task is moved in MeisterTask. GitHub and Bitbucket: users can complete tasks or checklist items using special commit messages Automatically turn issues found with Bugsnag into tasks. Box integration: upload attachments directly from a Box account MeisterTask offers a free Basic plan, which provides unlimited projects and collaborators, as well as two integrations of your choice. A Pro plan is available for 9€ per user/per month. The Pro plan includes unlimited integrations and section actions, as well as statistics & reports. MeisterTask was created by the collaboration experts behind MindMeister, the market-leading online mind mapping app. The integration between the two tools ensures a seamless workflow from your very first idea to a successfully completed project. Brainstorm, plan, and outline in MindMeister, then easily turn your map into an agile project in MeisterTask&hellip;",
		"keywords": ["iphone","meisterlabs","meistertask","mindmeister","actions","android","apple","automatically","basic","bidirectional","bitbucket","brainstorm","brettterpstra","bugsnag","chrome","github","google","harvest","meistertask","mindmeister","search","section","slack","split","spotlight","store","thanks","touch","users","watch","account","across","actionable","actions","activate","agile","among","apple","archive","attachments","automate","available","behind","between","board","boards","brettterpstra","browser","built","calendar","campaign","channel","checklist","choice","class","cloud","collaborate","collaboration","collaborators","commit","completed","consistently","create","created","devices","directly","easily","efficient","efficiently","ensures","experts","export","exporting","fantastic","featured","files","first","found","functionality","height","https","iphone","ideas","image","import","includes","independently","integration","integrations","intuitive","issues","items","itunes","leading","listed","lists","loading","lsquo","management","mapping","market","mdash","media","medium","meistertask","meistertaskbanner","messages","mobile","moved","multiple","nofollow","noscript","notifications","offers","online","original","outline","picture","project","projects","provides","reality","receive","recurring","related","reports","roundups","rsquo","safely","seamless","section","simultaneously","source","special","sponsored","sponsoring","srcset","started","statistics","steps","stored","strong","successfully","supports","synced","tasks","title","together","tools","tracked","tracking","unlimited","upload","uploads","users","using","viewing","wherever","width","workflow","works"]
	},{
		"title": "A look back at 2015: My Top Mac Apps",
		"url": "/2016/02/17/a-look-back-at-2015-my-top-mac-apps/",
		"tags": ["macappstore"],
		"date": "Feb 17<span>th</span>, 2016",
		"ts": "1455734700",
		"summary": "Ok, so it&rsquo;s the middle of February, 2016 and I haven&rsquo;t published my yearly \"best of\" lists for 2015. I had drafts started in November, but life happens. Here are some of my most-used Mac apps that were new or received major updates in 2015. As usual, it was a great year for software and I couldn&rsquo;t possibly write up all of the awesome apps that came across my screen, so pardon the omissions. iThoughtsX iThoughtsX (along with iThoughts HD) has become my primary brainstorming app. I&rsquo;m not going to deny that I still use and love an overwhelming array of brainstorming tools, but if I had to give up all but one, iThoughts would be the winner. Fantastical 2 The release of version 2 added a full calendar window, improved natural language recognition, and a whole new look to my favorite calendar app. When I started using it, it was just an easy way to add stuff to my calendar with a hotkey. In 2015, I don&rsquo;t think I opened Apple&rsquo;s Calendar app once. Quip Quip.com released a Mac app. It&rsquo;s not a purely native application, but it does exactly what I need it to do. Quip has replaced Google Docs and Google Sheets for most of my needs, especially in the areas of shared documents and change tracking. Curio Curio 10 was huge. Where iThoughts is my brainstorming app, Curio is the ultimate tool for gathering all of my ideas, including contacts, related emails, task lists, outlines, and more, and making sense of them. Spillo Pinboard is still how I manage all of my bookmarks, read-later stuff, and web archiving needs. Spillo is the best client available right now for my Pinboard management needs. Zen Timer After all the hassles I went through with ADD treatment, getting back into a Pomodoro-ish system was the best productivity move I made last year. Why not make it beautiful and fun while I&rsquo;m doing it? Acorn Gus Mueller continued to make one of the best (and fastest) image editing apps even better with Acorn 5. It can not only replace Photoshop for most users, it now supersedes it in multiple areas. Sketch If Acorn has replaced Photoshop for me, Sketch has replaced Illustrator. It provides excellent tools for vector-based web and app design, and the community resources and extensibility are outstanding. TextExpander When I&rsquo;m listing most-used utilities, I sometimes forget TextExpander. Not because I&rsquo;m not using it every minute I&rsquo;m on my computer, but because it&rsquo;s&hellip;",
		"keywords": ["apple","store","acorn","apple","bartender","calendar","cleanmymac","curio","design","dropbox","dropzone","families","fantastical","google","illustrator","mackeeper","mueller","password","photoshop","pinboard","pomodoro","productivity","revisions","sheets","sketch","spillo","textexpander","timer","utilities","visual","where","across","added","advanced","again","announced","applications","archiving","areas","array","available","awesome","based","beautiful","because","bookmarks","books","brainstorming","caches","calendar","capabilities","change","clean","clear","client","comments","community","computer","computing","confused","contacts","continue","continued","convenience","coolest","couldn","design","developer","development","diffing","documents","doesn","doing","drafts","editing","emails","especially","everyday","excellent","extensibility","fastest","favorite","features","files","forget","gathering","getting","going","goodies","great","happens","hassles","haven","historical","hotkey","ithoughts","ithoughtsx","ideas","image","improved","including","language","later","latest","listing","lists","major","making","management","manager","middle","minute","multiple","native","natural","needs","omissions","opened","outlines","overwhelming","pardon","password","picks","plugin","possibly","primary","productivity","provides","published","purely","reading","received","recognition","redesign","related","release","released","remove","replace","replaced","resources","restore","rewrite","right","rsquo","screen","securely","security","sense","shared","short","since","software","sometimes","started","stuff","supersedes","system","tasks","think","through","tools","tracking","treatment","tuned","ultimate","updates","users","using","utilities","vaults","vector","version","versioned","while","whole","window","winner","write","yearly","yesterday"]
	},{
		"title": "Marked 2.5.4: Updates, fixes, and improvements",
		"url": "/2016/02/12/marked-2-dot-5-4-updates-fixes-and-improvements/",
		"tags": ["markdown","marked"],
		"date": "Feb 12<span>th</span>, 2016",
		"ts": "1455303600",
		"summary": "I tweeted about the 2.5.3 release of Marked 2 a couple of months ago. Overall, it&rsquo;s been a popular update, but a mysterious crash for a non-trivial portion of users consumed some time. I&rsquo;ve finally solved it1, and pushed out the 2.5.4 update to direct customers. A note for MAS customers in a bit. Update: Marked 2.5.4 is now approved in the MAS as well. (Feb 13, 2016) In addition to the major features of Marked 2.5, the latest version adds a few new ones: That last one is handy, as it allows a document to contain both Arabic and Latin sections in the same document. RTL paragraphs have some default styling applied to them, but also receive a class of which can be used in custom styles and global CSS to adjust them per theme. The new spelling/grammar checker (In App Purchase) handles language detection per-paragraph &mdash; a feature that was well-received &mdash; but UK users were getting shafted because it would default to US spelling (e.g. \"colour\" would show up as a spelling error). This is fixed! The default language now properly recognizes the system region settings. For advanced users writing their own pre-processors, there was an issue where the preprocessor would run before included files were compiled. This is fixed now, so a multi-file document can be pre-processed in its entirety. There are some improvements to Outline Mode, primarily the ability to export an outline to HTML and PDF properly. I had also caused some slowdown in link validation (yes, Marked can check all urls in your document to make sure they&rsquo;re valid) when I worked on improving its flexibility with edge cases. The latest update restores the speed and alleviates blocking, so long checks run in the background without freezing the scroll or beachballing. For security, all update-related endpoints in the direct version are now secure HTTPS connections. Version 2.5.4 has been submitted for review. Apple had approved 2.5.3, but after discovering the crash in the direct version, I pulled it from release. It took me longer than I thought to fix the issue, but the versions should reach parity soon. The first 2.5.4 build I submitted was immediately rejected (well, once it moved out of a 3-day \"Waiting for Review\" period) for having a \"temporary exception that we&rsquo;ve deemed unnecessary.\" It was something that I&rsquo;d added multiple versions ago and that had always been approved without issue. I&rsquo;ve had a few builds rejected over the years&hellip;",
		"keywords": ["attack","cross","javascript","middle","scripting","store","apple","arabic","because","bitwriter","cfrelease","cfstringref","capitain","custom","documents","error","fixed","https","hopefully","integrity","latin","marked","marked","multi","multimarkdown","outline","overall","pandoc","previewing","processor","processors","protection","python","right","sandboxed","script","shows","store","system","thanks","users","validation","version","waiting","ability","above","added","adjust","advanced","alleviates","allows","almost","another","applied","approved","argument","available","background","backlink","based","beachballing","because","before","binary","blocking","brettterpstra","bridged","build","builds","called","cannot","capabilities","captions","cause","caused","changed","check","checker","checks","class","colour","compiled","connections","consumed","contact","contain","count","couple","crash","crashing","cross","custom","customers","dedicated","deemed","default","detect","detection","developed","direct","disabling","discovering","document","doesn","elasticthreads","endnotes","endpoints","entirety","environment","error","escaped","especially","exception","executed","export","feature","features","feedback","field","files","finally","finishing","first","fixed","fixes","fixing","flexibility","fnref","footnote","footnotes","freezing","getting","global","grade","grammar","handles","handy","having","header","height","hellip","helpful","highlighter","https","image","improvements","improving","included","inconsistent","integrity","interpreter","juggle","language","later","latest","ldquo","level","libraries","license","loading","longer","major","marked","mdash","media","moved","moving","multi","multiple","mysterious","navigation","ndash","noscript","noteref","nvalt","offer","offering","official","original","outline","outlinemode","paragraph","paragraphs","parity","picture","plaintext","pointer","popular","portion","preprocessor","primarily","processed","processor","processors","properly","protection","pulled","pushed","rdquo","reach","reasons","receive","received","recognition","recognizes","region"]
	},{
		"title": "Web Excursions for February 12, 2016",
		"url": "/2016/02/12/web-excursions-for-february-12-2016/",
		"tags": ["bookmarks"],
		"date": "Feb 12<span>th</span>, 2016",
		"ts": "1455285600",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Quartz - News in a whole new way An interesting take on the news as a text-based conversation. A Day at the Stupid Hackathon 2016 A piece from Popular Mechanics about the Stupid Hackathon, which might be the first hackathon I&rsquo;ve ever wished I&rsquo;d attended. Instead of self-seriously creating nothing out of something, these hackers are flipping the recipe on its head&ndash;they celebrate the nothing, creating a something that is stupidly brilliant. gabriel-john/utterson: A Jekyll web backend A web interface for Jekyll blog management. It would take some hacking to work with my current incarnation of Jekyll, but it&rsquo;s a good start. Sparkle Updater Framework HTTP man-in-the-middle vulnerability An obvious (in retrospect) vulnerability in apps that use Sparkle for automatic updates (most apps outside of the MAS). The fix is pretty easy for developers, and as of Marked 2.5.4 (which is available now) all of the updates and release notes are served over HTTPS. You can find additional details on the issue at Vulnerable Security. Bonsai - Best Freelance Tools A nice compilation of tools for freelancers (and devs and designers in general). Project management, accounting, color tools, font collections, and more",
		"keywords": ["cross","interface","scripting","bonsai","check","framework","freelance","https","hackathon","jekyll","marked","mechanics","popular","project","quartz","security","setapp","sparkle","stupid","tools","updater","vulnerable","access","accounting","attended","automatic","available","backend","based","brilliant","brought","celebrate","collections","color","compilation","conversation","creating","designers","details","developers","excursions","first","flipping","freelancers","gabriel","general","hackathon","hackers","hacking","hundreds","incarnation","interesting","interface","management","middle","monthly","ndash","notes","nothing","obvious","outside","partnership","piece","recipe","release","retrospect","rsquo","seriously","served","stupidly","subscription","today","tools","updates","utterson","vulnerability","whole","wished"]
	},{
		"title": "Swiss Army PDFpen 7",
		"url": "/2016/02/11/swiss-army-pdfpen-7/",
		"tags": ["sponsor"],
		"date": "Feb 11<span>th</span>, 2016",
		"ts": "1455192000",
		"summary": "Thanks to PDFpen 7 for continuing to sponsor BrettTerpstra.com! Then go all the way with redaction, Word export, page numbering (plus its fancy cousin, Bates numbering), and more. You can even go mobile with PDFpen for iPad & iPhone. Do you run a paperless office? Scan your old papers straight into PDFpen to OCR. Make corrections, highlights, notes, redactions, and export to the formats you need. For power users, you can even build your own workflows with AppleScript and JavaScript for Automation (JSA)",
		"keywords": ["applescript","bates","javascript","numbering","office","paperless","applescript","automation","bates","brettterpstra","filling","highlighting","javascript","making","pdfpen","swiss","thanks","basics","brett","build","continuing","corrections","cousin","covered","edits","export","fancy","formats","forms","highlights","iphone","knife","mobile","notes","numbering","office","paperless","papers","redaction","redactions","signing","smilesoftware","sponsor","straight","users","workflows"]
	},{
		"title": "Better YouTube thumbnail images",
		"url": "/2016/02/09/better-youtube-thumbnail-images/",
		"tags": [],
		"date": "Feb 9<span>th</span>, 2016",
		"ts": "1455038340",
		"summary": "This is an in-case-you-didn&rsquo;t-already-know tip, and is probably common knowledge to anyone who started writing YouTube scripts after v3 of the YouTube API came out. The gist is that in addition to the tiny thumbnail images that have always been available at a url containing the video id, you can also get a range of qualities and sizes. (120x90 pixel default thumbnail) (320x180) (480x360, letterboxed) (640x480, letterboxed) , , , or (small start, middle, and end frame thumbnails) The default thumbnail can be set on your own videos using the video dashboard in YouTube. For other people&rsquo;s videos, all of the above options will return whatever they&rsquo;ve set or YouTube has chosen automatically. I haven&rsquo;t seen an option to get higher quality versions of the 0-3 frames. Note that the and options do not have letterboxing (black stripes at top and bottom) added, but and do. I updated the JavaScript portion of my Lazy YouTube plugin for Jekyll (details) to use a while ago. I&rsquo;d love to find an option to load @1x and @2x sizes based on screen resolution detection, but for now it&rsquo;s max quality or bad quality",
		"keywords": ["javascript","youtube","javascript","jekyll","youtube","above","added","anyone","automatically","available","based","black","bottom","chosen","common","containing","dashboard","default","details","detection","example","frame","frames","haven","higher","image","images","knowledge","largest","letterboxed","letterboxing","middle","options","people","pixel","plugin","portion","qualities","quality","range","resolution","return","rsquo","screen","scripts","sizes","small","started","stripes","thumbnail","thumbnails","updated","using","versions","video","videos","whatever","while","writing"]
	},{
		"title": "Web Excursions for February 05, 2016",
		"url": "/2016/02/05/web-excursions-for-february-05-2016/",
		"tags": ["bookmarks"],
		"date": "Feb 5<span>th</span>, 2016",
		"ts": "1454680800",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. My Bathroom Mirror Is Smarter Than Yours &ndash; Medium This is by far the best bathroom augmentation I&rsquo;ve seen since installing my (inexpensive and quite wonderful) dual rainfall shower head. Placemat I&rsquo;m a fan of creative placeholder images when mocking up websites in the browser. This service offers a bit of control over content, overlay text (plus font and color), size, and even image effects. A Beginner&rsquo;s Guide to Kerning Like a Designer &ndash; Design School For designers, a great guide to kerning basics. ELLIOTTCABLE/pin-cushion A CLI interface for the Pinboard API. I built something similar but never published it. It was mostly for the purpose of easily renaming and merging tags from the command line. My old friend Elliott Cable made a more polished one with broader usage. bilgi-webteam/kommit An easy system for building Git commits as you work and then running a commit without having to edit the commit notes. I&rsquo;m also intrigued by the idea behind Commit Comments. (Via OneThingWell)",
		"keywords": ["command","interface","programming","bathroom","beginner","cable","check","comments","commit","design","designer","elliottcable","elliott","guide","kerning","medium","mirror","onethingwell","pinboard","placemat","school","setapp","smarter","access","augmentation","basics","bathroom","behind","bilgi","broader","brought","browser","building","built","color","command","commit","commits","content","control","creative","cushion","designers","easily","effects","excursions","friend","great","guide","having","hundreds","image","images","inexpensive","installing","interface","intrigued","kerning","kommit","merging","mocking","monthly","mostly","ndash","notes","offers","overlay","partnership","placeholder","polished","published","rainfall","renaming","rsquo","running","service","shower","similar","since","subscription","system","today","usage","websites","webteam","wonderful"]
	},{
		"title": "Slogger with Day One 2",
		"url": "/2016/02/04/slogger-with-day-one-2/",
		"tags": ["macos","slogger"],
		"date": "Feb 4<span>th</span>, 2016",
		"ts": "1454598060",
		"summary": "Day One 2 is out1, and I&rsquo;m very happy to say that the team there has offered an easy way to keep Slogger working with it. If you&rsquo;re not familiar with either, check out Day One on the App Store and Slogger in my projects. Previously, Day One used a folder of XML files as the entries in a journal. It&rsquo;s moved to a database format now, but there&rsquo;s an \"Auto Import\" folder created for each journal. Because Slogger was built around the XML pile, some of the features that allow searching and modification of journals will stop working, but I doubt many people besides me used those much anyway. To get Slogger working with the new version, you simply need to change your storage path directly to the auto import folder (stop using the \"icloud\" value as that won&rsquo;t work anymore). Here&rsquo;s an example: The portion should remain constant, so only your system username needs editing. Note that only the Default Journal is currently available for auto import. I&rsquo;m hoping that a future version will be able to import to specific secondary journals using the same method. I&rsquo;ll look further into incorporating some of the newer features (such as multiple images, which are supported in both Tweets and Day One 2), but for now that one change will keep your current system running. Yes, I think they&rsquo;re as conflicted about the naming convention as you are.&nbsp;↩",
		"keywords": ["flickr","journal","store","because","containers","default","group","import","journal","library","previously","slogger","store","tweets","users","allow","anymore","anyway","apple","available","backlink","besides","brettterpstra","built","change","check","class","conflicted","constant","convention","created","database","dayone","dayoneapp","directly","doubt","editing","either","endnotes","entries","example","familiar","features","files","fnref","folder","footnote","footnotes","format","happy","height","highlight","highlighter","hoping","https","icloud","image","images","import","itunes","journal","journals","language","ldquo","loading","media","method","moved","multiple","naming","needs","newer","noscript","noteref","notes","offered","original","people","picture","plaintext","portion","projects","rdquo","reversefootnote","rouge","rsquo","running","searching","secondary","simply","slogger","source","specific","srcset","storage","supported","system","think","title","uploads","username","using","value","version","width","working"]
	},{
		"title": "Recap: January",
		"url": "/2016/02/03/recap-january/",
		"tags": ["recap"],
		"date": "Feb 3<span>rd</span>, 2016",
		"ts": "1454526120",
		"summary": "Workflows for animated GIFs (Jan 19th) If you want to use animated GIFs on a blog, or already are, here are some tips for capturing, editing, and optimizing them. I updated the GIF tag plugin for Jekyll as well. Quick reminders from Terminal (Jan 22nd) A Bash script for creating quick, short-term alerts/reminders while working in Terminal. HoudahSpot 4.1 (Jan 25th) My very late review of the update to this excellent file searching tool for Mac. Macstock 2016 (Jan 26th) I&rsquo;m going, are you? Recaps are a quick, curated summary of each month&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get monthly summaries in digest format",
		"keywords": ["format","graphics","interchange","terminal","advanced","downloader","first","hotfix","houdahspot","jekyll","macstock","pdfpen","playlist","quick","recaps","rollout","terminal","video","workflows","alerts","animated","capturing","creating","curated","digest","editing","excellent","format","going","interest","monthly","native","optimizing","plugin","posts","quick","reminders","rsquo","script","searching","short","specifically","sponsors","subscribe","summaries","summary","thanks","ultimate","updated","while","working"]
	},{
		"title": "Timing - The better way to track your time",
		"url": "/2016/02/01/timing-the-better-way-to-track-your-time/",
		"tags": ["sponsor"],
		"date": "Feb 1<span>st</span>, 2016",
		"ts": "1454328000",
		"summary": "Thanks to Timing for sponsoring BrettTerpstra.com this week! Have you ever spent all day in front of your Mac, just to wonder where the heck all that time went? Or tried to bill a client, but couldn&rsquo;t reconstruct how many hours you spent working for them? You could use a time tracker, but to be honest, time tracking sucks. You have to start and stop timers, enter what you did, and so on. And if you forget that, you are back to square one. Not so with Timing. Instead of making you do all the work, Timing automatically tracks how you spend your time. It logs which apps you use, which websites you visit, and which documents you edit. You can easily categorize activities into projects. Your data is not uploaded to anyone&rsquo;s server. It stays safe on your Mac at all times. Still not convinced? Grab the free trial now and on Friday, review all the gory details of what you did this week. But don&rsquo;t blame us when you see all those hours wasted on Facebook and elsewhere&hellip; You can purchase a copy via the Mac App Store or check out our main website at timingapp.com. The app is 20% off this week at $19.99 &mdash; that already pays for itself by recovering just half an hour of unproductive or unbilled time! (And you will save much more time than that!)",
		"keywords": ["productivity","store","brettterpstra","facebook","friday","store","thanks","timing","activities","anyone","automatically","blame","categorize","check","client","convinced","couldn","details","documents","easily","elsewhere","enter","forget","front","hellip","honest","hours","itself","making","mdash","projects","reconstruct","recovering","rsquo","server","spend","spent","sponsoring","square","stays","sucks","timers","times","timingapp","tracker","tracking","tracks","trial","tried","unbilled","unproductive","uploaded","visit","wasted","website","websites","where","wonder","working"]
	},{
		"title": "Macstock 2016",
		"url": "/2016/01/26/macstock-2016/",
		"tags": ["conference"],
		"date": "Jan 26<span>th</span>, 2016",
		"ts": "1453828200",
		"summary": "I always loved attending Macworld, and almost entirely because of the people I&rsquo;d meet and friends I&rsquo;d see. Until yesterday, I thought the days we could all get together for some Mac love with a ton of my favorite Mac people were over. Then I was informed that a new conference (this is the second year) called Macstock was running. I&rsquo;m so out of the loop. It&rsquo;s close enough to me that I can drive (Chicago area), and the price for a 2-day pass and ticket for the BBQ is very reasonably priced at $150. Plus, there&rsquo;s early bird pricing until February 29th, using the code to save $50. Victor Cajiao (Terratech Podcast) Dr. Robert Carter (the Tech Doctor Blog And Podcast) Wally Cherwinski (Magic 22) Adam Christianson (The MacCast) Melissa Davis (themacmommy) Dave Ginsburg (Suburban Chicago Apple Users) Allison Hartley (The Tech Doctor Blog And Podcast) Matt Hillyer Chuck Joiner (MacVoices) Julie Kuehl Don Mcallister (ScreencastsOnline) Tim Robertson (TechFan) Mike Schmitz Kirschen Seah Guy Serle (mymac.com Podcast) Allison Sheridan (nosillacast) Jodi Spangler (Lakeshore Mac) The conference runs from July 16th&ndash;17th. I&rsquo;ve already booked my ticket and reserved lodging. The more the merrier, so go grab a ticket and join me",
		"keywords": ["apple","chicago","iphone","macstock","macworld","allison","apple","cajiao","carter","cherwinski","chicago","christianson","chuck","davis","doctor","ginsburg","hartley","hillyer","joiner","julie","kirschen","kuehl","lakeshore","maccast","macvoices","macstock","macworld","magic","mcallister","melissa","podcast","robert","robertson","schmitz","screencastsonline","serle","sheridan","spangler","suburban","techfan","terratech","users","victor","wally","almost","attending","because","booked","called","close","conference","drive","enough","entirely","favorite","friends","informed","lodging","loved","merrier","mymac","ndash","nosillacast","people","price","priced","pricing","reasonably","reserved","rsquo","running","second","speaker","themacmommy","thought","ticket","together","using","wonderful","yesterday"]
	},{
		"title": "HoudahSpot 4.1",
		"url": "/2016/01/25/houdahspot-4-dot-1/",
		"tags": ["macos"],
		"date": "Jan 25<span>th</span>, 2016",
		"ts": "1453736640",
		"summary": "I&rsquo;m months late in writing about HoudahSpot 4.1, which is odd because it adds the one feature I&rsquo;d always wanted: the ability to save HoudahSpot searches as Finder Smart Folders. I&rsquo;ll get to that in one second. Full disclosure, Houdah has sponsored this blog, but this review is 100% unpaid and prompted by love. For people who haven&rsquo;t used HoudahSpot before, it&rsquo;s a spectacularly powerful way to locate, analyze, and work with all of the files on your Mac. It&rsquo;s everything Spotlight can do, amplified by at least double. I wrote about the 4.0 release when it came out, but here&rsquo;s a short list of features I love: Visual criteria builder similar to Finder search, but with more flexibility (hundreds of options) Snippets: Individual search criteria (or groups of criteria) that you can save and then drag into new searches Search multiple locations at once, and exclude folders within selected locations Quickly create searches using familiar Spotlight syntax (e.g. \"kind:PDF date:today\") and then extend them Automation via AppleScript and integration with LaunchBar, Alfred, Butler, and more I backhandedly requested the ability to save searches as Smart Folders a while back, and developer Pierre Bernard was gracious enough to include the feature in v4.1. Because HoudahSpot provides search capabilities beyond what Spotlight does by default, not all of the criteria can be exported as Smart Folders, but a majority of my common searches work wonderfully. It provides both an easy way to create Smart Folders, and easy access to the results right from within Finder. Most of the other updates in 4.1 are refinements to some of the existing features. For me, the handiest of these is the ability to disable individual search criteria. In combination with HoudahSpot&rsquo;s template features, it allows you to have a set of \"potential\" criteria in a template that you can enable as needed, rather than having to create multiple templates for efficient searching. The built-in text preview can now jump through highlighted matches within the text, which makes HoudahSpot not only great for finding files, but also for drilling all the way down to the info you need within a file. 4.1 also brings additional options when searching by file extension or file type (\"kind\" Spotlight searches). HoudahSpot has a feature that allows search results to be copied as Tab Delimited text, and that option now includes column headers for easy&hellip;",
		"keywords": ["files","search","spotlight","alfred","applescript","automation","because","bernard","butler","delimited","finder","folders","houdah","houdahspot","individual","launchbar","pierre","quickly","search","smart","snippets","spotlight","visual","ability","access","accumulated","allows","amplified","analyze","anyone","available","backhandedly","because","before","beyond","brings","builder","built","capabilities","column","combination","common","copied","create","criteria","default","developer","disable","disclosure","documents","double","drilling","efficient","enjoying","enough","everything","exported","extend","extension","familiar","feature","features","files","finding","flexibility","folders","gracious","great","groups","handiest","haven","having","headers","hellip","highlighted","highly","hundreds","includes","incorporation","individual","integration","license","locations","makes","matches","multiple","needed","normal","options","owners","parsing","people","potential","powerful","preview","prompted","provides","rather","recommend","refinements","release","results","right","rsquo","search","searches","searching","second","selected","short","similar","single","spectacularly","spend","sponsored","spreadsheet","syntax","template","templates","think","through","today","tracking","trial","tried","unpaid","updates","upgrade","using","wanted","while","within","wonderfully","writing","wrote"]
	},{
		"title": "Quick reminders from Terminal",
		"url": "/2016/01/22/quick-reminders-from-terminal/",
		"tags": ["terminal"],
		"date": "Jan 22<span>nd</span>, 2016",
		"ts": "1453480260",
		"summary": "Here&rsquo;s a script for creating simple delayed alerts from Terminal. It doesn&rsquo;t use system notifications, Calendar, or Reminders, just the , , and commands (making it Mac-only), and optionally LaunchBar large text display. To use it, just save the script as in your path and make it executable. Then run a command such as to create a reminder to stretch in half an hour. Your computer will ding and say \"take a break and stand up\" when the timer runs out. If you set to true, it will also provide a visual alert using LaunchBar&rsquo;s large text display. In your bash profile, add the line . It parses a certain amount of natural language, so you can run and after 10 minutes it will say \"let your dog inside.\" You can cancel the last added reminder with . Running with no arguments will list the upcoming alerts. Note that this just uses the Unix command to background the reminder for a set interval. If you quit the Terminal session, you won&rsquo;t get your reminder. It&rsquo;s designed for short term use while you&rsquo;re working, not for important, farther-future dates. Update: Via Nick in the comments, a version for Linux using ogg123 and espeak",
		"keywords": ["afplay","sleep","calendar","launchbar","linux","reminders","running","terminal","added","alert","alerts","amount","arguments","background","break","cancel","certain","command","commands","comments","computer","create","creating","dates","delayed","designed","display","doesn","espeak","executable","farther","important","inside","interval","language","making","minutes","natural","notifications","optionally","parses","profile","reminder","rsquo","script","session","short","simple","stand","stretch","system","timer","upcoming","using","version","visual","while","working"]
	},{
		"title": "4K Video Downloader: Advanced Playlist Downloader",
		"url": "/2016/01/21/4k-video-downloader-advanced-playlist-downloader/",
		"tags": ["sponsor"],
		"date": "Jan 21<span>st</span>, 2016",
		"ts": "1453377600",
		"summary": "Thanks to 4K Video Downloader for sponsoring BrettTerpstra.com this week! 4K Video Downloader runs on Mac, Windows, and Linux. Downloading of playlist or channels is surprisingly simple: just copy and paste the link to a playlist and click download. Save to MP4, MP3, MKV, or OGG at 4K, 1080p, or 720p resolution! As an advanced features for playlist downloading, you can setup sub-folders for each channel and playlist, as well as default subtitles settings for each video. Enjoy your favorite videos or songs anytime, anywhere! Check out 4K Video Downloader at 4kdownload.com",
		"keywords": ["playlist","twitter","youtube","brettterpstra","check","downloader","downloading","enjoy","linux","sponsorship","syndicate","thanks","video","vsayd","windows","youtube","advanced","anytime","anywhere","blockquote","brettterpstra","channel","channels","class","click","default","download","downloading","entire","favorite","features","folders","height","https","image","kdownload","kvideosponsor","loading","media","nofollow","noscript","offline","original","paste","picture","playlist","playlists","resolution","settings","setup","simple","songs","source","sponsoring","srcset","subtitles","surprisingly","title","uploads","video","videos","viewing","width"]
	},{
		"title": "Web Excursions for January 20, 2016",
		"url": "/2016/01/20/web-excursions-for-january-20-2016/",
		"tags": ["bookmarks"],
		"date": "Jan 20<span>th</span>, 2016",
		"ts": "1453298400",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Interact A smart new contact management app from Agile Tortoise. It can create contacts from things like Drafts notes and email signatures with a single tap. It allows group management and works with third party apps. Preview Chrome in Marked A Keyboard Maestro macro lets you preview in Marked while writing in textareas in Chrome. Inoreader - RSS & News Reader \"An RSS reader for power users.\" A lot of useful features in this RSS reader, including keyword filters and powerful search. 1Password 6 for Mac is here! I use 1Password every day, and it&rsquo;s always been solid (both for security and convenience). The 6.0 release adds some great new features, and (suprisingly to me) is a free upgrade for version 5 users. Composer&rsquo;s Sketchpad An intriguing music creation app that lets you draw notation with your finger (or Apple Pencil), handling vibratos and pitch bends in intuitive ways. The only downside is no MIDI support&hellip",
		"keywords": ["store","agile","apple","check","chrome","composer","drafts","inoreader","interact","keyboard","maestro","marked","password","pencil","preview","reader","setapp","sketchpad","tortoise","access","allows","bends","brought","contact","contacts","convenience","create","creation","downside","email","excursions","features","filters","finger","great","group","handling","hellip","hundreds","including","intriguing","intuitive","keyword","macro","management","monthly","music","notation","notes","partnership","party","pitch","powerful","preview","reader","release","rsquo","search","security","signatures","single","smart","solid","subscription","support","suprisingly","textareas","third","today","upgrade","useful","users","version","vibratos","while","works","writing"]
	},{
		"title": "Workflows for animated GIFs",
		"url": "/2016/01/19/workflows-for-animated-gifs/",
		"tags": ["productivity","screencasting"],
		"date": "Jan 19<span>th</span>, 2016",
		"ts": "1453219020",
		"summary": "I&rsquo;ve found animated GIFs to be useful both on my blog and in README files. There are many ways to create them, but most suffer from issues with cropping and resulting file size. I&rsquo;ve found some great solutions, though, and I want to share them with people who currently create GIFs and those who might find GIFs useful for their own needs. You can record GIFs directly from the screen with some simple (and mostly free) apps. The best I&rsquo;ve found have been Capture GIF and the free app Licecap. Licecap is perfect for most of my needs. You can also record terminal sessions using ttyrec, as detailed on TuxDiary. Another option is ttystudio, which I haven&rsquo;t tested, but it looks very effective. Another option for GIF creation is to record it as video and convert it to GIF after editing. This can be a lot less of a headache for things that aren&rsquo;t necessarily reproducible in sequence on the screen as the editing process is simpler. QuickTime Player (bundled with OS X) can do screen recording, but I prefer using ScreenFlow as its editing tools are excellent. On the command line, gifify offers excellent tools for converting QuickTime format to GIF with options for controlling frame rate and speed. There are two apps I&rsquo;ve found that work well as GUI applications, my favorite being PicGIF ($4.99US). GIF Brewery (also $4.99US) is also a solid choice. Even with apps that offer optimization in export, you can still end up with larger-than-necessary images. Especially with Terminal recordings, you really only need 16 colors and just high enough a frame rate to appear smooth. The absolute best solution I&rsquo;ve found is a terminal utility called gifsicle (available through Homebrew and GitHub). Resizing and cropping can be handled in both PicGIF and GIF Brewery, but ImageMagick can make it easy to script. The utility can be used like this: Gifsicle does a great job with compression. For a GUI interface with good drag and drop support, ImageOptim handles animated GIFs well. You can include ImageOptim in a script with a simple There&rsquo;s an article on OpenSourceHacker detailing tips for using QuickTime Player and ImageOptim. Jon Skinner, author of Sublime Text, also has an article detailing \"the hard way,\" which allows scripting and automation. I hope that&rsquo;s useful information. If you have your own solutions, please share them in the comments",
		"keywords": ["format","graphics","interchange","quicktime","store","another","brewery","capture","compression","converting","especially","gifsicle","github","homebrew","imagemagick","imageoptim","licecap","opensourcehacker","optimization","picgif","player","quicktime","readme","recording","resizing","screenflow","skinner","sublime","terminal","tutorials","tuxdiary","absolute","allows","animated","appear","applications","article","author","automation","available","bundled","called","choice","colors","command","comments","compression","controlling","convert","converting","create","creation","cropping","detailed","detailing","directly","editing","effective","either","enough","excellent","export","favorite","files","format","found","frame","gifify","gifsicle","great","handled","handles","haven","headache","images","information","interface","issues","larger","looks","mostly","necessarily","necessary","needs","offer","offers","optimization","options","output","people","prefer","process","record","recording","recordings","reproducible","resulting","rsquo","screen","script","scripting","sequence","sessions","share","simple","simpler","smooth","solid","solution","solutions","speed","suffer","support","terminal","tested","through","tools","ttyrec","ttystudio","useful","using","utility","video"]
	},{
		"title": "Updated GIF tag plugin for Jekyll",
		"url": "/2016/01/18/updated-gif-tag-plugin-for-jekyll/",
		"tags": ["jekyll","plugin"],
		"date": "Jan 18<span>th</span>, 2016",
		"ts": "1453129620",
		"summary": "I posted a quick update to my GIFTag Jekyll plugin. The plugin allows Jekyll to display a clickable poster image for animated gifs without forcing the user to download it on page load. The updated version no longer requires an external play image, instead generating the overlay using CSS only. The code in the JekyllPlugins repository has been updated, and the new CSS is included in the README. It&rsquo;s in Sass (SCSS) format, and requires Compass. If you need the CSS output instead, let me know and I&rsquo;ll update it",
		"keywords": ["format","graphics","interchange","static","compass","giftag","jekyll","jekyllplugins","readme","allows","animated","clickable","display","download","external","forcing","format","generating","image","included","includes","longer","output","overlay","plugin","posted","poster","quick","reads","repository","requires","rsquo","updated","using","version"]
	},{
		"title": "PDFpen 7, the ultimate PDF tool",
		"url": "/2016/01/14/pdfpen-7-the-ultimate-pdf-tool/",
		"tags": ["sponsor"],
		"date": "Jan 14<span>th</span>, 2016",
		"ts": "1452772800",
		"summary": "Thanks to PDFpen 7 for sponsoring BrettTerpstra.com this week! PDFpen is your Swiss Army knife for PDF-fu. It&rsquo;s got all the basics covered, such as filling and signing forms, making edits, highlighting, and OCRing. You can go all the way with redaction, Word export, and page numbering (and its fancy cousin, Bates numbering). Even take it on the road with PDFpen for iPad & iPhone. Do you run a paperless office? Scan your old papers straight into PDFpen to OCR. Make corrections and add highlights, notes, and redactions. Even more, you can easily make your own workflows with AppleScript and JavaScript for Automation (JSA). Come see what PDFpen can do for you at smilesoftware.com/brett",
		"keywords": ["pdfpen","smile","software","applescript","automation","bates","brettterpstra","javascript","ocring","pdfpen","swiss","thanks","basics","brett","corrections","cousin","covered","easily","edits","export","fancy","filling","forms","highlighting","highlights","iphone","knife","making","notes","numbering","office","paperless","papers","redaction","redactions","rsquo","signing","smilesoftware","sponsoring","straight","workflows"]
	},{
		"title": "Web Excursions for January 13, 2016",
		"url": "/2016/01/13/web-excursions-for-january-13-2016/",
		"tags": ["bookmarks"],
		"date": "Jan 13<span>th</span>, 2016",
		"ts": "1452714240",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Save Time with Expert-Level TextExpander Snippets A guest post from Helmut Hauser on Asian Efficiency that offers a detailed overview of tips and tricks for writing advanced TextExpander snippets. If you&rsquo;re a TextExpander user looking to get the most out of it, I highly recommend reading this. Find New Music A great collection from Product Hunt showcasing a wide variety of music dicovery tools. HackPlan/quark-shell-mac Quark Shell helps you create cross-platform (currently Mac-only, Windows version coming soon) menubar/tray app using HTML and JavaScript without writing any native code. Loopback: Cable-Free Audio Routing A new app from Rogue Amoeba for painless routing of audio devices and application output. Think Audio Hijack meets Soundflower. Default Folder X 5 St. Clair Software has officially released Default Folder X version 5, which is fully El Capitan compatible (even with System Integrity Protection enabled). This utility adds some very useful features to every save dialog on your Mac. I&rsquo;ve used it for years and get lost without it. Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee",
		"keywords": ["javascript","amoeba","asian","audio","cable","capitan","clair","default","efficiency","expert","folder","hackplan","hauser","helmut","hijack","integrity","javascript","level","loopback","music","product","protection","quark","rogue","routing","setapp","shell","snippets","software","soundflower","system","textexpander","think","windows","access","advanced","audio","brought","collection","coming","compatible","create","cross","detailed","devices","dialog","dicovery","enabled","excursions","features","fully","great","guest","helps","highly","hundreds","looking","meets","menubar","monthly","music","native","offers","officially","output","overview","painless","partnership","platform","quark","reading","recommend","released","routing","rsquo","shell","showcasing","snippets","subscription","tools","tricks","useful","using","utility","variety","version","writing","years"]
	},{
		"title": "Rollout: Hotfix native iOS apps",
		"url": "/2016/01/07/rollout-hotfix-native-ios-apps/",
		"tags": ["sponsor"],
		"date": "Jan 7<span>th</span>, 2016",
		"ts": "1452168000",
		"summary": "Thanks to Rollout for sponsoring BrettTerpstra.com this week! If you&rsquo;re in any way involved in making iOS apps, you need to check out Rollout. Rollout lets you make code level changes to live iOS apps, instantly. A mobile developer&rsquo;s dream come true. No more waiting for App Store approval just to fix a bug, patch a security hole or make any other modification to your app. You can even add code that calls other SDKs such as analytics, crash reporting or performance monitoring. Rollout works with Native iOS apps. Adding the SDK is quick and simple with no code changes required. Once the SDK is installed in your live app, you can instantly push updates whenever you want and your app will automatically update itself - no user action required. Rollout recently launched and is already installed on over 17 million devices, so they must be doing something right",
		"keywords": ["development","interface","iphone","mobile","programming","software","store","adding","brettterpstra","check","native","opbklk","rollout","store","thanks","action","analytics","approval","automatically","brettterpstra","calls","changes","check","class","click","crash","developer","devices","doing","dream","height","https","image","installed","instantly","involved","itself","launched","learn","level","loading","making","media","million","mobile","monitoring","nofollow","noscript","original","patch","performance","picture","quick","recently","reporting","required","right","rollout","rsquo","security","simple","source","sponsor","sponsoring","srcset","title","updates","uploads","waiting","whenever","width","works"]
	},{
		"title": "Recap: December",
		"url": "/2016/01/05/recap-december/",
		"tags": ["recap"],
		"date": "Jan 5<span>th</span>, 2016",
		"ts": "1452013260",
		"summary": "First, thanks to the December sponsors! Bookmarklet: Clean highlighted code for copying (Dec 1st) A bookmarklet for people who like to collect code examples from websites but get bogged down dealing with syntax highlighter markup. iTunesIcon 2.2 (Dec 9th) Updated version of my script for grabbing icons for iTunes and Mac App Store apps, with a fix for grabbing only small versions of the images. Tips for Screencasting (Dec 10th) Useful tips for speeding up screencast creation, especially with ScreenFlow. The TitleCase API (Dec 15th) Introducing a simple API for capitalizing headlines, fit for use in workflows on both desktop and iOS. Taking advantage of YouTube music on Mac and iOS (Dec 17th) A couple of new options for grabbing and streaming music from YouTube. A Hyper Key that can still YELL (Dec 18th) Do you like the Hyper key idea, but still want a Caps Lock? HomeKit with older home automation devices (Dec 21st) This was my most exciting discovery of the month. Integrating Siri into my aging home automation system is huge for me. Kitchen coding (Dec 29th) LifeHacker and Hacker News seemed to like my thoughts on the parallels between cooking and coding. Maybe you will too. Recaps are a quick, curated summary of each month&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get monthly summaries in digest format",
		"keywords": ["iphone","itunes","store","backblaze","beautiful","bookmarklet","clean","first","hacker","homekit","hyper","improve","integrating","introducing","kitchen","lifehacker","magic","maybe","recaps","screenflow","screencasting","store","taking","textexpander","titlecase","updated","useful","youtube","advantage","aging","automation","between","bogged","bookmarklet","capitalizing","coding","collect","communication","cooking","copying","couple","creation","curated","dealing","desktop","devices","digest","discovery","especially","everything","examples","exciting","format","grabbing","headlines","highlighted","highlighter","itunes","itunesicon","icons","images","interest","markup","monthly","music","older","options","parallels","people","posts","quick","rsquo","screencast","script","seemed","simple","small","specifically","speeding","sponsors","streaming","subscribe","summaries","summary","syntax","system","thanks","thoughts","version","versions","websites","workflows"]
	},{
		"title": "Kitchen coding",
		"url": "/2015/12/29/kitchen-coding/",
		"tags": ["cooking","personal","recipe"],
		"date": "Dec 29<span>th</span>, 2015",
		"ts": "1451405940",
		"summary": "I&rsquo;ve developed a love of cooking. Perhaps even an obsession. It&rsquo;s been good for my diet, and good for my palate. When my mental health providers cut off the stimulants I had been taking for a decade to treat my ADHD, the only real upside to the new regime was that it was really easy for me to stop working at the end of the day (if I made it that far). Because my brain wouldn&rsquo;t let me sit at a computer for any extended period of time, I ended up having free time in the evenings. I&rsquo;ve always been decent in the kitchen. Kind of like I&rsquo;ve always been decent at coding, writing, and even sports1 in my younger years. To the extent that I could make it work, anyway. But, like coding, I decided there were things I could do better and started studying my meals in detail. I had read most of Cooking for Geeks, and began to really see the relationship between chemistry and cooking. It started to get fun. Now this isn&rsquo;t a new or groundbreaking statement, but&mdash;much like learning guitar after years of piano and suddenly seeing frets as keys&mdash;I found the parallels between coding and cooking to be stunning in breadth. When sites like Google Code, BitBucket, and GitHub became a reality, learning to code got dramatically easier for me. I learn best by seeing something work, and then reverse engineering it. It&rsquo;s actually the only way I learn with any efficiency. Sites like Yummly have quickly become my GitHub for cooking. I can download and run a recipe, see the results, and in the process of executing the recipe code, I learn how each part works. And like GitHub, you can copy and paste code, but you learn a lot more if you examine it, break it down, and then rebuild. Along the way you learn skills, syntaxes, and concepts that allow you to bend it to your will. There are algorithms that cross all boundaries in cooking. Understanding things such as glucose breakdown, deglazing, and ordering ingredient combination to allow the optimal heating time for different cellular structures are all valuable skills across any genre of cooking. However, cooking Italian varies drastically from cooking Thai. The base ingredients are different, the way that using Ruby constructs in Python will bite you every time. Each genre has its own syntax, if you will, and things that work in one genre require some translation to work in another. Learning the basic algorithms (zesting a lemon, caramelizing onions, separating models&hellip;",
		"keywords": ["developer","iphone","kitchen","apple","because","belkin","bitbucket","cooking","geeks","genres","github","google","however","italian","jejkk","kitchen","learning","multithreading","paprika","perhaps","pulse","python","recipes","running","sites","stand","tapping","understanding","watch","yummly","across","albums","algorithms","allow","allows","amazon","amount","analogy","another","anyway","apple","aside","assumed","automatically","backlink","basic","basil","basketball","became","before","began","between","boundaries","brain","breadth","break","breakdown","brettterpstra","browse","build","caramelizing","cellular","check","chemistry","chopped","circlesixdesign","class","coding","combination","companion","complex","computer","computers","concepts","constructs","convert","cooking","costing","creative","creativeasin","cross","decade","decent","decided","deglazing","detail","detailed","detects","developed","devices","different","doesn","download","dramatically","drastically","dried","easier","editors","efficiency","ended","endnotes","engineering","enjoyed","entire","evenings","everything","examine","exceptions","executing","expensive","extended","favorite","fights","flickr","fnref","football","footnote","footnotes","forethought","found","fresh","frets","garlic","generally","genre","genres","getting","glucose","going","gravitated","grocery","groundbreaking","guitar","hardware","having","health","heating","height","hitting","hours","https","iphone","ideal","image","individually","ingredient","ingredients","initial","input","itunes","juice","kitchen","kitchencoding","languages","ldquo","learn","learned","learning","lemon","linkcode","loading","manager","mdash","meals","media","memory","mental","minced","minute","mixed","models","mountain","multi","multiple","multithreading","music","needed","noscript","noteref","notes","obsession","onions","optimal","ordering","oriented","original","palate","paprika","parallels","paste","people","peoples","phase","photos","piano","pickup","picture","pitch","pitcher","prefer","press","process","processing"]
	},{
		"title": "The CleanMyMac 3 Winners",
		"url": "/2015/12/26/the-cleanmymac-3-winners/",
		"tags": ["giveaway","macos"],
		"date": "Dec 26<span>th</span>, 2015",
		"ts": "1451156640",
		"summary": "Hope you&rsquo;re all having a great holiday season! Here are the lucky 5 who get to top off their stocking with a free copy of CleanMyMac 3: If you didn&rsquo;t hear from The Giveaway Robot yet, feel free to contact me and request your license code. CleanMyMac 3 is great for clearing out the junk on your hard drive to start the new year, so go check it out at MacPaw",
		"keywords": ["cleanmymac","macpaw","maintenance","andrew","berquin","blair","cleanmymac","daniel","frank","giveaway","hanley","macpaw","penninga","rivers","robot","brettterpstra","check","clearing","contact","drive","goire","great","having","holiday","license","lucky","macpaw","rsquo","season","stocking"]
	},{
		"title": "Win a copy of CleanMyMac 3 for Christmas",
		"url": "/2015/12/22/win-a-copy-of-cleanmymac-3-for-christmas/",
		"tags": ["giveaway","macos"],
		"date": "Dec 22<span>nd</span>, 2015",
		"ts": "1450817340",
		"summary": "CleanMyMac 3 is a great app for maintaining your Mac and freeing up hard drive space (now with Photos support). I reviewed it when it came out, and as you can see on the Product Hunt Mac App of the Year contest results, I&rsquo;m not the only one who thinks so. To celebrate the successes of 2015, MacPaw is offering 5 free copies of CleanMyMac 3 to BrettTerpstra.com readers ($39.95 US value). Sign up below for a chance to win. Winners will be randomly chosen on Christmas (Dec 25, 2015)! Sorry, this giveaway has ended. P.S. Since I&rsquo;m asked every time I post about CleanMyMac, this is not MacKeeper. I use and love this app, and it has none of the issues or malware that the aforementioned creepy application does",
		"keywords": ["maintenance","brettterpstra","christmas","cleanmymac","mackeeper","macpaw","photos","product","since","sorry","winners","aforementioned","asked","below","celebrate","chance","chosen","contest","copies","creepy","drive","ended","freeing","giveaway","great","issues","maintaining","malware","offering","randomly","readers","results","reviewed","rsquo","space","successes","support","thinks","value"]
	},{
		"title": "The Magic Number winners",
		"url": "/2015/12/22/the-magic-number-winners/",
		"tags": ["giveaway"],
		"date": "Dec 22<span>nd</span>, 2015",
		"ts": "1450815120",
		"summary": "Congratulations to the 5 lucky ones. If you think you&rsquo;re on the list (hard to tell without last names&hellip;) and didn&rsquo;t get a code, feel free to check in with me. For everyone else, Magic Number is still 30% off until Christmas",
		"keywords": ["calculator","store","cheminant","chris","christmas","congratulations","johnson","magic","matthew","tensfeldt","check","everyone","giveaway","hellip","lucky","names","rsquo","think","winners"]
	},{
		"title": "HomeKit with older home automation devices",
		"url": "/2015/12/21/homekit-with-older-home-automation-devices/",
		"tags": ["hardware","homeautomation"],
		"date": "Dec 21<span>st</span>, 2015",
		"ts": "1450713060",
		"summary": "I love home automation. I&rsquo;m enamored with the idea of a house that knows where I am, intelligently controls lighting for me, talks to me, and the goal I&rsquo;ve worked toward for years with varying degrees of success: voice control. While solid close-range proximity triggering has still eluded me1, my voice control dream is here. Over the years, I&rsquo;ve accumulated a large collection of X10 and Insteon devices. Light bulbs, switches, outlets, motion sensors, door close detectors, low voltage triggers, mercury switches, and an array remote controls. I currently use Indigo as the brain behind everything, handling more complex scenarios based on variables and even provide an API on my LAN that I can use to control everything from web URLs. The API allowed me to use Workflow on my Apple Watch to control lights from Glances. Siri (and Echo) were out of reach, though, as the aging devices I own are never going to work with HomeKit. Then, Homebridge and the Indigo plugin. I discovered Homebridge via OneThingWell. The Mac mini that runs my house was already set up for NodeJS, so installing it was a breeze. The homebridge-indigo plugin took about 5 minutes to configure. There are plenty more plugins if you happen to use a different automation system. Just run to see the available options. Then edit the file based on the example shown in the Indigo plugin documentation, renaming and adjusting server ports as needed. You can use the keys to only include specific devices/actions, or to include everything except certain ones. If there are any errors in your configuration, you&rsquo;ll see them. In the future, you can use launchd (LaunchControl makes this really easy) to set up the Homebridge server to launch in the background and keep it running. Now you just need an iOS app to bridge Siri to your server. After trying a few HomeKit-capable apps, I found myTouchHome and it instantly picked up all of the devices and actions I had set up in Indigo. Now Siri recognizes commands like \"Hey Siri, turn on all office lights,\" or \"Hey Siri, turn on bedroom lights low.\" I can control single devices with \"turn on\" and \"turn off,\" and actions set up in Indigo appear as switches, running when you use \"turn on.\" The actions-as-switches setup leads to some naming irregularities with actions designed to turn off lights, e.g. \"turn on all office lights off.\" myTouchHome makes this easy to fix, though. Just create a \"scene\" named with what you want the voice&hellip;",
		"keywords": ["apple","automation","homekit","indigo","insteon","watch","apple","bluetooth","glances","homekit","homebrew","homebridge","indigo","installation","insteon","launchcontrol","light","morning","naming","nodejs","onethingwell","readme","touch","watch","while","workflow","accumulated","action","actions","adjusting","advanced","aging","allowed","anyway","appear","apple","array","asking","assign","automation","available","background","backlink","based","bedroom","behind","brain","breeze","brettterpstra","bridge","bulbs","called","capabilities","capable","certain","checking","checks","class","close","collection","command","commands","complex","config","configuration","configure","control","controllable","controls","conventions","create","degrees","designed","detection","detectors","device","devices","devise","different","discovered","dream","eluded","enamored","endnotes","errors","everyone","everything","example","except","excludeids","extensively","false","floor","fnref","footnote","footnotes","forgotten","found","functionality","github","globally","going","gotten","grand","handling","happen","haven","height","hellip","heysiri","highlight","highlighter","homebridge","hoping","house","https","ibeacons","image","includeids","index","indigo","indigodomo","install","installing","instantly","insteon","instructions","intelligently","irregularities","itunes","knows","language","launch","launchcontrol","launchd","ldquo","leads","lighting","lights","listed","living","loading","machine","macupdate","makes","manually","media","mercury","minutes","motion","movie","mytouchhome","mytouchhome","named","naming","needed","nfarina","noscript","noteref","npmjs","office","onethingwell","options","original","outlets","package","panels","phone","picked","picture","plaintext","plenty","plugin","plugins","pocket","ports","possible","powerful","query","range","rdquo","reach","recognizes","remote","renaming","reversefootnote","rouge","rsquo","running","scenarios","scene","search","sensors","server","setup","shell","shown","single","siriiosapple","solid","source","specific","srcset","success","suggest","switches"]
	},{
		"title": "A Hyper Key that can still YELL",
		"url": "/2015/12/18/a-hyper-key-that-can-still-yell/",
		"tags": ["keybindings","keyboard","productivity"],
		"date": "Dec 18<span>th</span>, 2015",
		"ts": "1450447200",
		"summary": "My post \"A useful Caps Lock key\"&mdash;based on a method pointed out by Steve Losh&mdash;has been one of the most popular pages on this blog over time (up there with nvALT and iTextEditors). It turns your Caps Lock key into a \"Hyper\" key that emulates holding Control, Option, Shift, and Command all at once, which is handy for expanding your keyboard shortcut collection. In that post, the resulting key would function as the Hyper-modifier when held, and as Escape when tapped. I wanted to point out that the tap-only keystroke can be modified easily, and that you can also use it to maintain Caps Lock functionality. As detailed in the original post, this still uses Seil and Karabiner. You still want to disable Caps Lock in System Preferences->Keyboard->Modifier Keys&hellip; (and note that this has to be done for all keyboards, internal and external), and then open the file (in Karabiner, go to Misc & Uninstall and click \"Open private.xml\"). The code below demonstrates how to have Caps Lock toggle only when the key is tapped, while behaving as a Hyper key when held and combined with another keystroke. That code can go anywhere inside the tag of the file, and you&rsquo;ll want to replace the Hyper/Escape code if you&rsquo;re already using it. The file provides a plethora of possibilities, so if you&rsquo;re looking to get crazy with it, check out the docs",
		"keywords": ["control","keyboard","preferences","shortcut","system","command","control","escape","hyper","karabiner","keyboard","modifier","preferences","shift","steve","system","uninstall","another","anywhere","based","behaving","below","check","click","collection","crazy","demonstrates","detailed","disable","easily","emulates","expanding","external","function","functionality","handy","hellip","holding","itexteditors","inside","internal","keyboard","keyboards","keystroke","looking","maintain","mdash","method","modified","modifier","nvalt","original","pages","plethora","point","pointed","popular","possibilities","private","provides","replace","resulting","rsquo","shortcut","tapped","toggle","turns","useful","using","wanted","while"]
	},{
		"title": "Taking advantage of YouTube music on Mac and iOS",
		"url": "/2015/12/17/taking-advantage-of-youtube-music-on-mac-and-ios/",
		"tags": ["appreview","appstore","music"],
		"date": "Dec 17<span>th</span>, 2015",
		"ts": "1450386000",
		"summary": "There are two new solutions, one for Mac and one for iOS, for taking advantage of the wide array of music available on YouTube. The first is from Coppertino as part of the iPhone version of VOX (which I&rsquo;m quite fond of). As of version 1.2.0 (now on the App Store), VOX allows you to explore and stream music content on YouTube, organized by genre. You get direct access to the music, without ads. There&rsquo;s a YouTube search bar and songs can be added to your own VOX playlists. The second is from Softorino, who I&rsquo;ve mentioned previously for their apps WALTR and iBetterCharge. Softorino YouTube Converter is a Mac app that will download YouTube music to your local machine, allowing offline playback without ads. If you connect an iOS device to your Mac, it can transfer the songs directly into your library. Note that there are some potential legal issues with downloading music from YouTube. Here&rsquo;s a summary and response from Softorino, I suggest reading it before grabbing any tunes",
		"keywords": ["iphone","store","touch","converter","coppertino","downloader","softorino","store","waltr","youtube","access","added","advantage","allowing","allows","array","available","before","connect","content","device","direct","directly","download","downloading","explore","first","genre","grabbing","ibettercharge","iphone","issues","legal","library","local","machine","mentioned","music","offline","organized","playback","playlists","potential","previously","reading","response","rsquo","search","second","solutions","songs","stream","suggest","summary","taking","tunes","version"]
	},{
		"title": "Magic Number giveaway",
		"url": "/2015/12/17/magic-number-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Dec 17<span>th</span>, 2015",
		"ts": "1450361160",
		"summary": "Earlier this month, this blog was sponsored by a Mac app called Magic Number, a beautiful calculator application with advanced features. Here&rsquo;s a quick overview of the extensive feature list. Dennis Liu, the developer of Magic Number, has offered BrettTerpstra.com readers a chance to win one of 5 free copies ($10 value) of this great app. Just enter a name and email below (no spam, I promise). Winners will be drawn randomly at 12pm CST on Tuesday, Dec 22. One entry per person. Sorry, this giveaway has ended",
		"keywords": ["calculator","magic","store","brettterpstra","dennis","earlier","magic","sorry","tuesday","winners","advanced","beautiful","below","calculator","called","chance","copies","developer","email","ended","enter","entry","extensive","feature","features","giveaway","great","offered","overview","person","promise","quick","randomly","readers","rsquo","sponsored","value"]
	},{
		"title": "Back up everything with BackBlaze",
		"url": "/2015/12/17/back-up-everything-with-backblaze/",
		"tags": ["sponsor"],
		"date": "Dec 17<span>th</span>, 2015",
		"ts": "1450353600",
		"summary": "Thanks to Backblaze for sponsoring BrettTerpstra.com this week! Don&rsquo;t lose your work. Back up all your data with Backblaze online backup. It&rsquo;s unlimited, unthrottled, uncomplicated, and at $5/month per computer, it&rsquo;s a no-brainer. Backblaze natively backs up your music, movies, photos, and whatever you&rsquo;re working on or editing for just $5/month. Backblaze continuously and securely backs up all the data on your computer and external hard drives. It&rsquo;s easy. Access your files easily. You can download and share your files with the iPhone app or use any web browser to download your data, or even have Backblaze FedEx you a flash key or USB hard drive. Data loss happens all the time. Protect yourself. For $5/month, Backblaze will back up all the data on your Mac or PC. Stop putting it off. Start your free trial, and get your backup started today. Backblaze has also just introduced the beta of B2 Cloud Storage, a service that enables developers, IT people, and everyone else to store data in the cloud. Check out the blog post for more info",
		"keywords": ["backblaze","backup","iphone","access","backblaze","brettterpstra","check","cloud","fedex","protect","storage","thanks","backs","backup","brainer","browser","cloud","computer","continuously","developers","download","drive","drives","easily","editing","enables","everyone","external","files","flash","happens","iphone","introduced","movies","music","natively","online","people","photos","putting","rsquo","securely","service","share","sponsoring","started","store","today","trial","uncomplicated","unlimited","unthrottled","whatever","working"]
	},{
		"title": "Web Excursions for December 16, 2015",
		"url": "/2015/12/16/web-excursions-for-december-16-2015/",
		"tags": ["bookmarks"],
		"date": "Dec 16<span>th</span>, 2015",
		"ts": "1450301700",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Editing Tables of Contents with PDF Pen Pro A valuable screencast from Luc P. Beaudoin at CogZest, focusing on PDFpen Pro. This is part of a book project I&rsquo;m helping with, based on Luc&rsquo;s Cognitive Productivity. Make Money Outside the Mac App Store On sale until December 24th, this new ebook from Christian Tietze is an excellent guide to selling and marketing applications outside of the Mac App Store. Angelos Arnis&rsquo; \"Top favorite design resources\" Angelos Arnis compiled the \"Tools I use constantly\" on Medium, and it&rsquo;s a great collection of currently-available resources for web (and other) designers. FundaMine: Inline Comments on Blogs and Media Websites Add Medium-style inline comments & highlights to your own blog with a bit of JavaScript (or WordPress plugin). Freebbble All those free downloads of excellent work on Dribbble in an easy-to-browse interface? Thank you! Search is Back! Facebook took away many aspects of their Graph Search, but this project from Michael Morgenstern adds back the missing features",
		"keywords": ["javascript","store","wordpress","angelos","arnis","beaudoin","blogs","check","christian","cogzest","cognitive","comments","contents","dribbble","editing","facebook","freebbble","fundamine","graph","inline","javascript","media","medium","michael","money","morgenstern","outside","pdfpen","productivity","search","setapp","store","tables","thank","tietze","tools","websites","wordpress","access","applications","aspects","available","based","brought","browse","collection","comments","compiled","constantly","design","designers","downloads","ebook","excellent","excursions","favorite","features","focusing","great","guide","helping","highlights","hundreds","inline","interface","marketing","missing","monthly","outside","partnership","plugin","project","resources","rsquo","screencast","selling","style","subscription","today","valuable"]
	},{
		"title": "The TitleCase API",
		"url": "/2015/12/15/the-titlecase-api/",
		"tags": ["writing"],
		"date": "Dec 15<span>th</span>, 2015",
		"ts": "1450208460",
		"summary": "Federico Viticci mentioned my little TitleCase project in a MacStories post recently, but I never got around to officially announcing it. It&rsquo;s a very simple API for title casing a string of text (AP rules) which can be used in iOS workflows, Mac services and CLIs, and any tool that can get a response from a URL. To use it, just point to http://brettterpstra.com/titlecase/ and pass a GET parameter called containing the string to convert. Example: The API returns nothing but the converted string, no decoding or JSON manipulation needed. You can play with it on the test page. AP title casing Preserves all-caps words Ignores intercaps words (e.g. \"OmniFocus\") Fixes common Mac terms (e.g. \"osx -> OS X\", may be expanded in the future) The goal is to be a very simple tool for integration in other workflows, but if you have any requests you think would be valuable, let me know in the comments",
		"keywords": ["interface","programming","example","federico","fixes","ignores","macstories","notes","omnifocus","preserves","titlecase","viticci","announcing","brettterpstra","called","casing","comments","common","containing","convert","converted","decoding","expanded","integration","intercaps","little","manipulation","mentioned","needed","nothing","officially","parameter","point","project","recently","requests","response","returns","rsquo","rules","services","simple","string","terms","think","title","titlecase","valuable","words","workflows"]
	},{
		"title": "Web Excursions for December 11, 2015",
		"url": "/2015/12/11/web-excursions-for-december-11-2015/",
		"tags": ["bookmarks"],
		"date": "Dec 11<span>th</span>, 2015",
		"ts": "1449854940",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Menu Bar Time Tracking with Doing and TextBar A great integration between doing and TextBar. I&rsquo;m working on some updates to doing to make this more useful, but it&rsquo;s already a cool system. Jukedeck This is awesome. Punch in a style and length and get AI-generated, royalty free soundtracks for your videos (perfect for screencasting). 15 free downloads per month for individuals and small businesses. Screaming Liquid Tiger As a followup to the \"Personal podcast feed for your audiobooks\" post from Andreas Zeitler, Marcel Bischoff has created a PHP script to handle automatic RSS and Atom feed generation from a folder of media files. Wintersmith/pycast From John Abel, a Python script to read local audiobook files and generate xml files for use with Podcast apps. GoodUI An excellent running list of ideas for better UI design. Tested in the real world, these practical tips could improve any website or interface. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["audible","audiobook","python","textbar","andreas","bischoff","check","doing","goodui","jukedeck","liquid","marcel","mindmeister","personal","podcast","punch","python","screaming","tested","textbar","tiger","tracking","wintersmith","zeitler","audiobook","audiobooks","automatic","awesome","between","boosting","brainstorming","brought","businesses","collaborating","collaborative","created","design","doing","downloads","excellent","excursions","files","folder","followup","generated","generation","great","handle","ideas","improve","individuals","integration","interface","length","local","mapping","media","partnership","podcast","practical","productivity","pycast","royalty","rsquo","running","screencasting","script","small","software","soundtracks","style","system","updates","useful","videos","website","working","world"]
	},{
		"title": "Tips for Screencasting",
		"url": "/2015/12/10/tips-for-screencasting/",
		"tags": ["productivity","screencast","video"],
		"date": "Dec 10<span>th</span>, 2015",
		"ts": "1449767760",
		"summary": "I&rsquo;ve answered some questions about my own experience with creating screencasts recently. I&rsquo;m not by any means the most prolific screencaster in the community, but I learned a lot creating 60 Tips with David Sparks for the iBookstore, and creating my own screencasts for Marked 2 and my blog. It seemed like the kind of info that might be of use to the world. Many of these tips focus on my tool of choice, ScreenFlow. I&rsquo;m currently using ScreenFlow 5.0.3, but a lot of these concepts can be easily ported to other applications with minor technical adjustments. There are a lot of options, from QuickTime Player to Camtasia (and many inexpensive options on the Mac App Store), but ScreenFlow&rsquo;s editing capabilities are top notch and perfect for anyone doing more than just a quick screen share. I&rsquo;ve tried everything from \"winging it\" to writing out a full script to read as I record. The best solution for me is in between. I currently outline a screencast, listing sections and major points to hit. While I&rsquo;m recording, the list stays either on another display from the recording screen or on my iPad in front of me. Between each concept I&rsquo;m recording, I pause and reference the list, ensuring I&rsquo;ve covered the necessary points and running through what I&rsquo;m going to do for the next section. I&rsquo;ve learned to record &lsquo;casts in one long take, which I&rsquo;ll get to in a bit. If you do want to script your screencast, it can help prevent any nervous jitters and keep things moving. That&rsquo;s more ideal for recording promo videos than doing how-tos, but it&rsquo;s called for on occasion. Doing a dry run and then transcribing the result to use for a smoothed-out second take can be useful. In this case, you&rsquo;ll want to use a teleprompter application of some sort. There are some options for iPad, which makes a good solution for single-display work, but if you have a second monitor (or use something like Duet), Marked 2 is a very good alternative to the oddly expensive Mac teleprompter solutions. In most cases&mdash;regardless of your intended output resolution&mdash;leave your desktop resolution just as it would normally be. If your primary display is, say, a 27\" high-resolution display and need to show your entire desktop at once, you may want to change the display resolution to something that will compress the visible area a bit. Using ScreenFlow, though, I find that zooming in on areas of interest is&hellip;",
		"keywords": ["screen","screencasting","sharing","action","actions","additionally","annotations","another","audio","background","between","camtasia","command","consistent","contour","create","dbekg","david","doing","editing","either","export","freeze","garageband","hiding","intro","jason","joneses","keeping","keynote","keystrokes","marked","markers","motion","movements","plnooprhobv","pauses","player","preferences","quicktime","record","recording","resolution","ripple","screen","screenflow","scripting","setup","shift","shortcuts","showing","shuttlexpress","snell","sparks","store","system","template","templates","using","visual","while","xpress","ability","above","accuracy","action","actions","added","adjustments","advanced","again","allow","allowing","allows","almost","amazon","annotation","annotations","another","answered","anyone","apple","applications","areas","arrow","aspect","audio","automatically","background","backtick","backtrack","backtracking","based","before","begin","beginning","between","blank","bookmarks","breath","brettterpstra","bring","bringing","build","buttons","called","camtasia","capabilities","capturing","casts","center","change","changes","changing","check","choice","clapboard","class","clicking","clipped","clips","closed","color","combination","comments","commonly","community","compress","concept","concepts","consider","consistency","consistent","control","covered","crazy","create","creating","creative","creativeasin","crossfade","cursor","cutting","define","degrade","desired","desktop","detach","detached","detail","develop","direction","display","distracted","doesn","doing","easier","easiest","easily","edited","editing","editor","edits","effective","effects","efficiency","either","empty","enlarge","ensuring","entire","especially","estate","everything","example","excellent","expensive","experience","explain","explaining","explanation","export","exporting","extend","extensive","external","externally","fading","familiar","fashion","favorite","feature","features","flexible","focus","focused","focusing","format","frame","freeze","front","function","garageband"]
	},{
		"title": "Improve your communication with TextExpander",
		"url": "/2015/12/10/improve-your-communication-with-textexpander/",
		"tags": ["shell","snippet","sponsor","textexpander"],
		"date": "Dec 10<span>th</span>, 2015",
		"ts": "1449748800",
		"summary": "Thanks to TextExpander for sponsoring BrettTerpstra.com this week! TextExpander improves your communication. Add consistency and efficiency to your emails and messages, and prevent embarrassing errors. With TextExpander you can create snippets&mdash;everything from simple text replacements to images to powerful fill-ins with variable options&mdash;and then trigger them while your typing in any application. The latest version, TextExpander 5, helps you type even faster by making suggestions of frequently-typed phrases to abbreviate and save time. TextExpander reminds you of missed opportunities to use your abbreviations while you&rsquo;re typing. You can even set a hotkey for inline search so that all you need is a fragment of your snippet (or its shortcut) to find and expand text quickly. Customize your responses with fill-in snippets to change variable portions every time you use them. Then take your productivity on the move by syncing your snippets among multiple devices (including iOS). You can store them anywhere on iCloud Drive or Dropbox. TextExpander also supports \"shell snippets,\" which let you create even more advanced snippets using shell scripting to automate a wide range of typing tasks. Version 5 adds JavaScript support, which lets you port shell snippets to TextExpander touch for use on iPad and iPhone. Check out my own TE-Tools for examples! Visit smilesoftware.com/brett to download a free demo of TextExpander and improve your communication today",
		"keywords": ["dropbox","iphone","smile","textexpander","brettterpstra","check","customize","drive","dropbox","javascript","textexpander","thanks","tools","version","visit","abbreviate","abbreviations","advanced","among","anywhere","automate","brett","change","communication","consistency","create","devices","download","efficiency","emails","embarrassing","errors","everything","examples","expand","faster","fragment","helps","hotkey","icloud","iphone","images","improve","improves","including","inline","latest","making","mdash","messages","missed","multiple","opportunities","options","phrases","portions","powerful","prevent","productivity","quickly","range","reminds","replacements","responses","rsquo","scripting","search","shell","shortcut","simple","smilesoftware","snippet","snippets","sponsoring","store","suggestions","support","supports","syncing","tasks","today","touch","trigger","typed","typing","using","variable","version","while"]
	},{
		"title": "iTunesIcon 2.2",
		"url": "/2015/12/09/itunesicon-2-dot-2/",
		"tags": ["iphone","itunesicon","macos","scripting","search"],
		"date": "Dec 9<span>th</span>, 2015",
		"ts": "1449672480",
		"summary": "I just updated iTunesIcon, my little app for grabbing icons for any App Store application. This is a bugfix release, updated to fix the recent bug that only saved the 100x100px version of an icon. By default it will now save the 512px version, and you can specify other sizes using , , or (large being default). You can shortcut these with , , and . ItunesIcon v2.4 Download ItunesIcon v2.4 An application for quickly retrieving the high-res icon for any Mac or iOS apps. Published 02/15/14. Updated 09/01/21. Changelog Donate &bull; More info&hellip",
		"keywords": ["iphone","store","changelog","donate","download","itunesicon","published","store","updated","added","bugfix","default","details","grabbing","hellip","itunesicon","icons","links","little","project","quickly","recent","release","retrieving","saved","shortcut","sizes","source","specify","updated","using","version"]
	},{
		"title": "Recap: November 2015",
		"url": "/2015/12/06/recap-november-2015/",
		"tags": ["recap"],
		"date": "Dec 6<span>th</span>, 2015",
		"ts": "1449412800",
		"summary": "If you&rsquo;re interested in reaching a large audience of smart, tech-savvy people at a very reasonable rate, let me know. A personal podcast feed for your audiobooks (Nov 10th) A guest post from Andreas Zeitler detailing ways to get your audiobooks into podcast apps like Overcast. Curio 10 and Curiota (Nov 12th) Curio 10 is out, and it&rsquo;s amazing. A fix for slippery iPhones (Nov 13th) My personal favorite purchase for the month is under $10. Shell Tricks: convert file urls to UNIX paths (Nov 16th) For the Terminal junkies, a quick trick for converting copied urls to POSIX paths. Smarter keyboard shortcuts for Finder (Nov 17th) If you&rsquo;ve never taken advantage of OS X&rsquo;s built-in keyboard shortcut functionality, you should&hellip; Recaps are a quick, curated summary of each month&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get monthly summaries in digest format",
		"keywords": ["brett","brettterpstra","terpstra","andreas","clarify","curio","curiota","fetching","finder","first","introducing","overcast","posix","recaps","shell","smarter","terminal","textexpander","tricks","upgrade","zeitler","advantage","amazing","audience","audiobooks","browser","built","convert","converting","copied","curated","detailing","digest","editor","favorite","format","functionality","guest","hellip","history","iphones","impossible","instructions","interested","junkies","keyboard","minimalist","misunderstand","monthly","paths","people","personal","podcast","posts","quick","reaching","reasonable","recap","rsquo","savvy","shortcut","shortcuts","slippery","smart","special","specifically","sponsors","subscribe","summaries","summary","taken","thank","trick","under"]
	},{
		"title": "New Nova icons plus a Friday Freebie",
		"url": "/2015/12/04/new-nova-icons-plus-a-friday-freebie/",
		"tags": ["design","freebie","icons"],
		"date": "Dec 4<span>th</span>, 2015",
		"ts": "1449246360",
		"summary": "Nova, a new icon set from the creator of the fantastic Streamline set is out. It includes 4000 icons (both line and solid versions) in Sketch, Illustrator, SVG, and PDF formats. In addition to the available file formats, they also come as an Iconjar archive, fully tagged with up to 10 tags per icon, making it much more searchable than the usual icon set. The full pack is retailing at $127, but this week it&rsquo;s being offered for an intro price of $77. There&rsquo;s also a free set of 350 icons available. Speaking of free, Dry Icons has provided a free set of Social Media icons for BrettTerpstra.com readers. The set includes PNG, PSD, AI, and EPS versions. They&rsquo;re under a Creative Commons Attribution 3.0 Unported License, and you can download and start using them today ",
		"keywords": ["format","graphics","scalable","vector","attribution","brettterpstra","commons","creative","enjoy","iconjar","icons","illustrator","license","media","sketch","social","speaking","streamline","unported","archive","available","creator","download","fantastic","formats","fully","icons","includes","intro","making","offered","price","readers","retailing","rsquo","searchable","solid","tagged","today","under","using","versions"]
	},{
		"title": "Beautiful math with Magic Number",
		"url": "/2015/12/03/beautiful-math-with-magic-number/",
		"tags": ["sponsor"],
		"date": "Dec 3<span>rd</span>, 2015",
		"ts": "1449144000",
		"summary": "Thanks to Magic Number for sponsoring BrettTerpstra.com this week! First, your math appears beautifully &mdash; crystal clear and easy to understand. Using Magic Number is intuitive, just type what you think and see the results. Nothing gets in your way. Everything is a breeze. Want to know the percentage increase from 72 to 90? Just type \"72 + ? % = 90\" and let Magic Number do the algebra. Want to make sense of a list of numbers? No need to overkill with spreadsheet. You can do statistics, calculate taxes, and compare prices with couple of clicks. The list goes on. Magic Number is deep, see for yourself. Whatever your level, whatever your math, you can do it with less effort. Between now and Christmas, Magic Number is 30% off — that&rsquo;s $6.99 for a math sidekick. Why wait? Get it for your Mac today",
		"keywords": ["calculator","magic","between","brettterpstra","christmas","everything","first","magic","nothing","thanks","using","whatever","algebra","appears","beautifully","breeze","brettterpstra","class","clear","clicks","compare","couple","crystal","easier","effort","height","https","image","increase","intuitive","ldquo","level","loading","mdash","media","nofollow","noscript","numbers","original","overkill","picture","prices","rdquo","results","rsquo","sense","sidekick","source","sponsoring","spreadsheet","srcset","statistics","strong","taxes","think","title","today","understand","uploads","whatever","width"]
	},{
		"title": "Bookmarklet: Clean highlighted code for copying",
		"url": "/2015/12/01/bookmarklet-clean-highlighted-code-for-copying/",
		"tags": ["bookmarklet","javascript"],
		"date": "Dec 1<span>st</span>, 2015",
		"ts": "1448993640",
		"summary": "I made a little bookmarklet this morning for cleaning up highlighted code blocks in web pages for copying into my notes. You just click it on any web page and all blocks and elements will be turned into plain text. Once code blocks are cleaned, double-clicking anywhere in the block will select all the contents of the field. If this would be of use to you, you can drag the bookmarklet below to your menu bar and try it out. It doesn&rsquo;t currently work on GitHub in this form, but you can create a local bookmarklet from the source if needed. GitHub, of course, offers raw source easily, so it&rsquo;s not really a concern. If your Chromium browser doesn&rsquo;t allow bookmarklets (like Arc), download the CodeCleaner extension version and follow the instructions here. It&rsquo;s not heavily tested, so let me know if you see bugs. It also only handles the most common code highlighters, so there are more than likely code blocks it will fail on, but it serves my needs as is. Side notes: By default it will add code fences (triple backticks), and try to detect the language. If a language is found in the or element&rsquo;s classes or attribute (falling back to those of the parent or tag), it will be added to the opening fence. The source script allows these to be overridden with an options object passed to the main function (e.g. , but I don&rsquo;t currently have that implemented in the bookmarklet version",
		"keywords": ["browser","chromium","codecleaner","github","added","allow","allows","anywhere","attribute","backticks","below","block","blocks","bookmarklet","bookmarklets","browser","classes","cleaned","cleaning","click","clicking","common","concern","contents","copying","create","default","detect","doesn","double","download","easily","element","elements","extension","falling","fence","fences","field","found","function","handles","heavily","highlighted","highlighters","implemented","instructions","language","likely","little","local","morning","needed","needs","notes","object","offers","opening","options","overridden","pages","parent","passed","rsquo","script","serves","source","tested","triple","turned","version"]
	},{
		"title": "Web Excursions for November 30, 2015",
		"url": "/2015/11/30/web-excursions-for-november-30-2015/",
		"tags": ["bookmarks"],
		"date": "Nov 30<span>th</span>, 2015",
		"ts": "1448909280",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. The Just Stay Home Marked 2 Sale I&rsquo;ve extended this for a few days, use code to get $3 off the direct version of Marked 2. The Productive Writer&rsquo;s Bundle Pick up Marked 2, Texts, WordCounter, and bonus goodies for $24.99. A complete set of apps and tools for getting writing done. Timing.app 20% off Timing is a great app for automatic time tracking on Mac, and one I use personally. It&rsquo;s 20% off for the week, check it out. A Comprehensive Guide to the iTunes Affiliate Program My friend John Voorhees, developer of Blink: Better Affiliate Links, wrote a huge guide to the iTunes affiliate program on MacStories. If you ever share iTunes links, check it out. Riffstation See tabs (chords only) for guitar and ukulele and piano. It plays along with any YouTube video and shows the chords, as well as a fret diagram. Booking.js from Timekit.io A free calendar and scheduling widget that works with Google Calendar and can be embedded in web pages. I&rsquo;ve been looking for something this simple for a while. ylian/unmarked A (work-in-progress) JavaScript-based HTML to Markdown converter developed for use in Quiver. FeedEx.Net: The Feed Expander beta Expand RSS feeds to full text versions. Slides Framework: Beautiful Website Builder - Designmodo Generate mobile-friendly single-page websites easily. A one-time purchase for 70 slides and 11 (combinable) quick-start templates. The slides include PSD, Sketch and HTML sources",
		"keywords": ["bundle","calendar","creatable","google","software","affiliate","beautiful","blink","booking","builder","bundle","calendar","check","comprehensive","cyber","designmodo","expand","expander","feedex","framework","google","guide","javascript","links","macstories","markdown","marked","monday","productive","program","quiver","riffstation","setapp","sketch","slides","texts","timekit","timing","voorhees","website","wordcounter","writer","youtube","access","affiliate","automatic","based","bonus","brought","calendar","check","chords","combinable","converter","developed","developer","diagram","direct","easily","embedded","excursions","extended","feeds","friend","friendly","getting","goodies","great","guide","guitar","hundreds","itunes","links","looking","mobile","monthly","pages","partnership","personally","piano","plays","program","quick","rsquo","scheduling","share","shows","simple","single","slides","sources","subscription","templates","today","tools","tracking","ukulele","unmarked","version","versions","video","websites","while","widget","works","writing","wrote","ylian"]
	},{
		"title": "The \"just stay home\" Marked 2 sale",
		"url": "/2015/11/27/the-just-stay-home-marked-2-sale/",
		"tags": ["markdown","marked"],
		"date": "Nov 27<span>th</span>, 2015",
		"ts": "1448658840",
		"summary": "I wasn&rsquo;t planning to do anything with Marked 2 for Black Friday this year. More than that, really, I was planning not to do anything. Then I went outside. I ran a few errands. The co-op was deserted. The coffeehouses weren&rsquo;t unusually packed. All of Winona&rsquo;s historic downtown had a normal or sub-normal population. Then I went to the \"Big Box\" end of town for a single garage door opener battery. I may have PTSD (Post traumatic shopping disorder). In light of these events, I&rsquo;m offering you $3 to just stay home. Skip the consumerist orgy. Pour a glass of wine, put on some Bauhaus, Johnny Cash, Nick Cave, Lou Reed (or whatever the sad kids listen to these days), and just do some writing. Finish up that NaNoWriMo novel, do some blogging, catch up on project documentation, or just journal your Thanksgiving dinner as a potential therapy. Marked is good for all of that. Here&rsquo;s your coupon: ($3 off the current $11.99 price of Marked 2). You can use it at checkout when purchasing the direct version. It&rsquo;s good through Monday. Don&rsquo;t forget about the Productive Writer&rsquo;s Bundle, either, which includes Marked, as well as Texts, WordCounter, and more at a fantastic price",
		"keywords": ["marked","writing","bauhaus","black","bundle","finish","friday","johnny","marked","monday","nanowrimo","productive","texts","thanksgiving","winona","wordcounter","writer","battery","blogging","catch","checkout","coffeehouses","consumerist","coupon","deserted","dinner","direct","disorder","downtown","either","errands","events","fantastic","forget","garage","glass","historic","includes","journal","light","listen","normal","novel","offering","opener","outside","packed","planning","population","potential","price","project","purchasing","rsquo","shopping","single","therapy","through","traumatic","unusually","version","weren","whatever","writing"]
	},{
		"title": "Clarify: Make your instructions impossible to misunderstand",
		"url": "/2015/11/26/clarify-make-your-instructions-impossible-to-misunderstand/",
		"tags": ["sponsor"],
		"date": "Nov 26<span>th</span>, 2015",
		"ts": "1448539200",
		"summary": "Thanks to Clarify for sponsoring BrettTerpstra.com this week! I&rsquo;ve been using Clarify for a long time, and I&rsquo;m honored to have Blue Mango supporting this blog. Clarify simplifies the process of documenting tasks&mdash;large or small&mdash;on your screen. With screen capture, annotation, and writing tools, as well as comprehensive export options, it&rsquo;s a one-stop application for capturing, describing, and sharing documentation. You may have heard about Clarify before and thought you didn&rsquo;t need it&mdash;after all, much of what you can do in Clarify you can do in Pages or Word. But that&rsquo;s like saying you don&rsquo;t need OmniFocus because much of what you can do in OmniFocus can be done in iCal or a checklist app. You&rsquo;d be sort of right&hellip; but mostly wrong. Clarify makes it easier to create quick \"how to\" documents that work in Word, PDFs, Evernote, WordPress, Dropbox, or a standalone webpage. Just grab screenshots (which are automatically pulled into the Clarify document), mark them up with the built-in tools, and then add paragraph explanations. It all happens in one simple-to-use app. This week Clarify is 50% off. Just head over to the Clarify store. Clarify is fast, simple, and can be used to show anybody how to do anything. Seriously: If you&rsquo;re still not sure how Clarify fits into your life, check out these videos. The possibilities are endless, and for $15, it&rsquo;s a no-brainer",
		"keywords": ["communication","drive","dropbox","google","wordpress","brettterpstra","clarify","crashplan","dropbox","evernote","explain","mango","omnifocus","pages","seriously","thanks","wordpress","write","annotation","anybody","article","automatically","because","before","brainer","broken","built","capture","capturing","check","checklist","comprehensive","contractor","create","describing","developer","document","documenting","documents","easier","endless","explanations","export","happens","heard","hellip","honored","makes","mdash","mostly","options","paragraph","parents","possibilities","process","pulled","quick","right","rsquo","saying","screen","screenshots","sharing","simple","simplifies","small","sponsoring","standalone","store","support","supporting","tasks","thought","tools","using","videos","webpage","write","writing","wrong"]
	},{
		"title": "Blockbuster Kit: a pre-Black Friday deal for movie lovers",
		"url": "/2015/11/25/blockbuster-kit-a-pre-black-friday-deal-for-movie-lovers/",
		"tags": ["video"],
		"date": "Nov 25<span>th</span>, 2015",
		"ts": "1448496000",
		"summary": "I&rsquo;ve mentioned WALTR before, and am a happy user of Boom 2&mdash;a great utility for boosting and eq&rsquo;ing all the sound that comes out of your Mac. Add Elmedia Player PRO and Beamer 3, and you have a great kit for high-quality movie viewing on your Mac (and sending to Apple TV or Chromecast). All four apps are available in the Blockbuster Kit for $24.95 (a 73% discount), until Friday. The \"Black Friday\" price will be $30, so if you&rsquo;re a movie lover, go grab it early",
		"keywords": ["apple","chromecast","media","streaming","apple","beamer","black","blockbuster","chromecast","elmedia","friday","player","waltr","available","before","boosting","comes","discount","great","happy","lover","mdash","mentioned","movie","price","quality","rsquo","sending","sound","utility","viewing"]
	},{
		"title": "Shell Tricks: Quick line numbering",
		"url": "/2015/11/24/shell-tricks-quick-line-numbering/",
		"tags": ["terminal"],
		"date": "Nov 24<span>th</span>, 2015",
		"ts": "1448387820",
		"summary": "It&rsquo;s often useful to quickly see line numbers when viewing source code files. The command and related tools can display with line numbers. There&rsquo;s also the command, but it doesn&rsquo;t number blank lines and tends to mess up formatting. There&rsquo;s are ways that are more flexible and better looking. Enter and . If you pass a \"match everything\" pattern to () and include the flag, you&rsquo;ll get the entire file passed back with line numbers followed by colons. The nice thing about the switch is that you can actually search with it and see the resulting line numbers for just the matching lines. Same with , (Silver Searcher), and others. I don&rsquo;t love the output, though. The paste utility concatenates the corresponding lines of the given input files, replacing all but the last file&rsquo;s newline characters with a single tab character, and writes the resulting lines to standard output. For this tip, we&rsquo;re overriding the newline-to-tab conversion (with the flag) and replacing newlines with TAB-newline, maintaining the newline but indenting it. will number the lines in the output, and the switch on paste will restore our whitespace keeping the line number justified to the left. This will give you nicely formatted, line-numbered output. You can pass it to for (in my opinion) better-looking output than less&rsquo;s default switch. You can also pipe it to to filter, generating the same paginated output as with better formatting. You can also redirect to a file () or the clipboard () for line-numbered text you can share",
		"keywords": ["newline","paste","enter","searcher","silver","accessible","alias","blank","character","characters","clipboard","colons","command","concatenates","conversion","corresponding","default","display","doesn","easily","entire","esoteric","everything","files","filter","flexible","followed","formatted","formatting","function","generating","indenting","input","justified","keeping","looking","maintaining","makes","match","matching","newline","newlines","nicely","numbered","numbers","often","others","output","overriding","paginated","passed","paste","pattern","quick","quickly","redirect","related","replacing","restore","resulting","rsquo","search","share","single","somewhat","source","standard","switch","tends","tools","useful","utility","version","viewing","whitespace","writes"]
	},{
		"title": "Web Excursions for November 23, 2015",
		"url": "/2015/11/23/web-excursions-for-november-23-2015/",
		"tags": ["bookmarks"],
		"date": "Nov 23<span>rd</span>, 2015",
		"ts": "1448307480",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. slalert!: News Alerts in Slack This new tool from Diffbot (I&rsquo;m a fan of Diffbot for all kinds of web scraping) allows you to scour the web for mentions of your app or project and get alerts in Slack whenever it&rsquo;s mentioned. Nifty. Stock Up Another great source for free stock photos, sourcing and searching 26 different free photo sites. Rover &ndash; simple file browser for the terminal A small, terminal-based (curses) utility for navigating file systems. vi-like keybindings, integration with environment variables, and file management capabilities. Using Swift To Make Command Line Scripts - Part 1 A great rundown on using Swift to create CLIs with argument handling and full functionality. oarrabi/Swiftline A set of tools to assist in creating command line applications and tools. Colorize output and provide user interaction (ask, choose, agree). Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["command","developer","interface","programming","swift","alerts","another","backblaze","check","colorize","command","diffbot","nifty","rover","scripts","slack","stock","swift","swiftline","using","affordably","agree","alerts","allows","applications","argument","assist","backs","based","brought","browser","capabilities","choose","cloud","command","computer","create","creating","curses","different","entire","environment","everything","excursions","functionality","great","handling","integration","interaction","keybindings","kinds","management","mentioned","mentions","navigating","ndash","oarrabi","output","partnership","photo","photos","project","reliably","rsquo","rundown","scour","scraping","searching","securely","simple","sites","slalert","small","source","sourcing","stock","systems","terminal","today","tools","using","utility","variables","whenever"]
	},{
		"title": "Introducing Syml, a minimalist iPad text editor",
		"url": "/2015/11/19/introducing-syml-a-minimalist-ipad-text-editor/",
		"tags": ["sponsor"],
		"date": "Nov 19<span>th</span>, 2015",
		"ts": "1447934400",
		"summary": "Thanks to Syml for sponsoring BrettTerpstra.com this week! Syml is a text editor designed to take advantage of the iPad&rsquo;s large screen. It’s built around seamless Dropbox sync and natural gestures that let you interact directly with your words. If that&rsquo;s caught your interest I&rsquo;d recommend skipping straight to a 30 second video of it in action. That&rsquo;s by far the best way to get a feel for what makes Syml special. Syml is opinionated. It&rsquo;s a text editor for writers that looks deceptively simple, while offering a depth of powerful features: It presents you with a single searchable list of documents in the style of Notational Velocity. Fuzzy search to filter down to the document you want or to quickly create a new file. Each document has persistent, unlimited undo. You can scrub through your document&rsquo;s history in a way that makes undo and redo a fluid part of the editing experience. Insert markdown elements, cut, copy or paste with a single swipe. It has deep markdown syntax awareness for beautiful highlighting and actions based on the selected text. Option-Space will bring up a menu of actions tailored to the current context allowing you to trigger actions without having to take your hands from the keyboard. It&rsquo;s fully optimised to take advantage of iOS 9 features like Multitasking, Split-View and Spotlight integration. This is 1.0&hellip; just the beginning. Syml gets out of your way, and lets you focus on your writing. Words really don&rsquo;t do it justice. See for yourself",
		"keywords": ["editor","markdown","store","brett","brettterpstra","dropbox","fuzzy","image","mtkyuh","multitasking","notational","space","split","sponsored","spotlight","syndicate","thanks","turpstra","velocity","vsayd","words","action","actions","advantage","allowing","awareness","based","beautiful","beginning","blockquote","brettterpstra","bring","built","caught","class","context","create","deceptively","depth","designed","directly","document","documents","editing","editor","elements","experience","features","filter","fluid","focus","fully","gestures","hands","having","height","hellip","highlighting","history","https","image","integration","interact","interest","justice","keyboard","loading","looks","makes","markdown","media","natural","nofollow","noscript","offering","opinionated","optimised","original","paste","persistent","picture","powerful","presents","quickly","recommend","rsquo","screen","scrub","seamless","search","searchable","second","selected","simple","single","skipping","source","special","sponsoring","srcset","straight","style","swipe","syntax","tailored","through","title","trigger","unlimited","uploads","video","while","width","words","writers","writing"]
	},{
		"title": "Black Friday Deal at Udemy: 17,000+ online courses for $10 (48 hours only)",
		"url": "/2015/11/18/black-friday-deal-at-udemy-17-000-plus-online-courses-for-10-dollars-48-hours-only/",
		"tags": ["learning"],
		"date": "Nov 18<span>th</span>, 2015",
		"ts": "1447873080",
		"summary": "I&rsquo;ve partnered with global online learning marketplace Udemy to bring you a Black Friday $10 deal on 17,000+ of their best selling courses. Learning is no longer limited to a classroom or a book. We live in a world where we can learn new skills and concepts on-demand, at our own pace, and on an amazing array of devices. Udemy has both master and mini courses on everything from programming to photography, and I encourage you to take a look. I think most of my readers will gravitate to the wide array of programming courses (covering everything from web development, JavaScript, and advanced libraries like Angular JS, to iOS, Android, Mac, and Windows programming), but who knows? You may find a new passion (like writing or yoga), master new business skills (like Excel), or maybe even a new career. Starting today, you can get courses for $10, which is up to 98% off. The $10 deal only lasts 48 hours. After Thursday the price starts rising until Black Friday, when the sale ends at a price of $15 for courses. If you&rsquo;re looking to learn, stock up early",
		"keywords": ["interface","iphone","javascript","learning","microsoft","programming","windows","android","angular","black","excel","friday","javascript","learning","starting","thursday","udemy","windows","advanced","amazing","array","bring","business","career","classroom","concepts","courses","covering","demand","development","devices","encourage","everything","global","gravitate","hours","knows","lasts","learn","learning","libraries","limited","longer","looking","marketplace","master","maybe","online","partnered","passion","photography","price","programming","readers","rising","rsquo","selling","skills","starts","stock","think","today","where","world","writing"]
	},{
		"title": "Smarter keyboard shortcuts for Finder",
		"url": "/2015/11/17/smarter-keyboard-shortcuts-for-finder/",
		"tags": ["finder","macos","productivity","quicktip"],
		"date": "Nov 17<span>th</span>, 2015",
		"ts": "1447796400",
		"summary": "I frequently mention the capability of OS X to assign keyboard shortcuts to Services and other functions. At its most basic, though, the keyboard shortcut functionality can enhance and customize any application. As an example, Finder can be extended nicely for the keyboard-inclined. Most features in Finder already have shortcuts, as you&rsquo;ll see if you pull down any menu from the menu bar. There are a few that don&rsquo;t, primarily contextual menu items, that can have shortcuts assigned to speed up your workflow. To assign shortcuts, open System Preferences and navigate to the Keyboard pane. Once there, choose the Shortcuts tab and select App Shortcuts from the sidebar. Use the \"+\" button to add a new one. You can select \"All Applications\" for universal shortcuts, or a specific app (in this case Finder). Type the title of any menu item&mdash;exactly, including upper and lower case&mdash;and assign a shortcut. That&rsquo;s it. Show Package Contents I use ⌃⌘P for this. When a bundle file (e.g. application or document bundle) is selected, pressing the combination will open it as a folder in Finder, the same as ⌘↓ does when a folder is selected. Tags… Note that an ellipsis is not three periods, it&rsquo;s a single character created by ⌥; (Option-Semicolon). With this one defined, pressing the key combo will pop up a dialog on any selected file(s) that I can use to tag quickly in Finder. Compress I had assumed for a long time that&mdash;because Finder changed the menu item title to \"Compress filename\" in the contextual menu&mdash;you couldn&rsquo;t easily assign a shortcut to it. I mentioned on Mac Power Users that I&rsquo;d used BetterTouchTool to solve the issue. While the BTT trick is very cool, it turns out (thanks @macfixer) that you can just use \"Compress\" as the menu item title and the shortcut will work. Sorting and Display shortcuts There are default shortcuts for sorting (Name, Modified date, etc.) and display grouping, but I&rsquo;ve always found them obtuse. I assign these to standard Function keys, e.g. F1-F3 handle quickly sorting by Name, Date, or Size on my system",
		"keywords": ["finder","keyboard","shortcut","applications","bettertouchtool","compress","contents","display","finder","function","keyboard","modified","package","preferences","semicolon","services","shortcuts","sorting","system","users","while","assign","assigned","assumed","basic","because","brettterpstra","bundle","button","capability","changed","character","choose","class","combination","combo","commandfinder","contextual","couldn","created","customize","default","defined","dialog","display","document","easily","ellipsis","enhance","example","extended","features","filename","folder","found","functionality","functions","grouping","handle","height","https","image","inclined","including","items","keyboard","ldquo","loading","lower","macfixer","mdash","media","mention","mentioned","navigate","nicely","noscript","noshadow","obtuse","original","periods","picture","pressing","primarily","quickly","rdquo","rsquo","selected","shortcut","shortcuts","sidebar","single","solve","sorting","source","specific","speed","srcset","standard","status","sysprefsshortcuts","system","thanks","title","trick","turns","twitter","universal","uploads","upper","useful","width","workflow"]
	},{
		"title": "Shell Tricks: convert file urls to UNIX paths",
		"url": "/2015/11/16/shell-tricks-convert-file-urls-to-unix-paths/",
		"tags": ["terminal"],
		"date": "Nov 16<span>th</span>, 2015",
		"ts": "1447700160",
		"summary": "Today&rsquo;s shell trick is for converting urls into valid shell paths. This isn&rsquo;t a terribly common scenario, but I occasionally work with tools, especially in GUI applications, that output file urls and need to change something like: These are Bash-specific, due mostly to some variable mangling syntax, but could easily be converted for zsh and others. I&rsquo;ve broken functions for unescaping percent-encoded input, shell escaping regular text, and trimming full paths to tilde abbreviations (when needed) into separate utility functions because they&rsquo;re reusable and useful in other functions and aliases. I handle shell escaping with the default Ruby Shellwords module. It&rsquo;s fast and covers edge cases, avoiding a lot of sed/awk work. There are modules in other scripting languages as well, but Ruby and the Shellwords module are standard on all OS X systems (and what I know best). Substitute based on your personal preference. Lastly, a quick utility using to replace full paths in home directory with a tilde (~), e.g. becomes . It&rsquo;s more readable and allows more portability as the tilde will expand to whatever the current user&rsquo;s home folder is. Note: When input is recieved from STDIN instead of arguments, it automatically calls the shell escape function to avoid losing existing escaping through the read command. Thus a call to in other functions is redundant (though not fatal). Lastly, here&rsquo;s the function that combines the previous utility functions to convert a url to a shell-escaped path. If you pass as the first argument (or only argument if you want to use piped input from STDIN), results are copied to the clipboard (using , which is OS X-only). The bulk of the function is a simple piped chain of the above functions, with a quick variable mangling in Bash to remove the prefix. With that code sourced in your ~/.bash_profile, you can use commands such as or to get the filepath, either directly or as part of another script. The command (usable as an alias) will convert a url in the clipboard into a file path, in place, ready for pasting",
		"keywords": ["locator","resource","lastly","stdin","shellwords","substitute","today","abbreviations","above","alias","aliases","allows","another","applications","argument","arguments","automatically","avoid","avoiding","based","because","becomes","broken","calls","chain","change","class","clipboard","combines","command","commands","common","convert","converted","converting","copied","covers","default","directly","directory","easily","either","encoded","entities","escape","escaped","escaping","especially","expand","fatal","filepath","first","folder","function","functions","handle","input","languages","losing","mangling","methods","module","modules","mostly","natural","needed","occasionally","others","output","pasting","paths","percent","personal","piped","portability","preference","prefix","profile","quick","readable","ready","recieved","redundant","regular","remove","replace","results","reusable","rsquo","scenario","script","scripting","separate","shell","simple","sourced","specific","standard","syntax","systems","terribly","through","tilde","tools","trick","trimming","unescape","unescaping","usable","useful","using","utility","valid","variable","whatever","working"]
	},{
		"title": "A fix for slippery iPhones",
		"url": "/2015/11/13/a-fix-for-slippery-iphones/",
		"tags": ["hardware","iphone"],
		"date": "Nov 13<span>th</span>, 2015",
		"ts": "1447423200",
		"summary": "It was on Systematic #133 with Rich Stevens where I was first introduced to Suction Cup Tape. I ordered a sheet before the podcast recording had ended. It was my own \"pick of the week\" soon after. It&rsquo;s a tape with traditional adhesive on one side, and a \"micro suction cup\" layer on the other side. You stick the former side to something such as your iPhone, where it affixes permanently (though the residue is easy to remove), and then that object can adhere to any flat surface, be easily removed, and re-adhered again (and again). When it stops sticking, just wipe it off with a bit of soap and water and it&rsquo;s good to go. I fell in love with the stuff, especially with my slippery iPhone 6+. Even when not fully adhered to something, it provided a non-slip surface that prevented dropping my phone or having it slide off of my dashboard, car seat, or a table jostled by a furry family member. The problem was that it&rsquo;s expensive to produce, and thus even more expensive to purchase and use. An 8.5x11\" sheet runs around $15. Granted, the first sheet I bought has lasted almost a year across three devices, but it does eventually begin to wear out. I&rsquo;d assumed that prohibitive costs would prevent it from ever being mass-marketed, but LizzyTape proved me wrong. The LizzyTape Cellphone Sticker Mount is available on Amazon for $5.99. It&rsquo;s a smaller patch of suction cup tape, and the price comes out about the same per square inch, but you can buy it as a ready-to-use version at a lower price than buying full sheets. Assuming it lasts as long as the similar material I&rsquo;m used to, one sticker on the back of a phone should be good for at least a year. I received a couple of them that I&rsquo;d ordered this week, and it&rsquo;s just as good as the tape I&rsquo;d been cutting previously. I can stick my phone to the bathroom mirror while brushing my teeth, my dashboard (or the empty carseat next to me because no one ever rides in my car&mdash;except for Emma, occasionally) while I&rsquo;m driving, or just let it rest on my palm while walking for slip-free usage without a rubberized case or any actual adhesive. I&rsquo;d always cut my strips to full width of the device, and it was the edges that first started wearing out and peeling. The smaller format of the LizzyTape version makes sense, and will probably prove to be a better solution than my previous efforts. I don&rsquo;t generally review $6 products I found randomly on Amazon&hellip;",
		"keywords": ["device","mobile","phone","sticky","suction","amazon","assuming","cellphone","disclaimer","granted","lizzytape","minimalmac","mount","pqclug","stevens","sticker","suction","systematic","across","adhere","adhered","adhesive","affixes","again","almost","anymore","askew","assumed","available","backlink","bathroom","because","before","begin","bought","brettterpstra","brushing","buying","can&#39;t","carseat","checking","child","children","class","comes","couple","cutting","dashboard","device","devices","driving","dropping","easily","edges","efforts","emmasophiaterpstra","empty","ended","endnotes","especially","eventually","except","excited","expensive","facebook","family","figcaption","figure","first","fnref","footnote","footnotes","format","former","found","fully","furry","generally","having","height","https","iphone","image","introduced","inventables","jostled","lasted","lasts","layer","ldquo","loading","lower","makes","marketed","mdash","media","member","micro","mirror","noscript","noteref","object","occasionally","ordered","original","patch","peeling","permanently","phone","photos","picture","podcast","prevent","prevented","previously","price","problem","produce","products","prohibitive","prove","proved","randomly","rdquo","ready","received","recommend","recording","remove","removed","residue","reversefootnote","rides","rsquo","rstevens","rubberized","sense","sheet","sheets","shirt","similar","slide","slippery","small","smaller","solution","source","square","srcset","started","stick","sticker","sticking","sticky","stops","strips","stuff","suction","surface","systematic","table","tablet","technologies","teeth","theater","title","traditional","twitter","uploads","usage","version","walking","water","wearing","where","while","width","wished","wrong"]
	},{
		"title": "Curio 10 and Curiota",
		"url": "/2015/11/12/curio-10-and-curiota/",
		"tags": ["brainstorming","macos","productivity"],
		"date": "Nov 12<span>th</span>, 2015",
		"ts": "1447360560",
		"summary": "I consider Curio to be the most expansive brainstorming application on the market. With mind maps, lists, file links, notes, full project organization tools, and much more, it&rsquo;s a complete productivity app. Version 10 just came out, along with a menu bar app for quick entry, and it continues to extend the capabilities of this powerhouse application. I wrote a longer piece about Curio years ago for TUAW (now archived at Engadget), so if you&rsquo;d like a foundation explanation of Curio, check that out. I also covered the release of version 9 on this blog, so I&rsquo;ll go ahead and jump to the changes in version 10. \"Refinements\" would be an understatement for many of the new features. While not adding complexity, Curio has added several features that better accommodate large collections of information. The most useful of these for me is the new \"Stacks\" feature. Whereas previously you would be best off organizing your notes and information on a flat surface, stacks allow you to collect notes into piles and easily navigate, arrange, and sort the information. Mind maps in Curio can now have automatically-sorted branches, as can list collections. Importing from iMindMap and MindNode is also improved. I&rsquo;ve always found importing brainstorming sessions into Curio to be a delight&mdash;just drag and drop most file types or paste OPML, Markdown, text, and more, and have them converted to native formats in Curio&mdash;and these further enhancements only improve the seamless integration with my other tools. The Library in Curio has always been an integral piece of its functionality, allowing shared and reusable resources, integration with Evernote, and additional project management capabilities. The new \"Local\" library shelf&mdash;with custom watch folders, fast searches and integration with Curiota (see below)&mdash;harnesses Spotlight to make working with information stored anywhere on your system an easy task. The menu bar companion, Curiota, is a very handy addition. It lets you add notes on the fly from any app, but also lets you drag files and integrates with System Services, the OS X share button, and PDF services. It&rsquo;s an omnipresent way to gather resources and notes for use within Curio. I&rsquo;m planning to write a bit more about the release for MacStories, but in the meantime you can check out the descriptions of all the new features on the Zengobi website. Curio 10 is available for $129.99 (educational discounts&hellip;",
		"keywords": ["activity","diagram","google","store","curio","curiota","engadget","evernote","importing","library","local","macstories","markdown","mindnode","refinements","services","spotlight","stacks","system","version","while","zengobi","accommodate","added","adding","ahead","allow","allowing","anywhere","archived","arrange","automatically","available","below","brainstorming","branches","button","capabilities","changes","check","collect","collections","companion","complexity","consider","continues","converted","covered","custom","delight","descriptions","discounts","easily","educational","enhancements","entry","expansive","explanation","extend","feature","features","files","folders","formats","found","foundation","functionality","gather","handy","harnesses","imindmap","importing","improve","improved","information","integral","integrates","integration","library","links","lists","longer","management","market","mdash","meantime","native","navigate","notes","omnipresent","organization","organizing","paste","piece","piles","planning","powerhouse","previously","productivity","project","quick","release","resources","reusable","rsquo","seamless","searches","services","sessions","several","share","shared","shelf","sorted","stacks","stored","surface","system","tools","trial","types","understatement","upgrade","useful","users","version","watch","website","within","working","write","wrote","years"]
	},{
		"title": "TextExpander",
		"url": "/2015/11/12/textexpander/",
		"tags": ["macos","snippet","sponsor","textexpander"],
		"date": "Nov 12<span>th</span>, 2015",
		"ts": "1447329600",
		"summary": "Thanks to Smile and TextExpander for sponsoring BrettTerpstra.com this week! As you probably know by now, this is one of my all time favorite Mac utilities, and I can&rsquo;t imagine working on Mac and iOS without it. TextExpander improves your efficiency, consistency, and communication. TextExpander allows you to create snippets of text (formatted or plain) and images that you can expand in any app on your Mac or iOS device. You can condense repetitive email replies, signatures, and anything else you type more than once into a few keystrokes. Increase consistency by creating snippets for common email responses. Make a snippet for your meeting notes template so that nothing gets left out. Use a snippet when requesting a reference to improve your hiring process. On your Mac, TextExpander can keep track of things you type repeatedly, and suggest creating snippets for them. It makes the process almost automatic. It even tracks how much time you save by not typing the same thing over and over again, and you&rsquo;ll be amazed by the numbers after just a short period of time. You can also customize stock replies by adding fill-in fields and popups to provide a human touch. This allows you to create standard snippets but include variable sections that you can edit after you trigger the snippet, but before TextExpander inserts the text. Use your snippets on your iPhone and iPad with TextExpander touch and the TextExpander custom keyboard. Sync your snippets using Dropbox or iCloud. Visit smilesoftware.com/brett to download a free demo of TextExpander and improve your communication today",
		"keywords": ["dropbox","icloud","iphone","smile","store","textexpander","touch","brettterpstra","dropbox","increase","smile","textexpander","thanks","visit","adding","again","allows","almost","amazed","automatic","before","brett","common","communication","condense","consistency","create","creating","custom","customize","device","download","efficiency","email","expand","favorite","fields","formatted","hiring","human","icloud","iphone","images","imagine","improve","improves","inserts","keyboard","keystrokes","makes","meeting","notes","nothing","numbers","popups","process","repeatedly","repetitive","replies","requesting","responses","rsquo","sections","short","signatures","smilesoftware","snippet","snippets","sponsoring","standard","stock","suggest","template","today","touch","track","tracks","trigger","typing","using","utilities","variable","working"]
	},{
		"title": "A personal podcast feed for your audiobooks",
		"url": "/2015/11/10/a-personal-podcast-feed-for-your-audiobooks/",
		"tags": ["audiobook","podcast"],
		"date": "Nov 10<span>th</span>, 2015",
		"ts": "1447185600",
		"summary": "I have a guest post from Andreas Zeitler for you today. Andreas is one of the hosts of the German podcast Der Übercast, and I&rsquo;m happy to share this handy trick for liberating your audiobooks. Podcasts are becoming an increasingly popular format on the Internet. One of my personal favorites is Brett&rsquo;s Systematic (and, of course, Overtired with Christina Warren). While I like podcasts, I also listen to audiobooks. Audiobook platforms, such as Audible, distribute a relatively historic audio format. Audible calls it AAX or AAX+, indicating it&rsquo;s an AAC format. Ever since AAC has become the norm on the iTunes Store, the format has seen vast improvements, but audiobook haven&rsquo;t. What if I told you that an audiobook could take up about 1/10 of its current space on your phone? That means instead of using 400MB, a more modern format would use 60MB. That&rsquo;s just one advantage though. Compared to podcast players, the audiobook apps have not seen many improvements in terms of player capabilities. Overcast for example has an intelligent way to cut out unnecessary pauses which reduces listening time significantly, without changing the overall speed. This means that if your audiobook seller would allow you to use a modern player, you could not only save time, but you&rsquo;d also be free to choose which format you like best. As a podcaster and media professional myself, I had an epiphany one day. Why not make my own audiobook podcast? Bonus Tip: To be honest, this whole approach was inspired by Librivox. They offer an iTunes and RSS feed option for their (free) audiobooks. That&rsquo;s quite cool if you want to listen to, say, The Tao Teh Ching. The first thing we have to take care of is converting the audiobooks into a new format. I won&rsquo;t offer any specific recommendations here, but there are several apps that allow you to record audiobooks while they are played, and then convert them (see Audio Hijack and AudioBook Converter). They&rsquo;re inexpensive and available for many platforms &ndash; even iTunes itself is able to play Audible books back. Once they are recorded, you can convert them into a new format (if your recorder app does not directly record into the desired format). As the time of this writing I personally prefer MPEG-4 Audio High-Efficiency or even HE AAC v2 (High-Efficiency v2). The file sizes this format produces are really small, with a higher quality at lower rates than older formats. If your podcast&hellip;",
		"keywords": ["listening","podcasting","ubercast","academy","advanced","amadeus","andreas","audible","audio","audiobook","audiobook","bischoff","bonus","brett","brettterpstra","ching","christina","coding","compared","converter","converting","creation","dircaster","downcast","drive","dropbox","efficiency","enterprise","feeder","files","gerber","german","google","hairersoft","hairersoft","harris","hijack","hints","hosting","internet","justcast","librivox","librivox","liquid","marcel","michael","overcast","overtired","podcast","podcasts","screaming","search","steve","store","systematic","tiger","warren","while","wikipedia","within","wordpress","zeitler","zeitler","academy","advantage","allow","allows","amount","andreas","apple","apply","approach","architecture","audio","audiobook","audiobooks","audiohijack","audiorss","automatically","available","batch","because","becoming","bercast","blockquote","books","brettterpstra","brings","bunch","business","called","calls","capabilities","changing","check","checkout","choose","class","comes","coming","common","compressor","content","conversion","convert","converter","converting","create","created","creation","cutting","derubercast","desired","developer","developers","device","different","dircaster","direct","directly","discount","distribute","doesn","drive","editor","encyclopedia","epiphany","example","experience","family","favorites","feeder","feeds","files","first","folder","format","formats","friends","front","github","giving","google","graphical","guest","hairersoft","handles","handy","happy","haven","having","height","hellip","herrbischoff","higher","highlighter","historic","honest","hosts","https","itunes","image","improvements","increasingly","indicating","inexpensive","information","inspired","intelligent","interface","internet","issues","itself","itunes","labnol","language","liberating","librivox","liquid","listen","listening","loading","lower","maintaining","management","media","method","microphone","modern","music","myself","ndash","nerdy","normal","noscript","offer","older","ondesoft","original","overall","overtired","pauses","personal"]
	},{
		"title": "Web Excursions for November 06, 2015",
		"url": "/2015/11/06/web-excursions-for-november-06-2015/",
		"tags": ["bookmarks"],
		"date": "Nov 6<span>th</span>, 2015",
		"ts": "1446840000",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Because I&rsquo;m a bit behind, I&rsquo;m posting a larger collection than usual this week. I doubt I&rsquo;ll hear any complaints, so I&rsquo;m not sure this paragraph is necessary. Thank you for reading it anyway, I owe you 15 seconds of your life back. SketchParty TV for the new Apple TV: The Story so Far SketchParty TV is my favorite party app. My friends love it, my family loves it, and it&rsquo;s basically awesome for any gathering that includes an Apple TV. It can run off an iPad to a previous-gen Apple TV, but it&rsquo;s now available natively for the new Apple TV. This post from the developer (Matt Braun) offers intriguing details about the development and marketing process that will be of interest to both developers and users. VOX 1.1.1 imports YouTube tracks One of my favorite music apps (on Mac and iOS) just updated its iPhone app with the ability to stream YouTube tracks to the VOX music library. Exporter for Notes.app There&rsquo;s been a lot of interest in the latest version of the Notes app from Apple. While it offers an excellent, ubiquitous tool for note taking, there are concerns about portability (at least within my little circle where that&rsquo;s long been a topic of discussion). This little app bridges Notes with plain text, offering a little peace of mind for forward-thinking plain text lovers. Company Logo API Clearbit has released an API for grabbing company logos from URLs. It provides a great tool for bloggers who need a quick image for a company without digging through a web inspector to lift a logo from a company website. In combination with iTunesIcon, SearchLink, and URL Preview, it&rsquo;s like we don&rsquo;t even need to blog anymore. Let&rsquo;s Encrypt A free, automated, and open certificate authority from the Internet Security Research Group (ISRG). SSL encryption for everyone, with a CLI that can automatically configure a web server. mbogh/NibDesignable For Cocoa developers, NibDesignable offers an elegant way of enabling IBDesignable on nib-based views. Via Caylan Larson. Orzly USB 2.0 Type C (USB-C) to Type A (USB-A) If you&rsquo;re looking for a USB-C cable to connect your Apple TV to your Mac for development, this one is inexpensive ($8.99 right now) and Michael Redig (author of Doku for iOS and Apple TV) has confirmed it works. Productive Writer&rsquo;s Bundle Just in&hellip;",
		"keywords": ["apple","cocoa","serial","universal","apple","because","braun","bundle","caylan","cleanmymac","clearbit","cocoa","company","encrypt","exporter","group","ibdesignable","internet","larson","marked","michael","nanowrimo","nibdesignable","notes","orzly","preview","productive","redig","research","searchlink","security","sketchparty","story","texts","thank","while","wordcounter","writer","youtube","ability","announcement","anymore","anyway","author","automated","automatically","available","awesome","based","because","behind","bloggers","bridges","brought","cable","certificate","check","circle","collection","combination","company","complaints","concerns","configure","confirmed","connect","details","developer","developers","development","digging","discount","discussion","doubt","elegant","enabling","encryption","everyone","excellent","excursions","family","favorite","friends","gathering","getting","grabbing","great","iphone","ithoughtsx","itunesicon","image","imports","includes","including","inexpensive","inspector","interest","intriguing","larger","latest","library","little","logos","looking","lovers","loves","marketing","mbogh","missed","music","natively","necessary","offering","offers","paragraph","partnership","party","peace","portability","posting","process","provides","quick","reading","released","right","rsquo","seconds","server","speed","steep","stream","taking","thinking","through","tools","topic","tracks","ubiquitous","updated","users","version","views","website","where","within","works"]
	},{
		"title": "NaNoWriMo: The Productive Writer's Bundle",
		"url": "/2015/11/06/nanowrimo-the-productive-writers-bundle/",
		"tags": ["marked","writing"],
		"date": "Nov 6<span>th</span>, 2015",
		"ts": "1446825660",
		"summary": "I&rsquo;ve teamed up with Christian Tietze, maker of the excellent WordCounter app, Toketa software (iThoughtsX), and the team from Texts to create a special bundle for this year&rsquo;s NaNoWriMo. Including Marked 2, it&rsquo;s a full package for creative writing at a 50% discount. Texts, a minimal text editor that can render Markdown text inline, so you see your markup the way it&rsquo;s going to output, instead of with the Markdown syntax (also includes ePub export) WordCounter, which tracks your writing progress and stats across any applications you write in Marked 2, for previewing your work live using any theme, and exporting a variety of formats A 30% off coupon for iThoughtsX, which combines with Marked to provide a mind-map-based means of brainstorming and structuring your writing project, and can export to Markdown and OPML (among other formats) so you can continue editing in any text editor (and it works with Marked 2) A copy of Christian Tietze&rsquo;s guide to Minimal Writing on the Mac, detailing ways to use simple apps to create complete novels and other writing projects All together, it&rsquo;s worth over $60, and we&rsquo;re offering the full bundle for $24.99. It&rsquo;s a steal, and the software and tools will be useful far beyond NaNoWriMo. Check out the bundle and purchase at writersbundle.com",
		"keywords": ["editor","nanowrimo","software","check","christian","including","markdown","marked","minimal","nanowrimo","texts","tietze","toketa","wordcounter","writing","across","among","applications","based","beyond","brainstorming","bundle","combines","continue","coupon","create","creative","detailing","discount","editing","editor","excellent","export","exporting","formats","going","guide","ithoughtsx","includes","inline","maker","markup","minimal","novels","offering","output","package","previewing","project","projects","rsquo","simple","software","special","stats","steal","structuring","syntax","teamed","theme","together","tools","tracks","useful","using","variety","works","worth","write","writersbundle","writing"]
	},{
		"title": "Fetching: Upgrade your browser history",
		"url": "/2015/11/05/fetching-sponsor/",
		"tags": ["sponsor"],
		"date": "Nov 5<span>th</span>, 2015",
		"ts": "1446724800",
		"summary": "Thanks to Fetching for sponsoring BrettTerpstra.com this week! I&rsquo;ve been a Fetching user for almost a year now, and I can vouch that&mdash;even if you think you have a great memory&mdash;it will save your butt regularly. Fetching is a major upgrade to your browser history. It automatically (and securely) saves the full text of every web page you visit, then provides advanced search features that allow you to recall any web page you&rsquo;ve seen without having to decide what to bookmark. Fetching&rsquo;s state-of-the-art search means you can find any post or article you&rsquo;ve seen, even if it was months (or years) ago and you only remember a few keywords. Everything you browse is automatically saved and indexed, and intelligent, full-text search keeps a massive amount of information a few keystrokes away. You can also use tags to group and identify related information, turn stored pages into traditional bookmarks, and even add notes to web pages for future reference. Fetching is available as a cloud-based service or a native OS X app, and both provide integration with Chrome, Safari, and Firefox. However you browse the web, stop bookmarking and just browse, search, and find. You can try Fetching for free for 30 days, and for BrettTerpstra.com readers, the coupon code will save you 30% on a purchase",
		"keywords": ["bookmark","fetching","search","brettterpstra","chrome","everything","fetching","firefox","however","safari","thanks","advanced","allow","almost","amount","article","automatically","available","based","bookmark","bookmarking","bookmarks","browse","browser","cloud","coupon","decide","features","great","group","having","history","identify","indexed","information","integration","intelligent","keeps","keystrokes","keywords","major","massive","mdash","memory","native","notes","pages","provides","readers","recall","regularly","related","remember","rsquo","saved","saves","search","securely","service","sponsoring","stored","think","traditional","upgrade","visit","vouch","years"]
	},{
		"title": "Recap: October",
		"url": "/2015/11/04/recap-october/",
		"tags": ["recap"],
		"date": "Nov 4<span>th</span>, 2015",
		"ts": "1446686640",
		"summary": "In Minnesota (where I live), the word \"interesting\" is generally used as a passive-aggressive way of saying \"I&rsquo;m not sure how I feel about that.\" In my personal life, October was interesting. I did manage to publish a few things of note, nonetheless&hellip; First, a big thanks to my October sponsors, Bushel, PDFpen 7, and Billings Pro. I got tired of @ø$#ing censoring myself manually, so I made a TextExpander snippet for swearing politely. It works on iOS, so if you&rsquo;re tired of typing out random punctuation characters to express yourself on Facebook without upsetting your mom, check it out. I also managed to get Marked 2.5 out. This was a big update with new features and fixes, including the expansion of Marked&rsquo;s proofreading capabilities to include multilingual spellcheck and grammar suggestions. I also shared some advice on how to write a support request, based on my own experiences in working with customers. Suggested reading for anyone who uses software, which I assume you&rsquo;re doing at this very moment. I got my Magic Keyboard, and shared some opinions. Granted, I&rsquo;m an edge case in many senses, but this may be of interest if you&rsquo;re looking at getting one yourself. Rounding out the month, an updated script for vacuuming Mail.app on El Capitan to improve performance and search speed on large email databases (does anyone not have a large database at this point?). Thanks as always for reading, and look forward to more fun soon. I&rsquo;m hoping to launch my newsletter this month, I have some great guests lined up for Systematic, and I promise Christina and I will get back on schedule with Overtired",
		"keywords": ["brett","brettterpstra","capitan","terpstra","billings","bushel","capitan","christina","facebook","first","granted","keyboard","magic","marked","minnesota","overtired","pdfpen","rounding","suggested","systematic","textexpander","thanks","advice","aggressive","anyone","apple","assume","based","billings","brettterpstra","bushel","business","capabilities","capitan","censoring","characters","check","class","customers","database","databases","devices","doing","editor","email","expansion","experiences","express","features","fixes","generally","getting","grammar","great","guests","height","hellip","hoping","https","image","images","improve","including","interest","interesting","launch","ldquo","lined","loading","looking","magic","managed","managing","manually","marked","media","mistake","multilingual","myself","nerds","newsletter","nonetheless","noscript","official","opinions","original","overtired","passive","pdfpen","performance","personal","picture","point","politely","promise","proofreading","publish","punctuation","random","rdquo","reading","recap","rsquo","saying","schedule","script","search","senses","shared","simpler","small","snippet","software","source","speed","spellcheck","sponsors","srcset","suggestions","support","swearing","systematic","textexpander","thanks","tired","title","typing","ultimate","updated","upsetting","vacuuming","where","width","working","works","write"]
	},{
		"title": "Grow your small business with Billings Pro",
		"url": "/2015/10/29/grow-your-small-business-with-billings-pro/",
		"tags": ["sponsor"],
		"date": "Oct 29<span>th</span>, 2015",
		"ts": "1446141420",
		"summary": "Thanks to Marketcircle and Billings Pro for sponsoring BrettTerpstra.com this week! I&rsquo;ve been using Billings and Billings Pro for all of my freelance time tracking and invoicing for years, and am happy to have Marketcircle&rsquo;s support! Marketcircle is a Mac-based software company in Toronto that helps small businesses grow with amazing Mac, iPhone, Apple Watch, and iPad apps. Marketcircle’s award-winning app, Billings Pro can help you save time, stay organized, and work happier. Billings Pro is a time-tracking and invoicing app that helps freelancers, teams and small businesses create beautiful and professional invoices. With less time managing invoices, you have more time to focus on clients and do the work you love. New to Billings Pro is support for Apple&rsquo;s latest iOS feature, multitasking for iPad. This feature lets you work with two different apps in a split-screen view. What better time to use Billings Pro side by side with another app than when you&rsquo;re doing research for a client, tracking time for a project, or looking up notes for the invoice your creating. If you have an Apple Watch, running timers to automatically add to invoices is convenient from everywhere you go",
		"keywords": ["billigs","invoicing","iphone","marketcircle","store","apple","billings","brettterpstra","marketcircle","thanks","toronto","watch","amazing","another","automatically","award","based","beautiful","billingspro","brettterpstra","businesses","campaign","class","client","clients","company","convenient","create","creating","different","doing","everywhere","feature","focus","freelance","freelancers","grown","happier","happy","height","helps","https","iphone","image","invoice","invoices","invoicing","latest","learn","loading","looking","managing","marketcircle","media","medium","multitask","multitasking","nofollow","noscript","notes","organized","original","picture","professional","project","research","rsquo","running","screen","small","software","source","split","sponsoring","srcset","stories","support","teams","terpstra","timer","timers","title","tracking","uploads","using","website","width","winning","years"]
	},{
		"title": "Vacuuming Mail.app on El Capitan",
		"url": "/2015/10/27/vacuuming-mail-dot-app-on-el-capitan/",
		"tags": ["macos"],
		"date": "Oct 27<span>th</span>, 2015",
		"ts": "1445956800",
		"summary": "I&rsquo;m not using Mail.app on OS X these days (opted for MailMate), but I received an email from Mathias Törnblom updating the database vacuuming trick I&rsquo;d posted previously. It makes the script work for Mail on El Capitan, and maintains backward compatibility. The code below will quit Mail, vacuum the SQLite index, then re-open Mail. On a large email database that hasn&rsquo;t been optimized for a while, this can provide significant improvements in responsiveness and speed. To use the script, copy and paste it into a new document in Script Editor (make sure the language is set to AppleScript), and save it as a Script (scpt) file. Then you can run it via a launcher (LaunchBar, Alfred, etc.) or via the Scripts menu",
		"keywords": ["capitan","alfred","applescript","brett","capitan","container","containers","editor","enjoy","envelope","index","launchbar","library","mailmate","maildata","mathias","originally","romulo","sqlite","script","scripts","sierra","speed","terpstra","updated","activate","apple","applescript","automate","backward","backwards","before","below","brettterpstra","class","compability","compatibility","considering","database","dialog","display","document","email","envelope","figcaption","figure","folder","freron","github","githubusercontent","hawkwings","highlight","https","improvements","index","language","launcher","lbutlr","mailapp","maintains","makes","mathiastornblom","modifications","numeric","opted","optimized","paste","pmbuko","posted","previously","print","productversion","received","responsiveness","return","rnblom","rsquo","script","scripts","shell","significant","sizeafter","sizebefore","speed","speedmail","sqlite","strings","support","trick","ttscoff","twitter","updating","using","vacuum","vacuuming","version","while","wonders","works"]
	},{
		"title": "LaunchBar and Trickster",
		"url": "/2015/10/26/launchbar-and-trickster/",
		"tags": ["productivity","spotlight"],
		"date": "Oct 26<span>th</span>, 2015",
		"ts": "1445887260",
		"summary": "Apparent Software just released a LaunchBar action for Trickster (along with a Trickster update) that allows for perfect integration of Trickster&rsquo;s file tracking and filtering capabilities with my favorite launcher app. I first mentioned Trickster&mdash;an app that tracks and filters recently-opened files&mdash;a couple of years ago, and it&rsquo;s continued to evolve since. Trickster 2.1 added quite a few features for automation, and the latest version (2.3.4) integrates with LaunchBar 6&rsquo;s latest features to take advantage of them, so this is a great combo. The Action lets you list, filter, and act on Trickster&rsquo;s tracked files from LaunchBar, as well as send a file from LaunchBar to Trickster. It&rsquo;s kind of a footnote on the announcement post, but the Instant Send integration is an excellent feature. Since Trickster is fully keyboard-navigable, you can select any file and then tap your LaunchBar Instant Send shortcut to perform any action that LaunchBar has available. Check out the Action on the Apparent Blog. If you&rsquo;re an Alfred user, there&rsquo;s an Alfred Workflow for you, too",
		"keywords": ["automation","automator","launchbar","software","trickster","action","alfred","check","instant","launchbar","since","software","trickster","workflow","action","added","advantage","allows","announcement","automation","available","capabilities","combo","continued","couple","evolve","excellent","favorite","feature","features","files","filter","filtering","filters","first","footnote","fully","great","integrates","integration","keyboard","latest","launcher","mdash","mentioned","navigable","opened","recently","released","rsquo","shortcut","since","tracked","tracking","tracks","version","years"]
	},{
		"title": "Friday Freebie: Modern Resume Design Kit",
		"url": "/2015/10/23/friday-freebie-modern-resume-design-kit/",
		"tags": ["design","freebie","giveaway"],
		"date": "Oct 23<span>rd</span>, 2015",
		"ts": "1445614920",
		"summary": "It&rsquo;s been another slow week for posting, for which I apologize. I do have something cool, though: A customizable template for a modern resume from Vandelay Design. The archive below contains 2 Adobe Illustrator (.ai) files that you can use to build your own sharp-looking resume, one light on dark, and one dark on light. You can find more resources in their shop, too",
		"keywords": ["adobe","illustrator","resource","resume","adobe","check","design","download","illustrator","vandelay","another","apologize","archive","below","build","contains","customizable","design","files","freebie","great","light","looking","modern","posting","resources","resume","rsquo","sharp","template"]
	},{
		"title": "A magic mistake",
		"url": "/2015/10/19/a-magic-mistake/",
		"tags": ["hardware"],
		"date": "Oct 19<span>th</span>, 2015",
		"ts": "1445276340",
		"summary": "I&rsquo;m a fan of Apple hardware. Apple does an immaculate job of creating physical objects that are aesthetically stunning and a pleasure to use. For the most part, no competitor comes close; the rest of the industry can only copy. I&rsquo;m also a fan of HIDs (Human Input Devices), whether it&rsquo;s a LEAP Motion, a good trackball, or my array of keyboards and trackpads. I guess it&rsquo;s kind of a fetish. When I saw that Apple was releasing a new version of my all time favorite keyboard, I jumped to order. My favorite keyboard is the Aluminum Bluetooth Keyboard from Apple. The one that comes with most desktop Macs, and the one you probably have somewhere around the house. I own hundreds of dollars worth of keyboards, and it&rsquo;s the one I&rsquo;ve always come back to. It&rsquo;s partly because it matches the layout of my MacBook Pro and my Air, and muscle memory is vital given the number of keyboard customizations I&rsquo;m prone to. It&rsquo;s also a pleasure to type on, and I&rsquo;ve always come back to it as my primary work keyboard. Despite my admiration for Apple Hardware, I&rsquo;m also willing to acknowledge design flaws when they happen. I&rsquo;m not quick to jump on them, as I&rsquo;ve found the things that people complain most loudly about after a new release are the same things they complain about changing later. I&rsquo;m happy to give it an adjustment period. However, this new Magic Keyboard is killing me. I don&rsquo;t own one of the new MacBooks yet, but this appears to be the same keyboard. I&rsquo;m unsure how everyone else is finding it so usable. The key profile is so low that my fingers have no reference when sensing edges of keys. The response has an odd lag anytime the CPU is pegged, which I do not understand at all. The setup process is very cool (plug in a lightning cable and it pairs instantly), but my first impressions using it have been bad and going downhill. I&rsquo;ll be able to get used to the key profile, eventually, but there&rsquo;s one thing that&rsquo;s absolutely killing me: the configuration of the arrow key cluster. The seemingly small change in the size of the left and right arrow keys to full height has made it nearly impossible for me to use. When my right hand travels to the arrow cluster, my index finger feels for the top of the left arrow key, and my middle finger assumes that the down arrow is to the right of it, and the up arrow is above it. This is the way every keyboard I&rsquo;ve&hellip;",
		"keywords": ["apple","arrow","keyboard","magic","aluminum","apple","arrow","bettertouchtool","bluetooth","devices","emacs","hardware","however","human","input","karabiner","keyboard","launchbar","macbook","macbooks","magic","motion","shift","trackpad","above","admiration","aesthetically","almost","amount","anytime","appears","array","arrow","assumes","because","between","cable","change","changing","click","close","cluster","combination","comes","competitor","complain","configuration","configured","creating","customizations","decreased","defaulting","design","desktop","develop","dollars","double","downhill","edges","enough","eventually","everyone","exacerbated","favorite","feels","fetish","finding","finger","fingers","first","flaws","focus","found","fumbles","gestures","going","guess","happen","happening","happy","hardware","having","height","hitting","holding","house","hundreds","immaculate","important","impossible","impressions","index","industry","instantly","interferes","issues","jumped","keyboard","keyboards","killing","later","layout","lightning","loudly","matches","memory","middle","mostly","muscle","navigation","nearly","objects","opens","pairs","partly","pegged","people","physical","point","popup","primary","problem","process","profile","prone","quick","refresh","release","releasing","response","ridge","right","rsquo","seemingly","sensing","sensitivity","setup","shift","simultaneously","small","somewhere","standard","stunning","style","takes","think","trackball","trackpads","travels","tried","trigger","turns","understand","unsure","usable","using","version","vital","where","willing","window","worth","wrong"]
	},{
		"title": "Web Excursions for October 16, 2015",
		"url": "/2015/10/16/web-excursions-for-october-16-2015/",
		"tags": ["bookmarks"],
		"date": "Oct 16<span>th</span>, 2015",
		"ts": "1445013780",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. I took this week off. I didn&rsquo;t record a Systematic. I didn&rsquo;t record an Overtired. I didn&rsquo;t write any blog posts. I didn&rsquo;t book any sponsors for the aforementioned reasons. I did do some hiking, some coding, some movie watching, some playing with dogs, and some dealing with yet another change of my meds (more of this, sadly) that resulted in uncharacteristic depression. Urthecast - See the planet. Open the world. Images of Earth captured from the International Space Station, with a very intriguing API. I&rsquo;ve requested access to the developer tools, and am looking forward to something potentially awesome here. sift - a fast and powerful open source alternative to grep \"A fast and powerful open source alternative to grep.\" I&rsquo;m currently (still) a Silver Surfer (ag) fan, but this offers some enticing flexibility. jsoma/tabletop I mentioned Sheetsu recently (which is still a great solution for this. For a more ground-up approach, Tabletop.js makes JSON access to Google Spreadsheets via JavaScript simple. Integrates with Backbone.js, Handlebars, and other frameworks/tools. Computing CSS matrix3d transforms Some advanced tricks with CSS transforms. Between this and Franklin&rsquo;s followup article on diffing images with CSS, I have a new rabbit hole. Pintsize Generate a frontend markup template from Sass variables. By the way, I&rsquo;m planning to offer a special sponsorship of the Web Excursions posts in month-or-longer packages, so if you&rsquo;re an indie/small developer looking for good exposure with frequent repetition at a budget-friendly rate, contact me and we can talk details",
		"keywords": ["angularjs","earth","google","interface","international","javascript","programming","space","station","backbone","between","check","computing","earth","excursions","franklin","google","handlebars","images","integrates","international","javascript","overtired","pintsize","setapp","sheetsu","silver","space","spreadsheets","station","surfer","systematic","tabletop","urthecast","access","advanced","aforementioned","another","approach","article","awesome","brought","budget","captured","change","coding","contact","dealing","depression","details","developer","diffing","enticing","excursions","exposure","flexibility","followup","frameworks","frequent","friendly","frontend","great","ground","hiking","hundreds","images","indie","intriguing","jsoma","links","longer","looking","makes","managed","markup","matrix","mentioned","monthly","movie","offer","offers","packages","partnership","planet","planning","playing","posts","potentially","powerful","rabbit","reasons","recently","record","repetition","resulted","rsquo","sadly","simple","small","solution","source","special","sponsors","sponsorship","subscription","tabletop","template","today","tools","transforms","tricks","uncharacteristic","variables","watching","world","write"]
	},{
		"title": "How to write a support request",
		"url": "/2015/10/09/how-to-write-a-support-request/",
		"tags": ["support"],
		"date": "Oct 9<span>th</span>, 2015",
		"ts": "1444410780",
		"summary": "I publish a lot of software projects, and as a result I deal with a lot of customer support. I pride myself on providing support at a level that users and customers are excited about. Most of the software I produce is free, but I try to provide the most helpful answers I can without draining all of my time. With my commercial software, such as Marked 2 and StretchLink, I strive to provide excellent responses to all queries. There are a few things that help me (and any software developer/company) provide that quickly and pleasantly. These tips aren&rsquo;t your job or responsibility. You&rsquo;re the customer, and you deserve good support. Not following these guidelines should never prevent excellent customer service, but taking them into account when submitting a problem or request will make the experience better for both user and developer. Here&rsquo;s a summary, in case you don&rsquo;t want to read all of the details: Be pleasant&ndash;maybe even kind&ndash;and set a level-headed tone Be descriptive in the subject line Provide as much information up front as you can When possible, post your request publicly so that the response can benefit other users who may have the same issue Those are probably self-explanatory, but allow me to elaborate. If the support forum offers the option, make your request public (unless your problem is terribly embarrassing or needs to contain personal/proprietary information). Not only does this open the possibility of more users helping with debugging or describing the issue, it also leaves a public record of the conversation that other users can reference, making it possible for them to understand and solve an issue without the support department having to spend time repeating the same result. Most software websites have easy-to-find links to support options, including Twitter accounts, forums, and email forms. Personally, email is my least favorite because it involves a lot of repetition and only helps one user at a time. I provide dedicated Twitter accounts for apps like Marked and StretchLink, and I have no problem with questions being posted there. If I can answer with a yes or no, or in less than 140 characters, it&rsquo;s a great medium for easy questions. If the answer is longer or requires additional questions, though, users will be directed to a support site. If you start a support conversation on one platform&mdash;such as Twitter or direct email&mdash;and then move to a new one&hellip;",
		"keywords": ["customer","developer","service","software","twitter","applications","corpse","crash","channels","cheers","closing","cloudapp","codes","collaboration","console","crash","doesn","diagnostic","droplr","especially","exception","express","finding","forums","github","google","however","invalid","launch","money","making","marked","pages","pastebin","pasting","personally","public","ripped","report","reports","spent","signature","stretchlink","submitting","twitter","utilities","while","access","account","accounts","added","adding","admiration","allow","anger","annoying","answer","answers","applicable","asking","assume","attached","attaching","attachment","attack","attempts","automatically","avoid","backlink","because","before","beginning","benefit","block","brettterpstra","cause","chance","changes","channels","characters","choices","class","clear","closing","collate","commercial","company","compliment","configuration","console","contain","context","continuity","continuous","conversation","conversations","crash","crashreports","customer","customers","debugging","dedicated","defensive","defensively","deficient","delightful","department","describing","description","descriptive","deserve","detailing","details","developer","development","dialog","difficult","direct","directed","disappointment","documents","doing","dragged","draining","droplr","easier","easily","either","elaborate","email","emails","embarrassing","endnotes","entire","error","everyone","everything","exact","excellent","exception","excited","experience","experiencing","explanatory","express","favorite","feature","finding","first","fixed","fnref","folks","footnote","footnotes","forms","forth","forum","forums","found","front","frustrating","generated","getcloudapp","getting","github","going","gratitude","great","guess","guidelines","happy","hassle","having","headed","heated","height","hellip","helpful","helping","helps","highlight","highlighter","https","image","includes","including","incorrect","increase","information","informative","interaction","intermittent","involves","issues","keeps","language","ldquo","leaves","level","likelihood","likely","links","listed","loading","longer"]
	},{
		"title": "PDFpen 7: The Ultimate All-Purpose PDF Editor for OS X",
		"url": "/2015/10/08/pdfpen-7-the-ultimate-all-purpose-pdf-editor-for-os-x/",
		"tags": ["sponsor"],
		"date": "Oct 8<span>th</span>, 2015",
		"ts": "1444302000",
		"summary": "Thanks to Smile and PDFpen 7 for sponsoring BrettTerpstra.com this week! PDFpen is the ultimate all-purpose PDF editor, and Smile offers ten amazing tutorials from the talented David Sparks (aka MacSparky). There are also videos covering what&rsquo;s new, what more to explore, and what exclusive features you&rsquo;ll find in PDFpenPro. Watch the videos, and get PDFpen today",
		"keywords": ["annotation","cloud","document","dropbox","format","icloud","iphone","pdfpen","portable","smile","software","storage","annotate","brettterpstra","david","dropbox","macsparky","pdfpen","pdfpenpro","smile","sparks","thanks","touch","watch","amazing","convert","covering","documents","editor","exclusive","explore","features","forms","icloud","iphone","images","learn","minutes","offers","redact","rsquo","scanned","signature","sponsoring","talented","today","tutorials","ultimate","usable","videos"]
	},{
		"title": "Marked 2.5 is official!",
		"url": "/2015/10/07/marked-2-dot-5-is-official/",
		"tags": ["markdown","marked"],
		"date": "Oct 7<span>th</span>, 2015",
		"ts": "1444244940",
		"summary": "Marked 2.5&mdash;a major update to my Markdown preview and writing tools collection&mdash;is now available for direct purchase and from the Mac App Store! It&rsquo;s a free upgrade for all Marked 2 customers, and available at a discounted $11.99 for new customers right now. I teased a few of the new features in August, but there was a lot of testing and polishing to do before release. Here are some of the new features that the update offers. As an in-app purchase for both direct and MAS customers, Marked can now check spelling and grammar, in addition to all of the previous syntax checking, readability, and writing tools. I got frustrated having all of my analysis in Marked while proofreading but still having to pop back to my editor for spellchecking. This update solves it! You can now assign a shortcut to allow you to jump to Marked from anywhere, but my favorite shortcut is the \"Raise first window\" hotkey. This will pop the top window (assumably your most recent) to the foreground without losing focus in your current application. Marked 2 now has official support for MindNode and Xcode Playground files. It also amps up support for Scrivener by recognizing more of its internal syntaxes (comments, page breaks, line breaks, internal links and embedded images). Fountain preview is updated for accuracy, and now supports \"forced\" elements. You can also toggle comment visibility for both Scrivener and Fountain formats. The new help system provides a smarter fuzzy search for topics, a URL scheme for bookmarking and deep linking, and easy bookmarking of topics. It also hooks into the OS X help system in a way that allows you to pop up the Help menu item (⇧⌘/) and search both menu items and help topics (by text and keywords) at once. Override export font sizes, set a custom font for headers and footers (font, size, and color options), add an automatic page break after a Table of Contents, and it even has improved tools for preventing widowed words and orphaned paragraphs in export. Take a look at the full release notes if that&rsquo;s not enough to intrigue. If you&rsquo;re a writer of any kind and haven&rsquo;t checked out Marked 2, I (obviously) recommend taking a look",
		"keywords": ["store","xcode","checking","contents","custom","fountain","global","grammar","markdown","marked","mindnode","override","playground","raise","scrivener","shortcuts","spelling","store","support","system","table","xcode","accuracy","allow","allows","anywhere","assign","assumably","automatic","available","before","bookmarking","break","breaks","brettterpstra","check","checked","checking","class","collection","color","comment","comments","custom","customers","direct","discounted","editor","elements","embedded","enough","export","favorite","features","files","first","focus","footers","forced","foreground","formats","frustrated","fuzzy","global","grammar","haven","having","header","headers","height","hooks","hotkey","https","image","images","improved","internal","intrigue","items","keywords","ldquo","linking","links","loading","losing","major","marked","mdash","media","noscript","notes","offers","official","options","original","orphaned","paragraphs","picture","polishing","preventing","preview","proofreading","provides","rdquo","readability","recent","recognizing","recommend","release","right","rsquo","scheme","search","shortcut","shortcuts","sizes","smarter","sneak","solves","source","spellchecking","spelling","srcset","support","supports","syntax","syntaxes","system","taking","teased","testing","title","toggle","tools","topics","updated","upgrade","uploads","visibility","while","widowed","width","window","words","writer","writing"]
	},{
		"title": "Web Excursions for October 06, 2015",
		"url": "/2015/10/06/web-excursions-for-october-06-2015/",
		"tags": ["bookmarks","google","sublimetext"],
		"date": "Oct 6<span>th</span>, 2015",
		"ts": "1444150800",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. You get a couple of bonus links this week because my script got carried away. Technology! PodCon 2015 On Thursday, October 8, 2015 I&rsquo;ll be joining a distinguished bunch of podcasters for Pod Con 2015. 4 hours of live broadcasting via blab.im about how and why we do what we do. Head over and RSVP! openNASA Did you know NASA has an API? Hack: A typeface designed for source code My new favorite text editor font. I still use Meslo in apps like nvALT, mostly because it has versions with different linespacing, but in Sublime and Xcode, this is excellent. Sheetsu Sheetsu adds an API layer to Google Spreadsheet. I&rsquo;ve been doing this the hard way for a long time, as Google Docs is what drives iTextEditors. Looking forward to exploring the possibilities here. DevTools Tips For Sublime Text Users Google Developers offers a rundown of cool tricks in Chrome DevTools that will already be familiar to Sublime Text users. Port your muscle memory! Quiver: The Programmer&rsquo;s Notebook I&rsquo;m playing with this right now. It allows you to save snippets with cells set to various types (text, markdown, code w/language), and stores them as JSON objects in text files. Thus, you can mix Markdown and code snippets, copy them out, tag them, and even has a presentation mode. It has a few missing features, but shows promise. Sketch Repo This is an excellent collection of Sketch.app templates, icons, and UI elements. Also, when you&rsquo;re on this site, just start typing any search term (no input box needed). It&rsquo;s cool. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["google","interface","programming","spreadsheet","check","chrome","devtools","developers","google","looking","markdown","meslo","mindmeister","notebook","podcon","programmer","quiver","sheetsu","sketch","spreadsheet","sublime","technology","thursday","users","xcode","allows","because","bonus","boosting","brainstorming","broadcasting","brought","bunch","carried","cells","collaborating","collaborative","collection","couple","designed","different","distinguished","doing","drives","editor","elements","excellent","excursions","exploring","familiar","favorite","features","files","hours","itexteditors","icons","input","joining","language","layer","linespacing","links","mapping","markdown","memory","missing","mostly","muscle","needed","nvalt","objects","offers","opennasa","partnership","playing","podcasters","possibilities","presentation","productivity","promise","right","rsquo","rundown","script","search","shows","snippets","software","source","stores","templates","tricks","typeface","types","typing","users","various","versions"]
	},{
		"title": "Recap: September",
		"url": "/2015/10/03/recap-september/",
		"tags": ["recap"],
		"date": "Oct 3<span>rd</span>, 2015",
		"ts": "1443902400",
		"summary": "Thanks to September&rsquo;s sponsors! Share all your browser tabs at once (Sep 4th) A Service/App for OS X to collect all your browser tabs into an HTML page on Dropbox that you can quickly share. SearchLink 2.2.2 (Sep 8th) Updates to my favorite OS X Service of all time. An nvALT (and more) status report (Sep 14th) What&rsquo;s the deal? \"Dear Abby\" for nerds? (Sep 16th) I&rsquo;m planning a newsletter. Share your ideas. Quick and dirty JSON validation in Cocoa (Sep 22nd) Just in case you ever need to evaluate a chunk of JSON or JavaScript for usable syntax within a Cocoa app. Do it right: Writing about Apple (Sep 23rd) Do you write about Apple products or document Apple software? Did you know Apple has a style guide to aid in consistency? Grab sibling links with the Similarity bookmarklet (Sep 28th) A browser bookmarklet that intelligently determines which links to collect based on the characteristics of the link you click. It&rsquo;s perfect for opening or saving all of the \"Top 15 resources for&hellip;\" links in a post. Check out the latest Web Excursions, too! Recaps are a quick, curated summary of recent posts on BrettTerpstra.com. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get updates in digest format",
		"keywords": ["dropbox","apple","brettterpstra","check","cocoa","deals","dropbox","excursions","houdahspot","javascript","mighty","quick","recaps","rindle","searchlink","service","share","similarity","smile","thanks","updates","writing","based","bookmarklet","browser","characteristics","chunk","click","collect","consistency","curated","determines","digest","dirty","document","favorite","format","guide","hellip","ideas","intelligently","interest","latest","links","nerds","newsletter","nvalt","opening","planning","posts","products","quick","quickly","recent","report","resources","right","rsquo","saving","share","sibling","software","specifically","sponsors","status","style","subscribe","summary","syntax","updates","usable","validation","within","write"]
	},{
		"title": "Swearing politely with TextExpander",
		"url": "/2015/10/03/swearing-politely-with-textexpander/",
		"tags": ["snippet","textexpander"],
		"date": "Oct 3<span>rd</span>, 2015",
		"ts": "1443885300",
		"summary": "I make a concerted effort to not curse online. I&rsquo;ve broken that rule more often in recent years, but never cursing online for 20 years served me well. Especially these days on Facebook, where my family (and friends who don&rsquo;t know me as well but actually see me face to face) frequent, it tends to be bad form. (Rory Vaden discusses this in Take the Stairs, and he and I dive in a bit on Systematic 126). Yesterday, I was posting to Facebook on my iPhone, and wanted to \"cartoon censor\" a few less friendly words in a post. I think I was trying to avoid escalating a gun control argument. I thought \"it takes way too much time to type out these random character strings.\" Mentioned it on Twitter, and solved the issue in the same tweet. TextExpander to the rescue. I&rsquo;ve added two ways to handle the issue to the te-tools project, both designed to work with TextExpander Touch on iOS (in addition to Mac). The first is a snippet group called \"Cursed\" that you can add specific words to auto-censor when typed. It comes with vanilla examples, so this is one you&rsquo;ll want to copy instead of adding a URL group. You simply add plain text snippets containing , and then set the abbreviation to any word you want to censor. Next time you type it, it will be censored with a random set of punctuation characters. That solution, however, means you can&rsquo;t swear without censoring, plus all of that configuration. So version 2 was added to the Tools group with the abbreviation (prefix configurable). If you already have a URL group for Tools, this should be in there by now. For details on using the TE-Tools groups, see the project page. This one uses a fill-in. Just type and fill in the word you want to censor. The JavaScript function will leave the suffix on words ending in \"er\", \"ers\", \"s\", and \"ing\", so you can convey conjugation better. Thus \"mothertruckers\" becomes \"&%&#2C6;*#$!¡@ø@ers\" and \"ducking\" becomes \"ø&¡$ing.\"",
		"keywords": ["censor","cursing","iphone","swearing","cursed","enjoy","especially","facebook","javascript","mentioned","minnesota","rmktkn","stairs","systematic","textexpander","tools","touch","twitter","vaden","yesterday","abbreviation","added","adding","apple","argument","avoid","becomes","brettterpstra","broken","called","cartoon","censor","censored","censoring","character","characters","class","comes","concerted","configurable","configuration","conjugation","containing","control","convey","curse","cursing","designed","details","discusses","ducking","effort","ending","escalating","examples","family","first","frequent","friendly","friends","function","github","group","groups","handle","height","highlighter","however","https","iphone","image","index","itunes","jstecensor","language","ldquo","leave","loading","media","mothertruckers","noscript","often","online","original","picture","plaintext","posting","prefix","project","projects","punctuation","random","rdquo","recent","rescue","rouge","rsquo","served","share","simply","smilesoftware","snippet","snippets","solution","solved","source","specific","srcset","status","strings","suffix","swear","swearing","systematic","takes","tends","textexpander","think","thought","title","tools","trying","ttscoff","twitter","typed","uploads","using","vanilla","version","wanted","where","width","words","years"]
	},{
		"title": "The Mac Pick-A-Bundle has some sweet apps...",
		"url": "/2015/10/02/the-mac-pick-a-bundle-has-some-sweet-apps-dot-dot-dot/",
		"tags": ["bundle","macos"],
		"date": "Oct 2<span>nd</span>, 2015",
		"ts": "1443790800",
		"summary": "Creatable is running a \"Mac Pick A Bundle\" promo right now where you can pick any 10 apps out of a list of 30 and pay $39. The app selection has some true gems (i.e. \"things I would buy at full price\"). You can see the full selection at the promo page. I own all the most valuable (to me) ones already, but I thought you should know about this. Because I love you. Some of these usually cost more individually than the price of the entire bundle, so if you don&rsquo;t already have them, you should check it out. Paw (awesome for API testing) Scrivener (awesome for writing long form) Soulver (awesome for talking yourself through equations) Mail Pilot 2 (awesome if you&rsquo;re not already using MailMate) Downie 2 (awesome for stealing videos) Scapple (awesome for unstructured brainstorming) Emulsion (awesome if you miss Aperture) Deep Dreamer (awesome if you like generating pretty pictures) Pixa (awesome for icon management, among other photo tasks) Rapidweaver 6 (awesome if you&rsquo;re not a web designer but need websites) Posterino (I don&rsquo;t use it every day, but it&rsquo;s awesome for collages when you need it) There are plenty more to choose from, including Typed from Realmac, iShowU Studio, Freeway Pro 7, and a dozen others. Check out the bundle at creatable.co",
		"keywords": ["animation","creatable","software","store","aperture","because","bundle","check","creatable","downie","dreamer","emulsion","freeway","mailmate","pilot","posterino","rapidweaver","realmac","scapple","scrivener","soulver","studio","typed","among","awesome","brainstorming","bundle","check","choose","collages","creatable","designer","dozen","entire","equations","favorites","generating","ishowu","including","individually","management","others","photo","pictures","plenty","price","promo","right","rsquo","running","selection","stealing","talking","tasks","testing","thought","through","unstructured","using","usually","valuable","videos","websites","where","writing"]
	},{
		"title": "Bushel: Managing Apple devices just got simpler",
		"url": "/2015/10/01/bushel-managing-apple-devices-just-got-simpler/",
		"tags": ["sponsor"],
		"date": "Oct 1<span>st</span>, 2015",
		"ts": "1443697200",
		"summary": "Thanks to Bushel for sponsoring BrettTerpstra.com this week! For some people, IT is a task and not a career. Bushel is an easy-to-use cloud-based tool that anyone can leverage to set-up, manage, and protect the Apple devices in their workplace &ndash; without any help from IT. Bushel helps you with the Apple devices that you distribute to your team, or those that your team already has. You can view inventory details for all of these devices&mdash;serial numbers, storage capacity, applied settings, installed apps, and more&mdash;all accessible from one place. Additionally, you can automatically install work apps to all devices at once, assign company email accounts, and separate and protect your team&rsquo;s personal data from company data. And if a device is ever lost or stolen, you can remotely lock it or wipe company data completely. Do all of this and much more with little to no instruction. Bushel provides one seamless interface for managing your Apple devices when you want, from wherever you are. Bushel makes the complex simple so you can focus your time on what matters most, all while taking back your nights and weekends. Your first three devices are free forever, and each additional device is just $2 per month &ndash; no contracts or commitments. Learn more at www.bushel.com, and create your free account today",
		"keywords": ["apple","cloud","computing","management","additionally","apple","brettterpstra","bushel","learn","sponsored","syndicate","thanks","accessible","account","accounts","anyone","applied","assign","automatically","based","bushel","capacity","career","cloud","commitments","company","completely","complex","contracts","create","details","device","devices","distribute","email","first","focus","forever","helps","install","installed","instruction","interface","inventory","leverage","little","makes","managing","matters","mdash","ndash","nights","numbers","people","personal","protect","provides","remotely","rsquo","seamless","separate","serial","settings","simple","sponsoring","stolen","storage","taking","today","weekends","wherever","while","workplace"]
	},{
		"title": "Similarity bookmarklet update",
		"url": "/2015/09/29/similarity-bookmarklet-update/",
		"tags": ["bookmarklet","browser","javascript"],
		"date": "Sep 29<span>th</span>, 2015",
		"ts": "1443561660",
		"summary": "I&rsquo;ve updated the Similarity bookmarklet that I posted yesterday. If you missed it, it&rsquo;s a bookmarklet for desktop browsers that lets you quickly gather links in \"Top X resources for&hellip;\" type posts. It works on Product Hunt collections, \"related posts\" boxes, etc. By determining common characteristics of links, it does a pretty good job of only selecting links of the same type as you clicked. Here&rsquo;s what changed. It&rsquo;s a little more forgiving when finding containers now, so it&rsquo;s more likely to work with link lists of different formats It does a better job of fixing line breaks and trailing spaces in titles when generating Markdown lists It offers an option to open in new tabs or output the Markdown list for copying It&rsquo;s back to being hosted remotely, which means it can auto-update as I make changes (I figured out how to get Cloudfront to use Amazon SSL certificates while still pulling http-only from my server) I think that&rsquo;s all, just needed a little break and made some quick changes. I did a round of tests and all seems well, but let me know what you run into. Grab the updated bookmarklet below (drag to your bookmarks bar): If your Chromium browser doesn&rsquo;t allow bookmarklets (like Arc), download the Similarity extension version and follow the instructions here",
		"keywords": ["bookmark","bookmarklet","browser","chrome","google","safari","amazon","chromium","cloudfront","markdown","product","similarity","allow","below","bookmarklet","bookmarklets","bookmarks","boxes","break","breaks","browser","browsers","certificates","changed","changes","characteristics","clicked","collections","common","containers","copying","desktop","determining","different","doesn","download","extension","figured","finding","fixing","forgiving","formats","gather","generating","hellip","hosted","instructions","likely","links","lists","little","missed","needed","offers","output","posted","posts","pulling","quick","quickly","related","remotely","resources","round","rsquo","seems","selecting","server","spaces","tests","think","titles","trailing","updated","version","while","works","yesterday"]
	},{
		"title": "Grab sibling links with the Similarity bookmarklet",
		"url": "/2015/09/28/grab-sibling-links-with-the-similarity-bookmarklet/",
		"tags": ["bookmarklet","browser","javascript"],
		"date": "Sep 28<span>th</span>, 2015",
		"ts": "1443458040",
		"summary": "How many times have you visited a post with a list of resources, e.g. \"15 resources for free stock photos,\" and wished you could just grab them all at once? I don&rsquo;t know about you, but it happens to me frequently. This bookmarklet lets you click any link on the page, then analyzes it to find immediate sibling links of the same type, within the same immediate container element. Currently, it displays them as a Markdown list, but I may add an option to simply open them all in new tabs, or even add Pinboard bookmarks for all of them with a custom tag. If you&rsquo;re interested in additional features like that, let me know so I can gauge the level of effort I should put into any further development. Drag the link below to your browser&rsquo;s bookmark bar, then click it on any page with a list of links. Hover over one of the links in the list and click to grab all of the links that match its criteria. Typing any key or clicking outside of the Markdown output display will turn the bookmarklet off and restore page functionality. If your Chromium browser doesn&rsquo;t allow bookmarklets (like Arc), download the Similarity extension version and follow the instructions here. Similarity is written in pure JavaScript and requires no external loads. I ran into issues with loading external bookmarklets in Chrome with its new security issues (because I don&rsquo;t want to generate an SSL certificate for a server with no other need for one). It also uses \"modern\" JavaScript features, so it won&rsquo;t work for anyone using older browsers. No offense to those folks, but I just don&rsquo;t care about them. This should work on mobile, but I make no guarantees",
		"keywords": ["bookmark","chrome","safari","chrome","chromium","hover","javascript","markdown","pinboard","similarity","typing","allow","analyzes","anyone","because","below","bookmark","bookmarklet","bookmarklets","bookmarks","browser","browsers","certificate","click","clicking","container","criteria","custom","development","display","displays","doesn","download","effort","element","extension","external","features","folks","functionality","gauge","guarantees","happens","immediate","instructions","interested","issues","level","links","loading","loads","match","mobile","modern","offense","older","output","outside","photos","requires","resources","restore","rsquo","security","server","sibling","simply","stock","times","using","version","visited","wished","within","written"]
	},{
		"title": "Web Excursions for September 25, 2015",
		"url": "/2015/09/25/web-excursions-for-september-25-2015/",
		"tags": ["bookmarks"],
		"date": "Sep 25<span>th</span>, 2015",
		"ts": "1443203940",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. UIPalette.net UIPalette combines all of the best tools for finding color trends and generating palettes in one interface. Hailpixel, Color Hunt, Adobe Color CC and more. USB-C 12\" Macbook 5 in 1 Adapter v2 This seems like a good idea. I haven&rsquo;t sprung for a new MacBook yet, but I imagine this would be a very handy accessory. Currently pre-order. astaxie/bat A \"cURL-like tool for humans.\" If you&rsquo;ve ever written out long curl commands with a bunch of headers and arguments when testing an API, this is a much more humane option. On the more expensive side, I&rsquo;ve been loving Paw for GUI-based API work. Via OneThingWell, as seems to be the case at least once per Excursions post, so you should probably watch posts there as well. Bittenfruit My typewriter decal on my rMBP is wearing out, and I&rsquo;ve been hunting for a good decal to replace it. This site has some of the most intriguing, though I&rsquo;m still looking for one that really sums up my personality, interests, passions, goals, and potential Craigslist ads in one sticker that everyone at the coffeehouse can use to summarize me in a glance. Find a Remote Job A Product Hunt collection of tools for finding remote jobs, including Nomad List 2.0, Remote OK, Remotive Jobs, Gigster 2.0, and We Work Remotely. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["apple","color","design","macbook","serial","universal","adapter","adobe","backblaze","bittenfruit","check","color","craigslist","excursions","gigster","hailpixel","macbook","macbook","nomad","onethingwell","product","remote","remotely","remotive","uipalette","accessory","affordably","arguments","astaxie","backs","based","brought","bunch","cloud","coffeehouse","collection","color","combines","commands","computer","decal","entire","everyone","everything","excursions","expensive","finding","generating","glance","goals","handy","haven","headers","humane","humans","hunting","imagine","including","interests","interface","intriguing","looking","loving","palettes","partnership","passions","personality","posts","potential","reliably","remote","replace","rsquo","securely","seems","sprung","sticker","summarize","testing","today","tools","trends","typewriter","watch","wearing","written"]
	},{
		"title": "HoudahSpot 4",
		"url": "/2015/09/24/sponsor-houdahspot/",
		"tags": ["sponsor"],
		"date": "Sep 24<span>th</span>, 2015",
		"ts": "1443092400",
		"summary": "Thanks to HoudahSpot for sponsoring BrettTerpstra.com this week! From now through October 2nd, you can pick up a copy for 30% off and support this blog at the same time. See the end of the post for a coupon code. HoudahSpot is like OS X Spotlight on steroids. It takes the tedium out of file search by locating the files you really need. Here are a few examples: HoudahSpot lets you find files using multiple criteria (such as name, text content, kind, pixel count, and a wide assortment of other metadata), and searches are easy to build with a few clicks. HoudahSpot shows your results in a convenient and easy-to-use interface that keeps all your important data within reach. Fill in a simple search form with the details of the files you want to find. Add and combine criteria (name, text, content kind, author, image dimensions, and more) to narrow the results to the exact files you need Search multiple folders, and exclude others Preview the files you find, and see detailed info right in HoudahSpot Set HoudahSpot to open with a defined set of criteria, search locations and result columns, ready to search immediately Create templates for common searches, and save combinations of criteria as \"snippets\" that you can drag into other searches Stop spending time looking for files, pictures, and messages when you could be using them. Take a look at HoudahSpot and&mdash;this week only&mdash;use the coupon code at checkout and get 30% off! (Good until October 2nd.)",
		"keywords": ["houdahspot","image","resolution","search","spotlight","brettterpstra","create","files","houdahspot","image","mails","preview","search","spotlight","terpstra","thanks","assortment","author","brettterpstra","build","checkout","class","clicks","columns","combinations","common","containing","content","convenient","count","coupon","created","criteria","defined","detailed","details","dimensions","estimate","exact","examples","files","folders","height","highlighter","houdah","houdahspot","houdahspot","https","image","important","interface","invoice","keeps","language","ldquo","loading","locating","locations","looking","mdash","media","messages","metadata","modified","multiple","named","narrow","nofollow","noscript","opened","original","others","picture","pictures","pixel","pixels","plaintext","processing","rdquo","reach","ready","received","results","resum","right","rouge","search","searches","shows","simple","snippets","source","spending","sponsoring","srcset","steroids","support","takes","tedium","templates","through","title","uploads","using","width","within"]
	},{
		"title": "Do it right: Writing about Apple",
		"url": "/2015/09/23/the-apple-style-guide/",
		"tags": ["apple","writing"],
		"date": "Sep 23<span>rd</span>, 2015",
		"ts": "1443023580",
		"summary": "If you write technical documentation for or blog about Apple products, you&rsquo;ve probably pondered phrasing, capitalization, etc.. If you&rsquo;re not familiar with it already, Apple publishes and updates a style guide that&rsquo;s complete and useful for any kind of Apple-related writing. I&rsquo;ve broken plenty of rules over my career, but I&rsquo;ve been internalizing as many of these as I can, especially for software documentation. You can download the full PDF of the style guide from Apple, and there&rsquo;s a web-based HTML version available now, too. Here are a few highlights that are the most relevant to me: Do you \"type\" a key? \"Hit\" a shortcut? The rule is that you \"press\" keys and shortcuts, \"type\" strings, and \"tap\" anything on a multi-touch screen. And when talking about on-screen buttons, you \"click\" (or \"tap\" in the case of touch interface). \"Press\" is only used to refer to hardware or mechanical buttons (such as the Power button). Modifier keys have always been confusing to me, but there is a clearly defined style that makes a lot of sense. First of all, you always capitalize modifiers like Shift and Option. You hyphenate combinations, e.g. Control-Option-A. Two-word keys like \"Up Arrow\" maintain the space between the words. If the key name is hyphenated itself, use an en-dash when writing the combination. When the shortcut being listed is a sequence, use a space between the characters. This differs from manpage-style documentation, where it&rsquo;s not uncommon to see a comma instead. Apple suggests that you \"be sure to explain this convention on first use,\" writing out the process after listing the sequence the first time it comes up. Here&rsquo;s the most commonly ignored rule regarding key combinations (and one that I&rsquo;ve had to go through Marked 2 documentation and update myself a few times): there&rsquo;s a specific order in which modifier keys should be listed when combined: So \"Shift-Option-C\" is wrong; it should be \"Option-Shift-C.\" The latter sounds right when you read it, but it&rsquo;s not always obvious when writing. I&rsquo;ll just quote this one because it&rsquo;s very straightforward: Spell out the key names Escape and Function (the Fn key on portable computers and wireless keyboards) when you introduce them. In subsequent references, it’s OK to abbreviate them as Esc and Fn. When you&rsquo;re showing graphical representations (images showing keys in physical form) of key combinations, the&hellip;",
		"keywords": ["apple","guide","style","styleguide","technical","actions","apple","arrow","cheaters","command","control","escape","first","function","graphical","marked","modifier","press","sequential","shift","spell","abbreviate","actions","added","apple","applewriting","available","based","because","between","blockquote","brettterpstra","broken","button","buttons","capitalization","capitalize","career","change","characters","cheat","cheaters","class","clearly","click","combination","combinations","comes","comma","commonly","computers","confusing","convention","defined","differs","download","especially","explain","familiar","first","functionescape","github","graphical","guide","handy","hardware","height","highlights","highly","https","hyphen","hyphenate","hyphenated","ignored","image","images","index","indexed","interface","internalizing","introduce","itself","keyboards","keystrokes","latter","ldquo","listed","listing","loading","local","maintain","makes","manpage","marked","mechanical","media","modifier","modifiers","multi","myself","names","noscript","obvious","ordering","original","particular","phrasing","physical","picture","plenty","points","pondered","portable","press","process","products","publishes","quick","quote","rdquo","recommend","references","related","relevant","representation","representations","reviewing","right","rsquo","rules","screen","sense","sequence","sequential","sheet","shortcut","shortcuts","showing","software","sounds","source","space","specific","srcset","straightforward","strings","style","suggests","talking","technical","through","times","title","touch","ttscoff","uncommon","updates","uploads","useful","version","where","width","wireless","words","write","writing","wrong"]
	},{
		"title": "Quick and dirty JSON validation in Cocoa",
		"url": "/2015/09/22/quick-and-dirty-json-validation-in-cocoa/",
		"tags": ["cocoa","programming"],
		"date": "Sep 22<span>nd</span>, 2015",
		"ts": "1442935800",
		"summary": "I revamped the UI for advanced MathJax configuration for the upcoming Marked 2.5 update I mentioned recently. The configuration is simply a field where you can input additional inline configuration options using the JSON syntax you&rsquo;d find in a script tag in an HTML document. When writing JSON in a text field without the benefit of syntax highlighting and linters, though, it&rsquo;s easy to make a mistake, and Marked would only let you know that when refreshing a document and attempting to implement the configuration during load. I wanted it to be able to provide immediate feedback. Cocoa provides some decent JSON parsing libraries, but all I needed to know was whether it was valid syntax for a JavaScript engine to parse. I ended up using JavaScriptCore to quickly allocate and validate the string. It works quite well, though I haven&rsquo;t benchmarked it very thoroughly. This below code is from an NSTextView subclass. It takes the field&rsquo;s current string, trims it and removes newlines, then attempts to run a JSON.stringify() in a JavaScriptCore context. For reference, the methods come from Objective-C Regex Categories by Josh Wright. They are very handy shortcuts for the NSRegularExpression syntax1. Also note that it calls a method called \"straightenQuotes\", which is from an NSString category and simply dumbs down smart quotes: This is because even though the text field disables smart quotes, system settings can override it, and users can paste them into the field, which can be a hard bug to track down in customer support. If this is useful to you, great. If you see any major issues with the choice or in the implementation, I welcome the input. Here&rsquo;s a good (though aging) intro to JavaScriptCore. Yes, I should be working toward Swift, but this codebase is quite well grounded in Obj-C, and I&rsquo;m easily intimidated by large undertakings that will break things that are working.&nbsp;↩",
		"keywords": ["ecmascript","interface","javascript","cfstringcreatewithcstring","cfstringref","categories","class","cocoa","foundation","jscheckscriptsyntax","jsglobalcontextcreate","jsglobalcontextref","jsstringcreatewithcfstring","jsstringref","jsstringrelease","javascript","javascriptcore","javascriptcore","marked","mathjax","nscolor","nsregularexpression","nsstring","nstextview","regex","regex","string","swift","taming","webview","wright","advanced","aging","alpha","animated","apple","attempting","attempts","backlink","because","below","benchmarked","bendytree","benefit","blackcolor","break","brettterpstra","called","calls","caption","category","choice","class","codebase","colorwithcalibratedred","configuration","context","customer","decent","developer","didchangetext","disables","document","dumbs","easily","ended","endnotes","engine","errcolor","feedback","field","figure","fnref","footnote","footnotes","frame","github","great","green","grounded","handy","haven","height","highlight","highlighter","highlighting","https","immediate","implementation","inline","input","intimidated","intro","ismatch","issues","kcfallocatordefault","kcfstringencodingutf","language","ldquo","libraries","library","linters","major","marked","mathjax","mentioned","method","methods","mistake","needed","newlines","noteref","okcolor","options","override","parmanoir","parse","parsing","paste","plaintext","provides","quickly","quotes","rdquo","recently","refreshing","removes","replace","return","revamped","reversefootnote","rouge","rsquo","script","scriptjs","scriptstring","settextcolor","settings","shortcuts","simply","smart","sneak","source","straightenquotes","string","stringwithformat","stringify","subclass","super","support","swift","syntax","system","tabindex","takes","thoroughly","toward","track","trims","undertakings","upcoming","uploads","useful","users","using","valid","validate","validator","wanted","welcome","where","width","within","working","works","writing"]
	},{
		"title": "Web Excursions for September 18, 2015",
		"url": "/2015/09/18/web-excursions-for-september-18-2015/",
		"tags": ["bookmarks"],
		"date": "Sep 18<span>th</span>, 2015",
		"ts": "1442601420",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Dictater This is a great little gem that Kyle Carson has put out for free. It replaces the default Speech Services on OS X, adding play/pause, progress bar, an option to open a window that will highlight text as it&rsquo;s spoken, and fast forward/rewind by sentences and paragraphs. 5 Things I Learned from Working in Animal Welfare A great post for anyone who cares about dogs and the \"system\" that protects them. Ceceree Great idea: a wish list for the Mac App Store. Why should iTunes have all the fun? Telluride Review: Danny Boyle&rsquo;s &lsquo;Steve Jobs&rsquo; Wait, someone&rsquo;s making a good Jobs movie? I love Sorkin. wooorm/mdast This plugin-based Markdown processor would make for a very flexible custom processor in Marked 2. Via OneThingWell",
		"keywords": ["aaron","festival","sorkin","steve","telluride","animal","boyle","carson","ceceree","cleanmymac","danny","dictater","great","learned","markdown","marked","onethingwell","services","sorkin","speech","steve","store","telluride","welfare","working","adding","anyone","based","brought","cares","custom","default","excursions","flexible","great","highlight","itunes","little","lsquo","making","mdast","movie","paragraphs","partnership","pause","plugin","processor","protects","replaces","rewind","rsquo","sentences","speed","spoken","system","tools","window","wooorm"]
	},{
		"title": "Premium advertising mockup bundle for $27",
		"url": "/2015/09/17/premium-advertising-mockup-bundle-for-27-dollars/",
		"tags": ["sponsor"],
		"date": "Sep 17<span>th</span>, 2015",
		"ts": "1442487600",
		"summary": "Thanks to Mighty Deals for sponsoring BrettTerpstra.com this week! This fantastic Mighty Deal of 185 Ad Mockups lets you know instantly how your latest design project will look in the real world. Easily place your artwork into a wide variety of mockups including professional newspaper, magazine, and T-shirt ad mockups, as well as mockups for large-scale projects like billboards and roadside ads. For a limited time you can get all 185 advertising mockups for only $27! (54% off the regular price!). Head to Mighty Deals to check out previews and grab your bundle",
		"keywords": ["advertising","printing","shirt","advertising","billboard","brettterpstra","bundle","deals","easily","featuring","frames","highlights","magazine","mighty","miscellaneous","mockups","newspaper","object","photoshop","poster","premium","sample","shirt","smart","stand","thanks","ultra","advertising","artwork","billboards","bundle","check","clear","clocks","customize","design","ensuring","fantastic","files","including","instantly","latest","layer","limited","magazine","mockup","mockups","newspaper","photorealistic","premium","previews","price","professional","project","projects","regular","replace","resolution","roadside","scale","shirt","simply","source","sponsoring","using","variety","vision","world"]
	},{
		"title": "&ldquo;Dear Abby&rdquo; for nerds?",
		"url": "/2015/09/16/dear-abby-for-nerds/",
		"tags": ["newsletter","suppport"],
		"date": "Sep 16<span>th</span>, 2015",
		"ts": "1442440860",
		"summary": "I&rsquo;ve been accepting monthly, subscription-based donations from readers of this site without providing anything extra for the consideration. I sincerely appreciate all of the people who make continuous contributions&mdash;at any amount&mdash;and I&rsquo;ve been planning out a way that I can give something back without making a paywall or writing good stuff that no one else can read. I have formulated a plan1. I&rsquo;m working out the details of an AMA newsletter. It will consist of my thoughtful answers to questions from readers in a bi-weekly (to start) email newsletter. The archives of the newsletter will become publicly available after a while, but subscribers at any level will get my responses in a more timely fashion. I have a broad range of knowledge, and there are some areas I&rsquo;m actually pretty good at. I&rsquo;ll take questions about OS X, Unix, programming, mental issues, productivity, applications, workflows, whiskey&hellip; you name it. The questions I put time into answering will be the ones I determine will be of general interest, or that I would have a blast responding to. My own whims, I guess. I&rsquo;ll be using the Memberful setup that I&rsquo;ve already been working with. I&rsquo;m ironing out the Memberful/Mailchimp integration, a login system, and a question submission form. I still have a bit to do, but I intend to launch this within a week or two. About 50% of my current subscriber income is coming via PayPal subscriptions. PayPal doesn&rsquo;t make it easy for me to dump a list of all those supporters. I&rsquo;m working on it, but if you&rsquo;re currently donating through PayPal and want to switch from PayPal to Memberful, feel free to as it will ensure that you&rsquo;re part of the login/email subscription system without dealing with hacky workarounds. Everyone who&rsquo;s already subscribed is already in on the game, and you&rsquo;ll be the first to get the newsletter when it&rsquo;s ready. You&rsquo;re also free to send questions directly until I get a submission form set up. I&rsquo;m hoping this will prove to be a fun way to give something extra to the people who&rsquo;ve been very generous. I have a couple of questions as I work out the details, feel free to respond in the comments, on Twitter, or by email: Should question submission be open to anyone, or only paid subscribers? What would make this idea most interesting/useful to you? Insert Mr. Burns finger temple&nbsp;↩",
		"keywords": ["brett","terpstra","donation","email","memberful","paypal","subscriber","twitter","burns","everyone","mailchimp","memberful","paypal","twitter","accepting","amount","answering","answers","anyone","applications","appreciate","archives","areas","available","backlink","based","blast","brettterpstra","broad","class","coming","comments","consist","contact","continuous","contributions","couple","dealing","dearabby","details","directly","doesn","donating","donations","email","endnotes","extra","fashion","finger","first","fnref","footnote","footnotes","formulated","general","generous","guess","hacky","height","hellip","hoping","https","image","income","integration","interest","interesting","ironing","issues","knowledge","launch","level","loading","login","making","mdash","media","mental","monthly","newsletter","noscript","noteref","original","paywall","people","picture","planning","productivity","programming","prove","providing","publicly","questions","range","readers","ready","respond","responding","responses","reversefootnote","rsquo","setup","sincerely","source","srcset","stuff","submission","subscribed","subscriber","subscribers","subscription","subscriptions","support","supporters","switch","system","temple","thoughtful","through","timely","title","ttscoff","twitter","uploads","useful","using","weekly","while","whims","whiskey","width","within","workarounds","workflows","working","writing"]
	},{
		"title": "An nvALT (and more) status report",
		"url": "/2015/09/14/an-nvalt-and-more-status-report/",
		"tags": ["nvalt"],
		"date": "Sep 14<span>th</span>, 2015",
		"ts": "1442264220",
		"summary": "I get questions every single day on Twitter and in emails asking about the status of nvALT and the commercial successor I&rsquo;ve talked about. Ultimately, this post is being written so that I can have a bot send a link to something every time it sees a tweet to me with the word \"nvALT\" and a question mark in it. nvALT will (probably) see one more update. We (David Halter and I) fixed the majority of bugs that cropped up with OS 10.10 almost a year ago. The source on GitHub is up to date, but we haven&rsquo;t gotten around to putting out an official update. I haven&rsquo;t tested it on 10.11 yet, so if there are some minor patches needed to get that smoothed out, they&rsquo;ll go out with that release when it&rsquo;s ready1. The major reason for that delay, though, is that we began work on a ground-up re-imagining of nvALT. One that we could charge money for. nvALT is built on top of Notational Velocity, which is open source. Even if the license on the code allowed for commercial use, nvALT is so heavily rooted in Zachary&rsquo;s original work that I wouldn&rsquo;t be willing to charge for it. David and I have both been putting in hours of development and support on nvALT for years now, and the total contributions to the project don&rsquo;t add up to nearly enough to justify that. There are hundreds of thousands of users&mdash;it&rsquo;s the most successful project I&rsquo;ve ever posted by far, and the one on which I&rsquo;ve made the least dollars per hours spent. A new commercial project has a fiery base to sell to, so we started a rapid development cycle on getting a new product that fit those same needs out. So where&rsquo;s that? I had planned to be in beta testing rounds this month, but I had a setback. To make a long story short, the psychiatrist I&rsquo;ve been going to for about 5 years retired, then the doctor who was supposed to replace him quit his first week. I was handed off to a PA who decided very quickly that I did not have ADHD, I was suffering from depression. He cut off all of my ADHD meds and gave me Prozac. I spent a month unable to get anything done. When I contacted him about a reevaluation, he told me to double my Prozac. That had no effect. Another month went by, as I lost all of my income and clients grew frustrated. For the record, I&rsquo;m not depressed. I&rsquo;ve been bi-polar my whole life, and have experienced every degree of clinical depression. I can tell you beyond any doubt that it&rsquo;s not the&hellip;",
		"keywords": ["deficit","disorder","hyperactivity","notational","velocity","another","david","github","halter","marked","notational","prozac","twitter","velocity","zachary","again","allowed","almost","asking","backlink","began","behind","beyond","built","charge","class","clear","clients","clinical","coding","coming","commercial","compatibility","contacted","contributions","cropped","cycle","decided","degree","depressed","depression","development","doctor","dollars","double","doubt","elasticthreads","emails","endnotes","enough","experienced","fiery","finishing","first","fixed","fnref","footnote","footnotes","frustrated","getting","github","going","gotten","ground","handed","haven","heavily","hours","https","hundreds","hurdles","imagining","income","justify","ldquo","license","major","managed","mdash","minor","money","nearly","needed","needs","notational","noteref","nvalt","official","officially","original","patches","planned","polar","posted","product","project","psychiatrist","putting","questions","quickly","rapid","rdquo","ready","record","reevaluation","release","replace","retired","reversefootnote","rooted","rounds","rsquo","schedule","setback","short","single","smoothed","snafu","sorry","source","spent","started","status","story","successful","successor","suffering","support","supposed","talked","tested","testing","thousands","ttscoff","tumblr","unable","users","where","whole","willing","wouldn","written","years"]
	},{
		"title": "Save 20% on Smile apps!",
		"url": "/2015/09/10/save-20-percent-on-smile-apps/",
		"tags": ["sponsor"],
		"date": "Sep 10<span>th</span>, 2015",
		"ts": "1441882800",
		"summary": "Thanks to Smile for sponsoring BrettTerpstra.com this week! Through October 15th, my friends at Smile are offering my readers 20% off new licenses of their Mac software. Take advantage of this great deal on some amazing Mac software before it expires! Smile makes productivity software for the Mac, iPad, and iPhone, including: PDFpen The all-purpose Mac PDF editor! Add signatures, text, and images. Make changes and correct typos. OCR scanned docs. Fill out forms. New in version 7: proofread OCR text! PDFpenPro Make interactive forms, build tables of contents, and convert Web pages to PDFs when you go PDFpenPro. New in version 7: Microsoft® Excel, PowerPoint, and PDF/A export! TextExpander Type more with less effort! TextExpander saves your fingers and your keyboard, expanding custom keyboard shortcuts into frequently-used text and pictures. New for version 5: new snippets suggested for you! This 20% off sale on new licenses of Smile&rsquo;s Mac software runs until October 15th. Now&rsquo;s the time",
		"keywords": ["iphone","pdfpen","smile","textexpander","brettterpstra","excel","microsoft","pdfpen","pdfpenpro","powerpoint","smile","textexpander","thanks","through","advantage","amazing","before","brett","brettterpstra","build","changes","class","contents","convert","coupon","crcampaign","crcat","crsource","custom","editor","effort","expanding","expires","export","fingers","forms","friends","great","height","https","iphone","image","images","including","interactive","keyboard","licenses","loading","makes","media","nofollow","noscript","offering","original","pages","picture","pictures","productivity","proofread","readers","rsquo","saves","scanned","shortcuts","signatures","smilesoftware","snippets","software","source","sponsor","sponsoring","srcset","suggested","tables","title","typos","uploads","version","width"]
	},{
		"title": "Web Excursions for September 09, 2015",
		"url": "/2015/09/09/web-excursions-for-september-09-2015/",
		"tags": ["bookmarks","color"],
		"date": "Sep 9<span>th</span>, 2015",
		"ts": "1441803600",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Sync + WD + Raspberry Pi Truly build your own cloud with a 1TB drive, Raspberry Pi, and Bittorrent Sync. chilicuil/tundle A slick package manager for tmux. Today color scheme for Sublime I&rsquo;m really into Spacegray right now, but this Sublime Text color scheme is beautiful. Zen Timer I&rsquo;ll be talking more about this little app soon, but if you&rsquo;re using the Pomodoro technique1, this timer is beautiful. It grows a tree as the timer runs, and can do it with a transparent background at desktop level with customizable colors. Very fun. NetNewsWire Nice to see NetNewsWire back! iOS version, too! Which I have been a lot as a stopgap after having my ADHD meds cut in a psych provider snafu&hellip;&nbsp;↩",
		"keywords": ["raspberry","bittorrent","check","netnewswire","pomodoro","raspberry","setapp","spacegray","sublime","timer","today","truly","access","apple","background","backlink","beautiful","brettterpstra","brought","build","chilicuil","class","cloud","color","colors","customizable","desktop","drive","endnotes","excursions","fnref","footnote","footnotes","getsync","github","gorgeous","grows","having","height","hellip","https","hundreds","image","itunes","juliotrigo","level","little","loading","manager","media","monthly","netnewswire","noscript","noteref","original","package","partnership","picture","pomodoro","provider","psych","raspberry","reversefootnote","right","rsquo","scheme","setapp","slick","snafu","source","spacegray","srcset","stopgap","sublime","subscription","talking","technique","timer","title","today","transparent","tundle","uploads","using","version","webexcursionsplane","width"]
	},{
		"title": "SearchLink 2.2.2",
		"url": "/2015/09/08/searchlink-2-dot-2-2/",
		"tags": ["macos","markdown","searchlink","service"],
		"date": "Sep 8<span>th</span>, 2015",
		"ts": "1441726980",
		"summary": "SearchLink 2.2.2 is up. Steve Lambert pointed out a bug in the Wikipedia search where a new redirect to SSL was causing SearchLink to fail on all !wiki searches. 2.2.2 fixes this. There&rsquo;s also extended help output now, so if you select just the word \"help\" and run it, it will list all available searches, including any custom searches you&rsquo;ve set up in . In my own workflows, SearchLink is still one of the most useful OS X utilities I&rsquo;ve built. If you write in Markdown and ever switch away from your editor to get a link and haven&rsquo;t tried SearchLink out, you should. I can say with a good amount of certainty that it will change the way you blog, email, and write. Also, don&rsquo;t miss the URL Preview extension I created to validate inscrutable links, still without switching away from your editor. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip; I'm betting SearchLink is helpful to you, pitch in! Or me on GitHub",
		"keywords": ["blogging","internet","wikipedia","changelog","donate","download","github","lambert","markdown","preview","published","searchlink","steve","updated","wikipedia","amount","available","betting","built","causing","certainty","change","check","created","custom","editor","email","extended","extension","extensions","fixes","haven","hellip","helpful","including","inscrutable","leaving","links","output","pitch","pointed","redirect","release","rsquo","search","searches","showed","switch","switching","tried","useful","utilities","validate","where","workflows","write"]
	},{
		"title": "Dropzone 3.5 Giveaway Winners",
		"url": "/2015/09/05/dropzone-3-dot-5-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Sep 5<span>th</span>, 2015",
		"ts": "1441474860",
		"summary": "On behalf of myself and the Giveway Robot1, I&rsquo;d like to congratulate the five lucky winners of Dropzone 3.5 licenses from last week&rsquo;s contest: If you haven&rsquo;t received the telegraph from Giveaway Robot, feel free to ping me. If you entered and didn&rsquo;t win, you can pick up a copy on the Mac App Store for just $4.99 US right now. It was a must-have app for me before, but the new features for keyboard triggering and navigation make it well worth the purchase. As always, thanks for reading! I&rsquo;ve written a backstory for him, but it&rsquo;s pretty long. Basically he&rsquo;s the result of the Terminator series going too far and breaking time. He was a leader of a robot overtaking but all of the time travel to kill potential protaganists fried his circuits and now he&rsquo;s just a random number generator.&nbsp;↩",
		"keywords": ["aptonic","dropzone","store","utility","dropzone","giveaway","giveway","hagelin","hulme","robot","ronan","store","terminator","apple","backlink","backstory","before","breaking","brettterpstra","chisenhall","circuits","class","congratulate","contact","contest","dropbox","dropzone","endnotes","entered","features","fnref","footnote","footnotes","fried","generator","giveaway","going","haven","height","https","image","itunes","keyboard","leader","licenses","loading","lucky","media","myself","navigation","noscript","noteref","original","overtaking","picture","potential","protaganists","random","reading","received","reversefootnote","right","robot","rsquo","series","source","srcset","telegraph","thanks","title","travel","triggering","uploads","vacation","width","winners","worth","written"]
	},{
		"title": "Share all your browser tabs at once",
		"url": "/2015/09/04/share-browser-tabs-in-one-link/",
		"tags": ["automator","dropbox","macos","productivity","scripting","service","tools"],
		"date": "Sep 4<span>th</span>, 2015",
		"ts": "1441371600",
		"summary": "Update: Version 1.0.1 is now the current download. Fixes Safari functionality and allows the optional use of a dotfile ( with the 5-digit Dropbox user id in it) instead of modifying the script directly. Since it doesn&rsquo;t absolutely require user editing now, it&rsquo;s also codesigned to avoid any issues. Rick Martin left a comment on my \"Write Better Markdown\" post that reminded me of a relatively simple amalgamation of projects I&rsquo;d had in the back of my mind for a couple of years now. I knocked it out as an Automator workflow today. Borrowing from the Markdown Service Tools browser commands and the original Dropbox Collection Service I made a few years ago, \"Share Tab Collection\" is a useful tool for anyone who collects in browser tabs during meetings, brainstorming sessions, podcasts, or any time you have a browser full of tabs and want to distribute them. Run it, and whatever tabs are open in the front window of your browser (Chrome or Safari) will be collected into a web page and a Dropbox public URL will be placed on your clipboard for sharing. Like the original \"Collections\" Service, it includes an \"open all\" link that will restore the entire session with a single click. The output page has updated styling (compared to the original Collections Service) and works on small (mobile) screens. Other than that, it&rsquo;s very simple. HTML files are stored in (it will make the folder if needed) and named with a timestamp. You can remove them from public view by deleting or moving those files at any time. You can also go in and edit them manually if you&rsquo;re industrious and need a quick fix. Update (1.0.1) The instructions below will still work, but you can also use a dotfile to define the Dropbox user ID. Follow the same steps to retrieve it, but then paste it into a file called in your Home folder. For simplicity&rsquo;s sake, just copy the 5-digit number from a public URL, then run this in Terminal: . Done. The only setup you need to do is to open the workflow in Automator and edit the variable at the very top of the Run Shell Script action. This should be set to the portion of a Dropbox url for a file in your \"Public\" folder. Here, I made you a picture. Save the workflow and it&rsquo;s ready to run. You can also hold down Option in Automator&rsquo;s File menu and choose \"Save as\" to convert it to an Application bundle. Workflows are easy to trigger with tools such as EventScripts, BetterTouchTool, LaunchBar, Alfred&hellip;",
		"keywords": ["applescript","automation","script","shell","alfred","automator","bettertouchtool","borrowing","bring","changelog","chrome","clipboard","collection","collections","configuration","confirmation","continue","display","donate","download","dropbox","eventscripts","fixes","hacking","lastly","launchbar","markdown","martin","notification","optionally","public","published","safari","script","service","share","shell","since","spotlight","terminal","tools","updated","usage","value","variable","version","workflows","write","action","actions","allows","amalgamation","anyone","asking","avoid","based","below","blank","bottom","brainstorming","browser","browsers","bundle","called","choose","click","clicking","clipboard","codesigned","collect","collected","collection","collects","command","commands","comment","compared","convenient","convert","copying","couple","default","define","deleted","deleting","desired","digit","directly","distribute","doesn","dotfile","double","download","editing","enter","entire","feedback","files","folder","format","front","functionality","generated","hellip","includes","industrious","instructions","issues","knocked","launch","manually","meetings","mobile","modify","modifying","moving","named","needed","optional","original","others","output","parts","paste","picture","placed","podcasts","portion","prioritized","projects","prompts","provides","public","quick","ready","relatively","reminded","remove","restore","retrieve","rsquo","running","screens","script","session","sessions","setup","sharing","simple","simplicity","single","small","steps","stored","styling","timestamp","title","today","tools","trigger","updated","useful","variable","whatever","window","workflow","works","years"]
	},{
		"title": "Rindle is more than just another task manager",
		"url": "/2015/09/03/rindle-is-more-than-just-another-task-manager/",
		"tags": ["sponsor"],
		"date": "Sep 3<span>rd</span>, 2015",
		"ts": "1441278000",
		"summary": "Thanks to Rindle for sponsoring BrettTerpstra.com this week! All Your Tasks. One App. Your Workflow. Rindle is a personal task management app that integrates with the tools you already use, allowing you to seamlessly view all of your tasks on one screen. We naturally have tasks in multiple places: email, project management apps, and multiple collaboration tools. Rindle brings all of your tasks together into your own custom workflow. Rindle allows you to spend less time switching between task management apps by bringing them all together, leveraging the tools you already use. Instead of replacing those other tools, we&rsquo;re bringing some zen to your personal task management and workflow. Many companies use various tools to manage different aspects of their business. Gmail, Slack, Trello, Github, and others have a unique purpose and function, but all of them can generate tasks for you to complete. Rindle lets you bring all your tasks into one central workplace, allowing you to manage them in your own custom workflow. Connect other apps to Rindle so you can quickly drag and drop to create tasks, reducing the need to type each one out. New tasks automatically link back to the original app, so you can always reference where that task came from. Stop wasting time jumping between tabs in your browser to track down work or sifting through email to remember something you had to get done. Rindle keeps everything in one central location for you. Sign up for the private beta today",
		"keywords": ["basecamp","enterprise","github","integration","management","project","brettterpstra","connect","github","gmail","rindle","slack","sponsored","syndicate","tasks","thanks","trello","workflow","allowing","allows","aspects","automatically","between","bring","bringing","brings","browser","business","central","collaboration","companies","create","custom","different","email","everything","function","integrates","jumping","keeps","leveraging","location","management","multiple","naturally","original","others","personal","places","private","project","quickly","reducing","remember","replacing","rsquo","screen","seamlessly","sifting","spend","sponsoring","switching","tasks","through","today","together","tools","track","unique","various","wasting","where","workflow","workplace"]
	},{
		"title": "Post-vacation Dropzone 3 Giveaway!",
		"url": "/2015/09/02/post-vacation-dropzone-3-giveaway/",
		"tags": ["giveaway"],
		"date": "Sep 2<span>nd</span>, 2015",
		"ts": "1441228920",
		"summary": "You may have noticed a record zero posts here this last week. I have an explanation. I went on my third real vacation in the last 10 years. My wife and I headed out to New Hampshire and Maine for a bit of East Coast flavor. We had a great time, thank you for asking. As a productivity aside, I made use of a SaneBox feature I didn&rsquo;t know about until now: the @SaneVacation mailbox. By moving emails to that folder, they disappear until the day I told it I would be back home, at which point they return to my inbox as unread messages. I replied to maybe 2 emails all week. It was very nice. I also decided to do this trip without a laptop, relying instead on my iPhone 6+ and my WiFi-only iPad1 with an external keyboard (the Logitech K480 is awesome, by the way). I&rsquo;ll write more about that adventure as I get time, though I&rsquo;m so late to the \"working on an iPad\" game that I don&rsquo;t have that much new to say2. Anyway, to the point. Dropzone developer John Winter has been awesome enough to sponsor my blog the week I&rsquo;ve been on vacation, and he&rsquo;s taken it further by offering five promo codes for Dropzone 3 ($4.99US) to BrettTerpstra.com readers. Sign up below! Entries will be accepted right up until Saturday, September 5th at 12pm CST, at which time the Giveaway Robot will decide your fates by randomly selecting five (5) winners. Sorry, this giveaway has ended. Turns out if you save money on hotels and AirBNB stays, you end up with either bad internet or no internet. In the AirBNB case, we had an entire colonial house, which was beautiful, but had no cable, no internet, and no cell signal on Verizon. So that was rustic&hellip;&nbsp;↩ I also saw the new F-Terminal bathrooms at the MSP airport, which I can&rsquo;t stop talking about. I do actually plan to write an airport bathroom review post.&nbsp;↩",
		"keywords": ["aptonic","dropzone","hampshire","iphone","maine","productivity","store","utilities","airbnb","anyway","brettterpstra","coast","dropzone","entries","giveaway","hampshire","logitech","mutwlw","maine","robot","sanebox","sanevacation","saturday","sorry","terminal","thanks","turns","verizon","winter","accepted","adventure","again","airport","amazon","apple","aside","asking","awesome","backlink","bathroom","bathrooms","beautiful","below","brettterpstra","cable","class","codes","colonial","creative","creativeasin","decide","decided","developer","disappear","dropzone","either","emails","ended","endnotes","enough","entire","explanation","external","fates","feature","flavor","fnref","folder","footnote","footnotes","giveaway","great","headed","height","hellip","hotels","house","https","iphone","image","inbox","internet","itunes","keyboard","laptop","ldquo","linkcode","loading","mailbox","maybe","media","messages","money","moving","noscript","noteref","noticed","offering","original","picture","point","posts","product","productivity","promo","randomly","rdquo","readers","record","relying","replied","return","reversefootnote","right","rsquo","rustic","sanebox","selecting","signal","sorry","source","sponsor","srcset","stays","taken","talking","thank","third","title","unread","uploads","vacation","width","winners","working","write","years"]
	},{
		"title": "Drag and Drop like a pro with Dropzone 3.5",
		"url": "/2015/08/27/dropzone-3-dot-5-sponsor/",
		"tags": ["sponsor"],
		"date": "Aug 27<span>th</span>, 2015",
		"ts": "1440673200",
		"summary": "I&rsquo;m happy to have Dropzone sponsoring BrettTerpstra.com this week. It&rsquo;s been a daily-use app of mine for years, and one I highly recommend. Dropzone is a productivity tool that enhances drag and drop on your Mac. It makes it faster and easier to move files, launch applications and share files. A major update to the app (version 3.5) has just been released that takes the app to a new level. It&rsquo;s a free upgrade to all existing customers, and is also being offered at a 50% discount for new customers &mdash; for a limited time. You can purchase it from the Mac App Store or buy it directly from our site. You can use Dropzone to share with many services such as AirDrop, Imgur, FTP, Amazon S3, Facebook, Twitter, and many others. You can even download additional actions to enhance Dropzone or develop your own using the powerful Ruby or Python based scripting API. The 3.5 update improves the user interface, adds keyboard triggering of actions (see a video of this in action), OS X service integration, support for Python actions, preliminary El Capitan support and more. Read the full announcement on our blog. Keep all your essential tools within reach with Dropzone 3.5",
		"keywords": ["amazon","store","airdrop","amazon","brettterpstra","capitan","dropzone","facebook","imgur","python","store","twitter","action","actions","announcement","apple","applications","aptonic","based","brettterpstra","class","customers","daily","develop","directly","discount","download","dropzone","easier","enhance","enhances","essential","faster","files","happy","height","highly","https","image","improves","integration","interface","itunes","keyboard","launch","launched","level","limited","loading","major","makes","mdash","media","nofollow","noscript","offered","original","others","picture","powerful","preliminary","productivity","reach","recommend","released","rsquo","scripting","service","services","share","source","sponsor","sponsoring","srcset","support","takes","title","tools","triggering","upgrade","uploads","using","version","video","width","within","years"]
	},{
		"title": "Web Excursions for August 26, 2015",
		"url": "/2015/08/26/web-excursions-for-august-26-2015/",
		"tags": ["bookmarks"],
		"date": "Aug 26<span>th</span>, 2015",
		"ts": "1440601200",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. How to survive working at home Daniel Jalkut (one of my favorite indie devs) shares his mistakes and triumphs from over 10 years of being his own boss and working at home. I still need to figure out the keeping-up-hygiene-and-appearances part. Marcato An iOS app that lets you create single site browsers (a la Fluid) to maintain separate cookies and local storage for various sites. Hat tip to @Anodigital. How the Apple Watch Has Changed My Behavior for the Better I now snapshot my work, look away, drink some water, walk to the kitchen to refill my cup, glance around to see if anybody needs me, and then get back to work. This post encapsulates my own experience well. Use Markdown in Evernote An update (with fix) to an older Evernote-watching script from Dan Rosenstark for integration with Marked. Pinboard Pro - Google Chrome extension for Pinboard.in An alternative to the official Pinboard Chrome extension. It has essentially the same features, but the one thing I wanted very badly for Chrome was a shortcut for Tab Sets, and this offers it. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["evernote","iphone","anodigital","apple","behavior","changed","check","chrome","daniel","evernote","fluid","google","jalkut","marcato","markdown","marked","mindmeister","pinboard","rosenstark","watch","anybody","appearances","badly","boosting","brainstorming","brought","browsers","collaborating","collaborative","cookies","create","drink","encapsulates","essentially","excursions","experience","extension","favorite","features","figure","glance","https","hygiene","indie","integration","keeping","kitchen","local","maintain","mapping","mistakes","needs","offers","official","older","partnership","productivity","refill","script","separate","shares","shortcut","single","sites","snapshot","software","storage","survive","triumphs","twitter","various","wanted","watching","water","working","years"]
	},{
		"title": "Write better Markdown",
		"url": "/2015/08/24/write-better-markdown/",
		"tags": ["markdown"],
		"date": "Aug 24<span>th</span>, 2015",
		"ts": "1440428400",
		"summary": "The overriding design goal for Markdown’s formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it&rsquo;s been marked up with tags or formatting instructions. I work with many different \"flavors\" of Markdown that have branched off since Markdown 1.0. Some add syntax to accomplish more advanced output control, but the design goal typically remains the same. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions. Well-formatted text is not only more readable, it&rsquo;s more future-proof, and following a set of rules derived from the original spec means better portability. The CommonMark project aims to clarify a lot of the things I&rsquo;m about to mention. Its goal is stricter handling of ambiguities in the syntax, and it&rsquo;s a justifiable one. The negative reactions to the idea seem primarily summed up as \"you&rsquo;re not my real dad.\" People seemed more offended by the approach than the spec. I&rsquo;m on both sides. As a developer whose primary application is Markdown-based, at least 50% of my customer support involves explaining Markdown syntax and differences between flavors. A common knowledge of what&rsquo;s standard is useful. Many users learn a syntax particular to a specific processor, and then face disappointment when their documents don&rsquo;t render properly elsewhere. However, I love that Markdown has been extended and tweaked for specific purposes, and I take a \"personal responsibility\" stance on the syntax. As long as users are aware of potential compatibility issues, they can decide for themselves how much of a mess to make when working with any given processor. This post isn&rsquo;t about proposing any standard or new flavors, it&rsquo;s just about common sense guidelines that allow you to work with any processor. Messes happen because some processors are more lax than others about formatting (preserving line breaks, allowing 2-space indentation, different interpretations of unescaped emphasis markers, etc.), or provide a syntax for elements which aren&rsquo;t universal (e.g. centering with , fenced code with backticks or tildes, strikethrough characters). It&rsquo;s fine to make use of the latter, as long as you&rsquo;re aware of what won&rsquo;t work elsewhere. Ambiguous formatting&hellip;",
		"keywords": ["element","gruber","markup","processor","writing","again","ambiguous","bbedit","babelmark","backticks","blank","center","commonmark","composer","contents","different","discount","drang","either","emphasis","empty","escaping","extra","fenced","fletcher","footnotes","github","gruber","headers","however","indentation","kramdown","longer","markdown","maruku","messes","multimarkdown","pandoc","penney","people","personally","python","reserved","semantics","service","setext","short","sublime","table","tables","textmate","tools","using","whitespace","within","above","accepted","accurate","across","additions","advanced","again","align","alignment","allow","allowing","allows","although","ambiguities","among","anchors","another","anyway","anywhere","approach","article","asterisks","automatically","available","avoidable","aware","babelmark","backlink","backslash","backticks","based","basic","bbedit","because","before","behave","below","between","blank","block","blockquote","blocks","blogging","board","bottom","braces","brackets","branched","breaks","brettterpstra","built","bullet","caveats","cells","centering","changes","character","characters","choices","clarify","class","classes","clean","cleaning","cleanup","clear","clearly","closing","coding","colons","combinations","common","commonly","commonmark","compatibility","concerns","confuse","confusing","consecutive","consider","consistent","consistently","consisting","constructs","continuous","control","cover","cream","creates","creating","curly","customer","dashes","decide","declare","define","defined","delimiter","derived","design","destinations","detail","determined","determining","developer","differences","different","differentiate","differently","disappointment","discussed","display","displayed","distinguish","divide","dividers","document","documents","double","drbunsen","easier","easily","eight","either","element","elements","elsewhere","emphasis","empty","endnotes","enough","ensures","entities","environment","error","escape","escaped","escaping","especially","essentially","estimate","everyone","evolved","example","exception","explaining","extended","extension","fairly","features"]
	},{
		"title": "mdless: Better Markdown in Terminal",
		"url": "/2015/08/21/mdless-better-markdown-in-terminal/",
		"tags": ["markdown","mdless","terminal"],
		"date": "Aug 21<span>st</span>, 2015",
		"ts": "1440165900",
		"summary": "Here&rsquo;s a side project that got out of hand. I wanted to be able to view Markdown README files quickly and pleasantly from Terminal. More often than not, I&rsquo;m working in an iTerm2 visor window, so opening any app&mdash;including a simple &mdash;will make my current view slide away. Not a big deal, of course, but it seemed like it could be easier. I created for this. It&rsquo;s a little utility that colorizes, cleans up, and pages Markdown documents. You can use to spit out just a single section of the document (use to show available sections). Markdown is pretty easy to read just as a text file, but some README files are really long and have a lot of cruft that only looks good when rendered. So this tool cleans it up. It also fixes table formatting and highlights it, among other goodies. If you have Pygments installed, fenced code blocks will be highlighted. And if you&rsquo;re running the latest iTerm2 (beta), you can even view images inline. You can install it with (you may need to use depending on your setup). It&rsquo;s been tested on systems with Ruby 1.9 through 2.1. It should work on non-Mac systems, but I haven&rsquo;t tried it out. is a work in progress, but it&rsquo;s doing everything it was supposed to do already. Check the project page for more info",
		"keywords": ["markdown","readme","check","markdown","pygments","readme","terminal","among","available","blocks","cleans","colorizes","created","cruft","depending","document","documents","doing","easier","everything","fenced","files","fixes","formatting","goodies","haven","highlighted","highlights","iterm","images","including","inline","install","installed","latest","little","looks","mdash","often","opening","pages","pleasantly","project","quickly","rendered","rsquo","running","section","sections","seemed","setup","simple","single","slide","supposed","systems","table","tested","through","tried","utility","visor","wanted","window","working"]
	},{
		"title": "A Jekyll plugin for animated GIFs",
		"url": "/2015/08/20/a-jekyll-plugin-for-animated-gifs/",
		"tags": ["jekyll","plugin"],
		"date": "Aug 20<span>th</span>, 2015",
		"ts": "1440075600",
		"summary": "I put together a Jekyll plugin called GifTag which turns local gif references into a styled placeholder with play/pause and preloading. This allows a page to finish loading before transferring heavy animated gifs, and adds user control as to when they start playing (as well as allowing them to stop). You can pass in either a path to a JPEG or PNG poster image, or the GIF path, as long as both exist. If it&rsquo;s a GIF file, it will search for a JPG or PNG image with a matching path (but different extension). If neither of those are found, it can generate a poster frame for you with the ImageMagick package. There&rsquo;s some JavaScript and CSS you need to include (along with jQuery, unless you want to rewrite the click handler in something else) in order for it to work on the front end. Easy enough, though. Full details in my JekyllPlugins project on GitHub",
		"keywords": ["animation","format","graphics","interchange","javascript","optimization","giftag","github","imagemagick","javascript","jekyll","jekyllplugins","allowing","allows","animated","before","called","click","control","details","different","either","enough","exist","extension","finish","found","frame","front","handler","heavy","image","jquery","loading","local","matching","neither","outputs","package","pause","placeholder","playing","plugin","poster","preloading","project","references","rewrite","rsquo","search","simply","styled","syntax","together","transferring","turns"]
	},{
		"title": "Web Excursions for August 19, 2015",
		"url": "/2015/08/19/web-excursions-for-august-19-2015/",
		"tags": ["bookmarks"],
		"date": "Aug 19<span>th</span>, 2015",
		"ts": "1439992800",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Better BibTeX Cite As You Write Integration for Zotero++, Scrivener, and Marked 2. Shell Integration - iTerm2 The latest beta of iTerm2 (version 3) has some awesome new features. Nightly builds available. Unsplash It A service from Unsplash to generate placeholder images automatically with a simple url structure. Great photos. I think Placekitten might have broken, so this is my new go-to&hellip; Tufte CSS I love Tufte. This CSS, along with some basic classes and markup formatting, provides Tufte-compliant formatting for your text. Browser Fairy I&rsquo;ve been a Choosy user for a long time, but it&rsquo;s a dead project and I&rsquo;ve been watching for a replacement. This is working well for handling multiple web browsers based on user rules. Hat tip to TJ Luoma at MacStories. Take Control Books - Back To School Sale For all your Mac learning, Take Control Books are written by some excellent authors, and until August 24th, the entire catalog is 50% off. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["academic","browser","cascading","sheet","sheets","style","writing","backblaze","bibtex","books","browser","check","choosy","control","fairy","great","integration","luoma","macstories","marked","nightly","placekitten","school","scrivener","shell","tufte","unsplash","write","zotero","affordably","authors","automatically","available","awesome","backs","based","basic","broken","brought","browsers","builds","catalog","classes","cloud","compliant","computer","entire","everything","excellent","excursions","features","formatting","handling","hellip","iterm","images","latest","learning","markup","multiple","partnership","photos","placeholder","project","provides","reliably","replacement","rsquo","rules","securely","service","simple","structure","think","today","version","watching","working","written"]
	},{
		"title": "Marked 2.5 Sneak Peek",
		"url": "/2015/08/18/marked-2-dot-5-sneak-peek/",
		"tags": ["marked"],
		"date": "Aug 18<span>th</span>, 2015",
		"ts": "1439910000",
		"summary": "I&rsquo;ve been heads down on a few projects for a while now, but I&rsquo;m getting close to the release of the next update to Marked 2 (free to current users). There&rsquo;s been a lot of refactoring, refining, and some new features I think you&rsquo;ll like. I&rsquo;ve improved memory management and threading for faster rendering and statistics processing on long documents, as well as better stability for OS X 10.11 (El Capitan). You can also disable Readability and other advanced statistics generation when you don&rsquo;t need it. Among many other export improvements, you can now see in the preview where page breaks will be inserted in the output based on your export preferences (and any breaks added with Marked&rsquo;s internal syntax). The big one is Spelling and Grammar checking. I&rsquo;ve always loved Marked&rsquo;s ability to analyze readability, show oft-repeated words, and even highlight errors in phrasing and parts of speech, but have always been frustrated by the need to check spelling and grammar in one app, then everything else in Marked. The next update adds an in-app purchase which offers full spelling and grammar checking within the preview1. You can turn on spell check&mdash;and optionally grammar check&mdash;and see issues in your document with a full set of suggestions and descriptions. There are a lot of small fixes and improvements to the UI. As an example, the tear-off statistics panel looks better than ever, and provides a useful set of live document statistics while you work, even if Marked isn&rsquo;t visible. For a while now, the Help documentation has been mirrored between Apple&rsquo;s system and an independent internal web page. That&rsquo;s still the case, but instead of just launching a browser with the local HTML, I built a more complete help viewer with improved search and bookmarking capability. It also (and this was the main goal) allows easy deep-linking to specific topics through the URL handler, which allows me to provide contextual help more easily. The URL handler has some new tricks, too. This won&rsquo;t matter much to existing users, but there&rsquo;s a whole new setup process for first-run users. It offers a simple series of choices, two per page and never more than 3 deep, which allow Marked to set up a base configuration suitable to any user&rsquo;s needs. Users who&rsquo;ve already run Marked can still launch this from the help menu at any time. I enjoy adding useful features to Marked (maybe&hellip;",
		"keywords": ["markdown","marked","preview","among","apple","capitan","export","fountain","grammar","markdown","marked","mindnode","playground","readability","scrivener","spelling","system","users","working","xcode","ability","access","added","adding","advanced","allow","allows","amazingly","analyze","animated","apple","aside","autobook","automatically","awesome","backlink","based","because","between","booklets","bookmarking","breaks","brettterpstra","browser","building","built","capability","caption","check","checking","choices","class","close","coming","configuration","contextual","descriptions","deserves","designed","developer","difficult","digital","directions","disable","document","documents","easily","editable","endnotes","enjoy","errors","essential","everything","example","experience","export","extra","faster","feature","features","figure","first","fixes","fnref","footnote","footnotes","fountain","frame","frustrated","generation","getting","grammar","handle","handler","handling","happen","heads","height","hellip","hesitate","highlight","https","image","images","improve","improved","improvements","independent","indexing","inserted","internal","internalhelp","issues","itunes","kinks","latest","launch","launching","linking","links","loading","local","looking","looks","loved","management","marke","marked","maybe","mdash","media","memory","mindnode","mirrored","needs","noscript","noteref","offers","optional","optionally","original","output","overwhelming","pagebreak","panel","panes","parts","phrasing","picture","preferences","preview","process","processing","projects","proofing","proved","provides","quickstartlarge","readability","reading","refactoring","refining","release","rendering","repeated","revamp","reversefootnote","rsquo","scale","scrivener","search","series","setup","share","simple","simplified","small","sneakheader","source","specific","speech","spell","spellcheck","spelling","split","srcset","stability","statistics","statspanel","suggestions","suitable","support","swift","syntax","system","tabindex","think","threading","through","title","topics","tricks","undocumented"]
	},{
		"title": "Markdown Quicktags lives again",
		"url": "/2015/08/17/markdown-quicktags-lives-again/",
		"tags": ["markdown","quicktags","wordpress"],
		"date": "Aug 17<span>th</span>, 2015",
		"ts": "1439839800",
		"summary": "I have a renewed interest in my Markdown Quicktags project. It&rsquo;s a WordPress plugin that replaces the default \"text\" editor with an advanced Markdown editing tool. It broke with version 4.0 of WordPress, and I let it slide for a while because I&rsquo;m not using WordPress anymore. Now I&rsquo;m doing some blogging on sites that do use WordPress, and I was getting back into plugin development as a result, so I figured it was time to update this one. In addition to visual tweaks, WordPress&rsquo;s default Insert Media button now works (and inserts Markdown syntax instead of HTML), and the handling of emphasis tags is cleaner (and more intelligent). If you use the \"Quote\" command from the toolbar, it will now handle automatically quoting from the beginning of the current line, or for every line in a selection with smart indentation. If any of the lines in the selection are already quoted (), it will clear the quote syntax from the block. If you select text and make it bold, italic, or a code span, the resulting text will remain selected and the button will change to allow you to remove the formatting. In fact, if you select any text with format characters on both sides of it, the buttons will update to allow you to toggle that formatting off. There are a few other updates, and I&rsquo;ll be adding to it as I have time. Priority number one was restoring previous functionality, which should all be there now. For more information see the project page, and you can find the plugin in the WordPress plugins repository. Updates will show up automatically in your Dashboard",
		"keywords": ["javascript","plugin","wordpress","dashboard","markdown","media","priority","quicktags","quote","updates","wordpress","adding","advanced","allow","anymore","automatically","because","beginning","block","blogging","broke","button","buttons","change","characters","cleaner","clear","command","default","development","doing","editing","editor","emphasis","figured","format","formatting","functionality","getting","handle","handling","indentation","information","inserts","intelligent","interest","italic","plugin","plugins","project","quote","quoted","quoting","remove","renewed","replaces","repository","restoring","resulting","rsquo","selected","selection","sides","sites","slide","smart","syntax","toggle","toolbar","tweaks","updates","using","version","visual","while","works"]
	},{
		"title": "Ultimate typing productivity with TextExpander 5",
		"url": "/2015/08/13/textexpander-5-sponsor/",
		"tags": ["snippet","sponsor","support","textexpander"],
		"date": "Aug 13<span>th</span>, 2015",
		"ts": "1439463600",
		"summary": "Thanks to Smile and TextExpander 5 for their continued support of BrettTerpstra.com! TextExpander lets you create snippets ranging from simple replacements to powerful fill-ins with variable options, and then triggers them in any application while you type. The latest version, TextExpander 5, helps you type even faster by making suggestions of frequently-typed phrases to abbreviate and save time. TextExpander reminds you of missed opportunities to use your abbreviations while you&rsquo;re typing. Take your productivity with you by syncing your snippets among multiple devices (including iOS). You can store them anywhere on iCloud Drive or Dropbox. TextExpander 5 supports \"shell snippets,\" which let you create even more advanced snippets using shell scripting to automate a wide range of typing tasks. Version 5 also adds JavaScript support, which also works in TextExpander touch for iPad and iPhone",
		"keywords": ["abbreviation","productivity","smile","software","textexpander","brettterpstra","create","drive","dropbox","javascript","smile","textexpander","thanks","version","abbreviate","abbreviations","advanced","among","anywhere","automate","continued","create","customize","devices","effort","expand","faster","fragment","helps","hotkey","icloud","iphone","including","inline","latest","making","missed","multiple","opportunities","options","personalize","phrases","posts","powerful","productivity","quickly","range","ranging","reminds","repetitive","replacements","replies","rsquo","scripting","search","shell","simple","snippet","snippets","store","suggestions","support","supports","syncing","tasks","touch","triggers","typed","typing","using","variable","version","while","works"]
	},{
		"title": "ExtraInfo+ for TaskPaper, now with Wiki Links",
		"url": "/2015/08/11/extrainfo-plus-for-taskpaper-now-with-wiki-links/",
		"tags": ["applescript","productivity","taskpaper"],
		"date": "Aug 11<span>th</span>, 2015",
		"ts": "1439298000",
		"summary": "I published my version of Pedro Lobo&rsquo;s Extra Info script for TaskPaper a couple of years ago. ExtraInfo+ is a script that reads tags such as and in my TaskPaper tasks, and the tag value creates a link to an external note, mind map, outline, or whatever I need in order to expand on the topic. I trigger it with FastScripts and my brainstorming and extra details for the currently-selected TaskPaper item open instantly. I still use it almost every day, as it allows me to keep my coding projects in TaskPaper clean and readable, with all references, notes, and brainstorms externally linked. I also make a lot of use of in my notes and tasks, and then use services like nvWikiLinker to connect to notes in nvALT. I love the double bracket syntax because it&rsquo;s easy to use, and works in any app I can run a service in (I do it in my OmniFocus notes, too). I decided to combine the functionality into ExtraInfo+. I like to keep certain TaskPaper files in nvALT as well, so there&rsquo;s the added bonus that when I view them in nvALT, all of the wiki links are clickable. With the new version, you can put anywhere in the text of a task and it will be found when you trigger ExtraInfo+. That note pops open in nvALT (or whatever note/editor app you specify as the first option). If the note doesn&rsquo;t exist yet, it&rsquo;s created from a template. Also, it uses Notification Center for messages if Growl isn&rsquo;t running, which is a step up from . The new version of ExtraInfo+ is up on GitHub, and you can find usage instructions there as well. Note that there&rsquo;s a new (and not-yet-documented) property called which you can set to the common root of all configured paths. Then just use relative paths to the base in other variables. P.S. The routine for finding the WikiLinks is really simple, and a good chunk of code to keep around if you&rsquo;re still using AppleScript. It would be more fun in JavaScript, but I have a LOT of old AppleScripts around&hellip; Just pass it the left and right patterns, and it will return whatever is between them (or an empty string if not located). Example usage",
		"keywords": ["applescript","javascript","applescript","applescripts","center","example","extra","extrainfo","fastscripts","github","growl","javascript","notification","omnifocus","pedro","taskpaper","wikilinks","added","allows","almost","anywhere","because","between","bonus","bracket","brainstorming","brainstorms","called","certain","chunk","clean","clickable","coding","common","configured","connect","couple","created","creates","decided","details","documented","doesn","double","editor","empty","exist","expand","external","externally","extra","files","finding","first","found","functionality","hellip","instantly","instructions","linked","links","located","messages","notes","nvalt","nvwikilinker","outline","paths","patterns","projects","property","published","readable","reads","references","relative","return","right","routine","rsquo","running","script","selected","service","services","simple","specify","string","syntax","tasks","template","topic","trigger","usage","using","value","variables","version","whatever","works","years"]
	},{
		"title": "Web Excursions for August 10, 2015",
		"url": "/2015/08/10/web-excursions-for-august-10-2015/",
		"tags": ["bookmarks"],
		"date": "Aug 10<span>th</span>, 2015",
		"ts": "1439240340",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Stop Trying To Be Creative An interesting article shared with me by a reader. Discoveries in AI creativity and how they correlate to optimizing human potential. Automatic Generation of Text Extraction Patterns from Examples A pretty cool tool which lets you provide a list of strings you&rsquo;d like to find patterns in, and then returns a regular expression that will pass each example case. Speaking of regular expressions, Dr. Drang had a great post on regular expressions recently, and you can use it as a starting point to backtrack through the conversation. TomAnthony/itermocil Based on teamocil, itermocil lets you define groups of windows, panes, and executed commands for iTerm2 using YAML files. Python tutorial: A Beginner&rsquo;s Guide to Python If you&rsquo;re new to scripting (or programming in general), I&rsquo;ve come to believe that Python is the best starting point. This tutorial from Udemy is a good intro, and pairs well with the Learning Python Bundle from Mijingo. Swift Sandbox A newsletter on all things Swift programming from the developer behind MacDevWeekly. I&rsquo;ve greatly enjoyed getting his Objective-C oriented list of curated highlights from the developer world, so I&rsquo;m looking forward to this one.: All subscribers are automatically eligible to win one of 14 Swift Books in an August drawing. Details on the landing page",
		"keywords": ["expression","python","regular","automatic","based","beginner","books","bundle","check","creative","details","discoveries","drang","examples","extraction","generation","guide","learning","macdevweekly","mijingo","patterns","python","sandbox","setapp","speaking","swift","tomanthony","trying","udemy","access","article","automatically","backtrack","behind","believe","brought","commands","conversation","correlate","creativity","curated","define","developer","drawing","enjoyed","example","excursions","executed","expression","expressions","files","general","getting","great","greatly","groups","highlights","human","hundreds","iterm","interesting","intro","itermocil","landing","looking","monthly","newsletter","optimizing","oriented","pairs","panes","partnership","patterns","point","potential","programming","reader","recently","regular","returns","rsquo","scripting","shared","starting","strings","subscribers","subscription","teamocil","through","today","tutorial","using","windows","world"]
	},{
		"title": "FeedPress: Powerful RSS and podcast hosting and analytics",
		"url": "/2015/08/06/feedpress-powerful-rss-and-podcast-hosting-and-analytics/",
		"tags": ["sponsor"],
		"date": "Aug 6<span>th</span>, 2015",
		"ts": "1438858800",
		"summary": "Thanks to FeedPress for sponsoring BrettTerpstra.com this week. I use FeedPress for all of my RSS and podcasting needs, so I&rsquo;m happy to have their support! FeedPress is a simple, intuitive, and powerful RSS analytics and podcast hosting platform. We feature powerful subscriber and podcast download tracking, integrated newsletters, automated publishing to popular social networks such as Twitter and Facebook, a slick drag and drop podcast hosting interface, and everything you need in order to submit an optimized feed to iTunes. With 250MB of flexible file storage that rolls over monthly, you can easily upload 4 episodes per month. Upgrading storage is easy and affordable, starting at a flat rate of just $20 for 1GB. Let’s face it, you’ve probably thought about moving from the aging FeedBurner. FeedPress offers an automatic migration tool so you can make that transition with ease. Answer a few simple questions and the rest is taken care of. Your feeds and subscriber data will be transitioned into your FeedPress account, leaving you free to do focus on what you do best—make content. The perfect time is now to have all of your analytics and podcast hosting in a beautiful and unified dashboard. FeedPress offers free migration assistance and will take care of the hard work for you. Support is responsive and available 7 days a week via email. Get in touch so we can help!. FeedPress now serves more than 30 million requests per month and is trusted by many popular blogs and podcasting networks such as: GoodStuff, ESN, Mule Radio, Unprofessional, The New Disruptors, Beautiful Pixels, Inessential, Macgasm, The Brooks Review, 512Pixels, and of course Brett Terpstra. FeedPress: RSS analytics and podcast hosting, done right",
		"keywords": ["feedburner","itunes","podcast","answer","beautiful","bloggers","brett","brettterpstra","brooks","disruptors","facebook","feedburner","feedpress","goodstuff","history","inessential","macgasm","pixels","podcasters","radio","support","terpstra","terpstra","thanks","trial","twitter","unprofessional","upgrading","valet","account","affordable","aging","analytics","automated","automatic","available","beautiful","beautifulpixels","bloggers","blogs","brettterpstra","brooksreview","checkout","class","commitments","contact","content","contracts","dashboard","download","easily","email","episodes","everything","feature","feedpress","feeds","first","flexible","focus","goodstuff","happy","height","history","hosting","https","itunes","image","inessential","integrated","interface","intuitive","leaving","loading","macgasm","media","migration","million","monthly","moving","muleradio","needs","networks","newdisrupt","newsletters","nofollow","noscript","offers","optimized","original","picture","pixels","platform","podcast","podcasters","podcasting","popular","powerful","press","promo","publishing","questions","requests","responsive","right","rolls","rsquo","screenshot","serves","simple","slick","social","source","sponsoring","srcset","starting","storage","strong","subscriber","support","taken","terpstra","thought","title","today","touch","tracking","transition","transitioned","trial","trusted","unified","unprofesh","upload","uploads","valet","width"]
	},{
		"title": "Love thy neighbor",
		"url": "/2015/08/05/love-thy-neighbor/",
		"tags": ["humor","personal"],
		"date": "Aug 5<span>th</span>, 2015",
		"ts": "1438800540",
		"summary": "As an introvert with poor social skills and lack of desire for company most of the time, I&rsquo;m a bit of a hermit. I would love to live in a Walden-esque cabin, miles from civilization, but it&rsquo;s really hard to get decent internet out there. Instead, I live in a small neighborhood high up on a ridge in the small part of the upper Midwest that the glaciers missed. I live at the end of a cul-de-sac at the end of a series of turns that no one ever takes. My backyard goes into the forest that covers the drop down the side of the bluff. I have no neighbor one one side, and no windows visible to my neighbor on the other. I do have a neighbor on the other side, though, and he&rsquo;s an incorrigible idiot. We&rsquo;ve reached a point where pleasantries are no longer exchanged, and I can&rsquo;t imagine a better housing situation. I get the benefits of living within civilization without the need for interaction. It&rsquo;s gone even further than that, though, and developed into a cold war. I enjoy the problem solving aspect. He&rsquo;s passive with his aggression, but it&rsquo;s still blatant. I enjoy the challenge of coming up with appropriate, harmless retaliations. For example, he puts his political lawn signs right on the border of our lawns because he knew we strongly disagreed in that area. Simply stealing his signs wouldn&rsquo;t be sporting. The solution turned out to be easy. Simply constructing a taller, wider sign reading \"Don&rsquo;t vote for&hellip;\" with an arrow pointing down that we could position inches away on our side of the border did the trick. It was satisfying to note that his signs had been moved to the middle of his lawn within an hour1. I could go on about the fun we&rsquo;ve had ever since we gave up on being cordial. I&rsquo;ll simply say that I didn&rsquo;t like my neighbor at all when it was still ok to nod to each other and offer hollow, Minnesota greetings from driveway to driveway. Now that no face-to-face interaction is required, I&rsquo;m quite enjoying the battle of wits. Don&rsquo;t get me wrong, I enjoy talking to people. I do it a lot. My nightmare (when it comes to living arrangements), though, would be to really like people I have no buffer from. When my friends and I want to hang out, we can flake. We can make lame excuses, or we can just honestly say \"I&rsquo;m not feeling like it.\" But if that friend can just come knock on your door, everything falls apart. I love my neighbor for the moron that he is&hellip;",
		"keywords": ["introversion","midwestern","minnesota","mower","skills","social","states","united","midwest","minnesota","simply","walden","aggression","apart","appreciate","arrangements","arrow","aspect","backlink","backyard","battle","because","begins","benefits","blatant","bluff","border","brettterpstra","buffer","built","cabin","challenge","civilization","class","comes","coming","company","constructing","cordial","covers","decent","developed","disagreed","driveway","endnotes","enjoy","enjoying","especially","esque","everything","example","exchanged","excuses","falls","feeling","fence","flake","fnref","footnote","footnotes","forest","forth","friend","friends","glaciers","going","greetings","harmless","height","hellip","hermit","hollow","honestly","housing","https","idiot","image","imagine","inches","incorrigible","interaction","internet","introvert","knock","lawnmower","lawns","ldquo","living","loading","longer","mdash","media","middle","miles","missed","moron","moved","mower","neighbor","neighborhood","nightmare","noscript","noteref","offer","original","overtired","passive","people","picture","pleasantries","point","pointing","political","position","problem","provides","rdquo","reached","reading","required","retaliations","reversefootnote","rides","ridge","riding","right","rsquo","satisfying","series","signs","simply","since","situation","skills","small","social","solution","solving","source","sporting","srcset","stealing","strongly","summer","systematic","takes","talking","taller","thought","title","together","trick","turned","turns","uploads","upper","valley","visible","where","whole","wider","width","windows","within","working","world","wouldn","wrong"]
	},{
		"title": "Harvest: Get a handle on your time tracking",
		"url": "/2015/08/01/harvest-get-a-handle-on-your-time-tracking/",
		"tags": ["sponsor"],
		"date": "Aug 1<span>st</span>, 2015",
		"ts": "1438434000",
		"summary": "Thanks to Harvest for sponsoring BrettTerpstra.com this week! As a developer, it&rsquo;s incredibly frustrating when a client swoops in at the last minute and asks for one more thing. Do you know how much time you&rsquo;re spending on every feature, tweak, or bug fix? Harvest is a time tracking tool built for understanding where your time is going. And for developers, it takes the pain out of time tracking. You can start a timer from pull requests or issues in GitHub or JIRA without searching for your timesheet. Not only will you understand how much time you&rsquo;re spending on client work, you&rsquo;ll be able to turn billable hours into an invoice from Harvest in minutes. Harvest integrates with PayPal and Stripe to make it easy to get paid. Create a free 30-day trial, and get a handle on all your projects",
		"keywords": ["asana","atlassian","basecamp","github","timesheet","brettterpstra","create","github","harvest","paypal","sponsored","stripe","syndicate","thanks","billable","built","client","developer","developers","feature","frustrating","going","handle","hours","incredibly","integrates","invoice","issues","minute","minutes","projects","requests","rsquo","searching","spending","sponsoring","swoops","takes","timer","timesheet","tracking","trial","tweak","understand","understanding","where"]
	},{
		"title": "Web Excursions for July 30, 2015",
		"url": "/2015/07/30/web-excursions-for-july-30-2015/",
		"tags": ["bookmarks","music","shuttle"],
		"date": "Jul 30<span>th</span>, 2015",
		"ts": "1438263180",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Willing I&rsquo;ve always thought there should be a free and easy way to create a legal will. Here it is. The Second Coming of Nozbe for Apple Watch Nozbe remains a top-notch project management and collaborative todo list solution, and their focus on the Apple Watch is paying off. Loose Leaves Instantly create hosted, shareable pages from selected Markdown with a keyboard shortcut on OS X. It&rsquo;s handy for use with Twitter and other social platforms, as well as with Slack and general collaboration tools. Night Stand for Apple Watch from ElevationLab This elegant piece stands out because horizontal orientation is going to be important after the next WatchOS update. I&rsquo;ve been planning a wood version of something similar to go along with the Shuttle. Speaking of&hellip; The Shuttle &ndash; Never lose your Apple Remote again The Shuttle (in Natural, Golden Oak, and Walnut) is now permanently priced at $39.99. That seems to be the best price point to cover labor cost and still offer a reasonable price. Pick one up! sdegutis/music From Steven Degutis, creator of the choose utility and other goodies I&rsquo;ve mentioned before. is a command line, JSON-based music player for OS X, perfect for integration into scripts. A GUI is planned for the future",
		"keywords": ["apple","hardware","store","utility","watch","apple","cleanmymac","coming","degutis","elevationlab","golden","instantly","leaves","loose","markdown","natural","night","nozbe","remote","second","shuttle","slack","speaking","stand","steven","twitter","walnut","watch","watchos","willing","again","based","because","before","brought","choose","collaboration","collaborative","command","cover","create","creator","elegant","excursions","focus","general","going","goodies","handy","hellip","horizontal","hosted","important","integration","keyboard","labor","legal","management","mentioned","music","ndash","notch","offer","orientation","pages","partnership","paying","permanently","piece","planned","planning","platforms","player","point","price","priced","project","reasonable","remains","rsquo","scripts","sdegutis","seems","selected","shareable","shortcut","similar","social","solution","speed","stands","thought","tools","utility","version"]
	},{
		"title": "In defense of pessimism",
		"url": "/2015/07/24/in-defense-of-pessimism/",
		"tags": ["personal"],
		"date": "Jul 24<span>th</span>, 2015",
		"ts": "1437754320",
		"summary": "There are a lot of catchy clichés describing how optimism is the light of the world, and how pessimism is evil creeping into your thinking. Seeing a glass as half empty, though, is not a negative outlook. It&rsquo;s a realistic assessment of a limited resource. I&rsquo;m an incorrigible optimist. It&rsquo;s served me well, for the most part. I&rsquo;m always willing to take a gamble, and I&rsquo;m usually satisfied with the outcome. When deciding to go indie, I did my best to tally up my potential sources of income, marking both the highest and lowest possibilities to weigh the options. Thus far I&rsquo;ve hit a fair medium. I have projects in the work that I forecast will make things even better, and I&rsquo;ve staked a lot of my time into bringing them to fruition. A lot of my time at the expense of more immediately fruitful pursuits. My wife is what I think most of the clichés would deem a pessimist. I wouldn&rsquo;t be able to do what I do without her. For every wild idea I plan out, she reminds me of the realistic outcomes, backed with historical data. If it weren&rsquo;t for the tempering quality of having \"pessimists\" around, I&rsquo;d be living in a tiny apartment, buried in debt, and likely friendless. I prefer to think of them as realists. If a glass is half full, you&rsquo;re celebrating the abundance of what the glass still contains, which leads to a more carefree approach to savoring the remaining contents. If you see it as half empty, you might savor it even more, being conscious of the fact that no matter how much is left, it&rsquo;s less than you started with. I sometimes envy that realistic view. I like being an optimist, but I take a guarded stance on the matter. When untreated, my bi-polar disorder gives me the occasional &mdash; albeit skewed &mdash; idea of how crippling pessimism can be, and the damage that optimism can cause. These extremes aren&rsquo;t indicative of much in the real world, but they do give me the impression that optimism is more fun. But my life has proven again and again that the balance between the two is the sweet spot. Maybe the world would work better if we were all both, but I think that being able to focus on wild ideas &ndash; unencumbered by reality and previous failures &ndash; is something that can only be achieved by an individual who just isn&rsquo;t affected by those facts and that data. And being the force that prevents suicidal leaps is better left to those who can own the responsibility&hellip;",
		"keywords": ["optimism","pessimism","facebook","insanely","maybe","optimism","pardon","seeing","achieved","affected","affirmations","again","albeit","apartment","approach","assessment","backed","balance","before","between","brettterpstra","bringing","buried","cancel","carefree","catchy","cause","celebrating","chance","class","clich","complementing","conscious","considered","contains","contents","creeping","crippling","damage","deciding","describing","disorder","empty","encrypted","enlightened","evolve","expense","experiment","extremes","facts","failures","focus","force","forecast","friendless","fruitful","fruition","gamble","gives","glass","google","guarded","halves","having","height","highest","historical","however","https","human","ideas","image","implying","impression","income","incorrigible","indicative","indie","individual","innovation","insane","inspirational","ldquo","leads","leaps","light","likely","limited","living","loading","lowest","major","marking","mdash","media","medium","ndash","negative","noscript","noticed","occasional","optimism","optimist","optimistic","options","original","ourselves","outcome","outcomes","outlook","people","personalities","pessimism","pessimist","pessimists","philosophical","picture","point","polar","possibilities","potential","prefer","prevents","projects","proven","pursuits","quality","quotes","rdquo","reading","realistic","realists","reality","remaining","reminds","resource","responsibility","rsquo","satisfied","savor","savoring","search","served","shining","sides","skewed","sometimes","source","sources","srcset","staked","stance","started","strive","suicidal","tally","tempering","think","thinking","tired","title","token","toward","unencumbered","untreated","uploads","usually","weigh","weren","while","width","willing","world","wouldn"]
	},{
		"title": "Learn by Doing with Code School",
		"url": "/2015/07/23/learn-by-doing-with-code-school/",
		"tags": ["sponsor"],
		"date": "Jul 23<span>rd</span>, 2015",
		"ts": "1437649200",
		"summary": "Thanks to Code School for sponsoring BrettTerpstra.com this week! Code School is an online learning destination for existing and aspiring developers that teaches through entertaining content. Each course is built around a creative theme and storyline so that it feels like you’re playing a game, not sitting in a classroom. We combine gaming mechanics with video instruction and in-browser coding challenges that make learning both educational and memorable. With more than 40 courses covering JavaScript, HTML/CSS, Ruby, Git, and iOS, Code School pairs experienced instructors with meticulously produced, high-quality content inspired by our community and network of members. Coding skills have never been in higher demand, but traditional computer science courses are often costly, time consuming, and lack the flexibility many people demand. Meanwhile, technology is moving quicker than ever and to stay current, many developers must constantly be learning new skills outside of their day jobs. This has left room for new approaches to code education. In our opinion, the best way to learn is by doing. Code School opens the door to a new way of learning by combining high-quality video, in-browser coding, and gamification to make learning fun",
		"keywords": ["angularjs","education","github","javascript","school","brettterpstra","coding","inspiration","javascript","meanwhile","school","sponsored","syndicate","thanks","vsayd","approaches","aspiring","blockquote","brettterpstra","browser","built","challenges","class","classroom","codeschool","coding","combining","community","computer","constantly","consuming","content","costly","courses","covering","creative","demand","destination","developers","doing","education","educational","entertaining","experienced","feels","flexibility","gamification","gaming","height","higher","https","image","inspiration","inspired","instruction","instructors","learn","learning","loading","mechanics","media","members","memorable","meticulously","million","moving","network","nofollow","noscript","often","online","opens","original","outside","pairs","people","picture","playing","produced","quality","quicker","science","sitting","skills","source","sponsor","sponsoring","srcset","started","storyline","strong","teaches","technology","theme","through","title","today","traditional","uploads","video","width","world"]
	},{
		"title": "Web Excursions for July 20, 2015",
		"url": "/2015/07/20/web-excursions-for-july-20-2015/",
		"tags": ["bookmarks"],
		"date": "Jul 20<span>th</span>, 2015",
		"ts": "1437423420",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. I&rsquo;m buried in development work on a new version of Marked 2 (I&rsquo;ll post more about the updates soon), the commercial replacement for nvALT (more on that closer to release), and some important side projects, so my posting rate has been a little lower lately. It will ramp back up soon. I&rsquo;ve also been writing at MacStories, and posted reviews of Typed for Mac and Dash 3 last week. Keep an eye out there for more news and reviews, including one of the new version of Tembo that came out last week. And then there are the podcasts. Systematic is going strong and has had some great guests since the last time I mentioned it. Rather than list them all (and some upcoming gems), I&rsquo;ll refer you to the ESN page. Keep listening! Overtired had a couple of weeks off between WWDC and Christina&rsquo;s packed schedule of interviewing amazing people, but the latest episode is packed with fun conversations on tech and pop culture, with plenty of movie reviews. It should be out in the next day or two, so keep an eye out! By the way, I&rsquo;m planning to start a subscription newsletter soon, and all supporting members will have access. The newsletter will include answers to member questions, bonus \"web excursions,\" and more, but everything I&rsquo;ve always posted on this blog will continue to be provided for free. Feeder 3.0 Now Available Feeder is an extremely useful app for building RSS feeds, including podcast enclosures and Sparkle XML feeds for software updates. Version 3 is great, so if you&rsquo;re in need of a really simple way to create custom feeds, check it out. Balloon Balloon is a drop box for your Dropbox. Share your Balloon to receive files straight to your Dropbox. There&rsquo;s no signup for senders, just share a link. Palette Gear: Hands-on Control of your Favourite Software Snap-together sliders, dials and buttons for intuitive, precise and custom control of your software. These look like a blast. Get The New BitTorrent Sync API I hope to see more apps start integrating Bittorrent Sync. The first major integration is OneHub. Octopress 3.0 is coming This is looking great. My system has diverged enough that I probably won&rsquo;t be able to implement a lot of it without some re-working, but if you&rsquo;re looking at Jekyll, be sure to try out Octopress 3 in the&hellip;",
		"keywords": ["interface","programming","available","balloon","bittorrent","bittorrent","check","christina","control","dropbox","favourite","feeder","hands","jekyll","macstories","marked","octopress","onehub","overtired","palette","rather","setapp","share","software","sparkle","systematic","tembo","typed","version","access","amazing","answers","between","blast","bonus","brought","building","buried","buttons","check","closer","coming","commercial","continue","control","conversations","couple","create","culture","custom","development","dials","diverged","enclosures","enough","episode","everything","excursions","exploration","feeds","files","first","going","great","guests","hundreds","important","including","integrating","integration","interviewing","intuitive","latest","listening","little","looking","lower","major","member","members","mentioned","monthly","movie","newsletter","nvalt","packed","partnership","people","planning","plenty","podcast","podcasts","posted","posting","precise","process","projects","questions","receive","release","replacement","reviews","rsquo","schedule","senders","share","signup","simple","since","sliders","software","straight","strong","subscription","supporting","system","today","together","upcoming","updates","useful","version","weeks","working","writing"]
	},{
		"title": "17 Incredible Fonts for Free [sponsor]",
		"url": "/2015/07/16/17-incredible-fonts-for-free-sponsor/",
		"tags": ["sponsor"],
		"date": "Jul 16<span>th</span>, 2015",
		"ts": "1437044400",
		"summary": "Thanks to WebDesignerNews for sponsoring BrettTerpstra.com this week! No matter what kind of designer you are, you love a good font. Even better is a good free font. So we’ve combed the Web for some of our favorite free fonts, and gathered them here in a single download. You’ll find a variety of useful typefaces, from highly geometric designs to elegant cursive scripts, from modern minimalism to traditional text faces. Metrica, an all-caps sans serif Nickainley, a slanted script face that mimics neat handwriting Oraniebaum, a modern serif for authoritative body text Rodina, a gemotrically constructed sans serif Grafter, an unusual typeface inspired by growing plants And many more",
		"keywords": ["akzidenz","arial","calibri","cursive","grotesk","serif","typeface","brettterpstra","download","grafter","metrica","nickainley","oraniebaum","rodina","thanks","webdesignernews","authoritative","brettterpstra","btfreefontbundle","bundle","class","combed","constructed","cursive","designer","designs","download","elegant","faces","favorite","fontbundle","fonts","gathered","gemotrically","geometric","growing","handwriting","height","highly","https","image","inspired","loading","media","mimics","minimalism","modern","nofollow","noscript","original","picture","plants","script","scripts","serif","single","slanted","source","sponsor","sponsoring","srcset","title","today","traditional","typeface","typefaces","unusual","uploads","useful","variety","webdesignernews","width"]
	},{
		"title": "Web Excursions for July 13, 2015",
		"url": "/2015/07/13/web-excursions-for-july-13-2015/",
		"tags": ["bookmarks"],
		"date": "Jul 13<span>th</span>, 2015",
		"ts": "1436792400",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Ghostnote This is a pretty amazing idea. Contextual notes for any file, folder, or website. Every time you open it, it shows the notes for the current context. Cheaters LaunchBar Action A LaunchBar action for Cheaters. Getting my Daily To Do List Out of OmniFocus Jason Verly created a nifty way to get things done using OmniFocus, a bit of scripting, and Marked 2. HOKO - Mobile deep linking simplified A handy framework for easily implementing deep links in iOS 9 and Android apps, including metrics. STAMP - import Spotify playlist to Apple Music easily This app takes a while to process a large library, but being able to dump my Spotify playlists into Apple Music is making doing a real comparison much easier. Note that it imports songs from playlists, but doesn&rsquo;t recreate the actual playlist. GottaBeMobile offers some tips for finishing the job. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["cheat","cheaters","ghostnote","launchbar","playlist","sheet","spotify","action","android","apple","cheaters","check","contextual","daily","getting","ghostnote","gottabemobile","jason","launchbar","marked","mindmeister","mobile","music","omnifocus","stamp","spotify","verly","action","amazing","boosting","brainstorming","brought","collaborating","collaborative","comparison","context","created","doesn","doing","easier","easily","excursions","finishing","folder","framework","handy","implementing","import","imports","including","library","linking","links","making","mapping","metrics","nifty","notes","offers","partnership","playlist","playlists","process","productivity","recreate","rsquo","scripting","shows","simplified","software","songs","takes","using","website","while"]
	},{
		"title": "Shell Tricks: .inputrc binding fun",
		"url": "/2015/07/09/shell-tricks-inputrc-binding-fun/",
		"tags": ["terminal"],
		"date": "Jul 9<span>th</span>, 2015",
		"ts": "1436468400",
		"summary": "If you&rsquo;ve never explored Bash&rsquo;s file, there&rsquo;s a lot of customization you can do in there. From setting completion and Readline options to creating custom keybindings, you can greatly improve your command line efficiency with a little tweaking. This post is about the latter: custom bindings. Much like OS X keybindings, input keybindings can perform any of the Readline functions, or insert your own text. Using control sequences, you can do things like wrap the existing command, insert common snippets, and perform a variety of completion functions. As an example of text navigation bindings, you&rsquo;ll commonly see these: The first part (before the colon) is the keybinding, the second half is the command. In this case, they&rsquo;re Readline commands for moving the cursor by word. represents the Option key (Alt on a PC), and the escape sequences after them are for the left and right arrow keys. This pair allows you to move the cursor left and right by word boundaries using Option-Left and Option-Right. The Bash reference at Gnu.org offers a complete listing of escape sequences and Readline functions. To get more interesting, here are a couple examples of modifying the current command using keybindings. You can add these to the file, then run to source them immediately. (This file is sourced by Bash on login, so in the future you won&rsquo;t need to do anything to use them.) This is great right after you run an extract (tar, unzip, etc.) to a folder or command. Pressing it right away will change to the folder where you extracted or cloned to and give you a directory listing. The represents the enter key, but you can also use for the same result. This one is simple: when Option-z is pressed, run to return to the previous directory. Again, the presses Enter after inserting the command text so that it runs immediately. Using Readline/Emacs control sequences such as Control-a (beginning of line) and Control-e (end of line), You can move the cursor around as you insert text from a macro. This one jumps to the beginning, inserts some text, then jumps to the end to insert some more text, then jumps back to the beginning to leave the cursor in a position for editing: It assigns Option-Return to wrap the current line as an inline command substitution, and places the cursor back at the beginning. So if the command you type will have output that you want to do something else with, you can hit Option-Return and then type the&hellip;",
		"keywords": ["command","emacs","emulator","escape","interface","keyboard","sequence","shortcut","terminal","again","automatically","because","bonus","composer","control","emacs","enter","maybe","modify","multimarkdown","pressing","readline","return","returns","right","terminal","using","added","ahead","allows","argument","arrow","assigns","because","before","beginning","bindings","boundaries","certain","change","cloned","colon","command","commands","common","commonly","contents","control","couple","creating","cursor","custom","customization","default","directory","editing","efficiency","enabled","enter","escape","example","examples","expand","expansion","explored","extract","extracted","finder","first","folder","followed","functions","fuzzy","going","great","greatly","history","ideas","improve","index","inline","input","inputrc","inserting","inserts","interactive","interesting","jumps","keybinding","keybindings","latter","leave","lesser","listing","little","login","macro","magic","matched","modifying","moving","navigation","offers","opened","operator","operators","options","output","pipes","places","position","prefixed","press","pressed","presses","pressing","prevent","print","repeat","replace","represents","resulting","return","returning","right","rsquo","running","search","second","selection","sequences","setting","shell","simple","single","slash","snippets","source","sourced","space","substitution","target","trick","tweaking","typed","typing","unzip","using","utility","variety","whatever","where","whichever"]
	},{
		"title": "Faster, smarter typing with TextExpander 5",
		"url": "/2015/07/09/faster-smarter-typing-with-textexpander-5/",
		"tags": ["snippet","sponsor","textexpander"],
		"date": "Jul 9<span>th</span>, 2015",
		"ts": "1436439600",
		"summary": "Thanks to Smile and TextExpander 5 for sponsoring BrettTerpstra.com this week! TextExpander has been a vital part of my workflow on every Mac I&rsquo;ve ever owned, and version 5 does not disappoint. TextExpander helps you type faster by allowing you to define abbreviations that expand into text, rich text, or even images when you type them. Version 5 speeds up your typing even more by letting you know when you repeat frequently-typed phrases, and making it easy to add abbreviations for them. TextExpander 5 also reminds you of missed opportunities to use your existing abbreviations while you&rsquo;re typing. Sync your snippets across multiple devices, storing them anywhere on iCloud Drive or Dropbox. TextExpander 5 adds support for JavaScript, which also works in TextExpander touch for iPad and iPhone",
		"keywords": ["dropbox","icloud","iphone","javascript","smile","snippet","textexpander","brettterpstra","create","drive","dropbox","javascript","smile","textexpander","thanks","version","yosemite","abbreviations","across","allowing","anywhere","define","devices","disappoint","effort","expand","faster","fragment","helps","hotkey","icloud","iphone","images","inline","letting","making","missed","multiple","opportunities","owned","personalize","phrases","quickly","reminds","repeat","repetitive","replies","requires","rsquo","search","snippet","snippets","speeds","sponsoring","standardize","storing","support","touch","typed","typing","version","vital","while","workflow","works"]
	},{
		"title": "Web Excursions for July 06, 2015",
		"url": "/2015/07/06/web-excursions-for-july-06-2015/",
		"tags": ["bookmarks"],
		"date": "Jul 6<span>th</span>, 2015",
		"ts": "1436198400",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Safari is(&lsquo;nt?) the new IE A post from Nolan Lawson titled Safari is the new IE set off a discussion of Safari&rsquo;s development, broaching a concern I&rsquo;ve had for a while now. Jason Snell offers a measured response in Web developers are grumpy about Safari Rene Ritchie offers a rebuttal in Safari isn&rsquo;t the new IE: it&rsquo;s the user-centric web Nolan follows up with Safari is the new IE 2: Revenge of the Linkbait iPhone, iPad, Mac Buyer&rsquo;s Guide: Know When to Buy MacRumors offers a very handy guide showing average product cycles and time since last release, aiding buyers in deciding the timing of a purchase of a given line of Apple products. What&rsquo;s Victor Agreda Jr. Going to Do Next? I&rsquo;m a fan of Victor Agreda Jr., comedian, thinker, and former editor-in-chief of The Unofficial Apple Weblog. His personality is edgy and raw, and one to which I&rsquo;ve always been able to relate. This article from his hometown newspaper was a great read. There&rsquo;s a good Systematic episode with Victor, as well. Zuli Smartplug Presence Pack I haven&rsquo;t had a chance to try these out yet (they start shipping in 6-8 weeks), but it might be a leap forward in my decade-long quest for accurate proximity detection for home automation. TinyWord This looks like a good Word/Pages alternative for people who want true rich text editing. Inexpensive at $1.99. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["apple","iphone","macrumors","safari","store","agreda","apple","backblaze","buyer","check","going","guide","inexpensive","jason","lawson","linkbait","macrumors","nolan","pages","presence","revenge","ritchie","safari","smartplug","snell","systematic","tinyword","unofficial","victor","weblog","accurate","affordably","aiding","article","automation","average","backs","broaching","brought","buyers","centric","chance","chief","cloud","comedian","computer","concern","cycles","decade","deciding","detection","developers","development","discussion","editing","editor","entire","episode","everything","excursions","follows","former","great","grumpy","guide","handy","haven","hometown","iphone","looks","lsquo","measured","newspaper","offers","partnership","people","personality","product","products","quest","rebuttal","relate","release","reliably","response","rsquo","securely","shipping","showing","since","thinker","timing","titled","today","weeks","while"]
	},{
		"title": "CodeReminder: don't forget to play",
		"url": "/2015/07/03/codereminder-dont-forget-to-play/",
		"tags": ["macos","terminal"],
		"date": "Jul 3<span>rd</span>, 2015",
		"ts": "1435928400",
		"summary": "I put together a little utility this morning to help me remember what GitHub repositories I&rsquo;ve grabbed with the intention of playing with later. I often clone or fork a repo and plan to explore it over a weekend, but then quickly forget about it if I don&rsquo;t add a reminder. CodeRemind works with Reminders.app and/or OmniFocus. When you run it with no arguments, it will add a Reminders.app task to a \"Code Reminders\" list, using the base name of the current folder as the title, with the full file path as a note. You can use (reminder) and/or (OmniFocus task), add an additional note (), and optionally provide a custom path to override the use of . The default type and the name of the list/project can be configured in the script. Configuration and usage details are available on the project page. I could come up with a Pinboard system to deal with this, but making it work the way I want would require deleting bookmarks, removing a \"playwith\" tag, or adding a \"playedwith\" tag to simulate a checklist, and that&rsquo;s extra work with potential messiness. I could also use a TaskPaper list, but my current system uses TaskPaper documents per-project, and overarching tasks are added to OmniFocus (or doing if I&rsquo;m actively pursuing them). This system just provides tidy checklists for things I might get around to but which have no real urgency. It&rsquo;s just a temporary bookmarking system",
		"keywords": ["github","omnifocus","programming","reminders","source","taskpaper","coderemind","codereminder","configuration","github","omnifocus","pinboard","reminders","taskpaper","actively","added","adding","arguments","available","bookmarking","bookmarks","checklist","checklists","clone","configured","custom","default","deleting","details","documents","doing","explore","extra","folder","forget","grabbed","intention","later","little","making","messiness","morning","often","optionally","overarching","override","playedwith","playing","playwith","potential","project","provides","pursuing","quickly","remember","reminder","removing","repositories","rsquo","script","simulate","source","system","tasks","temporary","title","together","urgency","usage","using","utility","weekend","works"]
	},{
		"title": "iTunes affiliate linking made easy with Blink for iOS",
		"url": "/2015/07/02/itunes-affiliate-linking-made-easy-with-blink-for-ios/",
		"tags": ["sponsor"],
		"date": "Jul 2<span>nd</span>, 2015",
		"ts": "1435834800",
		"summary": "Thanks to Blink for sponsoring BrettTerpstra.com this week! Blink: Better Affiliate Links is for anyone who has ever linked to an app, book, TV show, music or movie and would like to earn money doing so. With the iTunes affiliate program you can make money by linking to media on the iTunes Store, the iOS App Store, the Mac App Store and the iBook Store, but creating affiliate links is a pain on iOS. Blink eliminates the friction by saving your affiliate credentials and other preferences so they&rsquo;re always available, making afilliate linking a snap. With Blink you can make a link to share with just one person or a thousand; it&rsquo;s easy either way. Blink converts existing itunes.apple.com, appsto.re, itun.es, tw.appstore.com, tw.itunes.com, apple.co, appstore.com and itunes.com links into affiliate links that earn you money whenever people click them and buy anything from iTunes. If you don&rsquo;t already have a link, Blink can search across Mac and iOS apps, film, TV, music, audiobooks and iBooks all at once, making it easy to grab the link you want. Blink also supports three Markdown link formats, so writers can choose one that fits their writing style best. Blink&rsquo;s secret weapon is its extension and URL scheme, which let you link from within other apps without interrupting your work, as well as integrate it into other workflows. Here&rsquo;s a peek at two new features coming in Blink 1.1: The ability to generate geo.itunes.apple.com links, reducing errors for users clicking from outside your home country Support for provider ID tokens that app developers can add to their affiliate links to track the performance of their apps using iTunes Connect Analytics Blink: Better Affiliate Links is the most recent iOS app from Squibner, an independent iOS development company based in Hinsdale, Illinois. Grab it on the iTunes App Store for $4.99 (US) and start monetizing your link sharing today",
		"keywords": ["apple","iphone","itunes","store","affiliate","analytics","blink","brettterpstra","connect","hinsdale","illinois","links","markdown","squibner","store","support","thanks","ability","across","affiliate","afilliate","anyone","apple","appsto","appstore","audiobooks","available","based","choose","click","clicking","coming","company","converts","country","creating","credentials","developers","development","doing","either","eliminates","errors","extension","features","formats","friction","ibook","ibooks","itunes","independent","integrate","interrupting","itunes","linked","linking","links","making","media","monetizing","money","movie","music","outside","people","performance","person","preferences","program","provider","recent","reducing","rsquo","saving","scheme","search","secret","share","sharing","sponsoring","style","supports","thousand","today","tokens","track","users","using","weapon","whenever","within","workflows","writers","writing"]
	},{
		"title": "Paragraph unwrap update for Markdown Service Tools",
		"url": "/2015/06/29/paragraph-unwrap-update-for-markdown-service-tools/",
		"tags": ["markdown","markdownservices","service"],
		"date": "Jun 29<span>th</span>, 2015",
		"ts": "1435582800",
		"summary": "I&rsquo;ve updated the \"Paragraphs - unwrap\" service in the Markdown Service Tools. This Service is designed to take text formatted with line breaks within paragraphs (used for visual formatting and console readability), and combine consecutive lines into flowed text, allowing better formatting when automatic wrapping is enabled in an editor. Flowed text also prevents issues between Markdown processors that vary in dealing with handling of line breaks. Previously, the unwrap Service required that you selected only blocks of paragraph text, as it would otherwise unwrap everything and break code blocks, lists, and other Markdown syntaxes. The new version allows you to select the entire document contents and preserves important formatting, unwrapping only paragraphs and items that are easily distinguished as paragraph format. In my opinion this is just good formatting, but also prevents paragraphs from being wrapped into headlines. Preserves indented and fenced code blocks Handles definition lists Lines preceded by a colon will be wrapped, but multiple definitions will remain separated. Preserves both indented and fenced (backtick) code blocks Because paragraphs can be nested within lists with various levels of indentation and bordering newlines, determining what should be combined is difficult, so they&rsquo;re ignored. Preserves reference links and footnotes, but&hellip; It&rsquo;s assumed that if you&rsquo;re unwrapping, you want to combine all lines regardless of previous formatting",
		"keywords": ["paragraph","unwrap","because","caveats","download","flowed","footnotes","handles","ignores","markdown","paragraphs","preserves","previously","separates","service","tools","allowing","allows","assumed","automatic","backtick","between","blocks","bordering","break","breaks","colon","consecutive","console","contents","dealing","definition","definitions","designed","determining","difficult","distinguished","document","easily","editor","elements","enabled","entire","everything","fenced","first","flowed","footnotes","format","formatted","formatting","handling","headlines","hellip","ignored","important","indentation","indented","issues","items","levels","links","lists","multiple","nested","newlines","paragraph","paragraphs","preceded","preserves","prevents","processors","project","readability","regardless","required","respected","rsquo","selected","separated","service","shebang","spaces","syntaxes","unwrap","unwrapping","updated","various","version","visual","whole","within","wrapped","wrapping"]
	},{
		"title": "NerdUsefully update: The Shuttle vs. Foster Dogs",
		"url": "/2015/06/28/nerdusefully-shuttle-v-foster/",
		"tags": ["humor","nerdusefully","shuttle"],
		"date": "Jun 28<span>th</span>, 2015",
		"ts": "1435510140",
		"summary": "NerdUsefully, Winona MN USA: It has come to our attention that our product The Shuttle, despite extended testing prior to release, cannot withstand extended exposure to untrained foster dogs. We are sharing this information as a service to current and potential owners of the device. Under prolonged exposure to canine jaw pressure, the wooden material that comprises the majority of the handcrafted Apple Remote holder can suffer structural damage. This issue has only been seen in one instance to date, helpfully demonstrated to us by Shuttle user \"Brooklyn,\" a recent intake to the MN Pit Stop rescue. The overall integrity of the remote holder remained intact, but the cosmetic condition was compromised. The remote was not harmed in any way, thanks to the protective shell that The Shuttle provides. The user was entirely unscathed, and was able to resume normal activity &mdash; sleeping on the couch, sleeping on dog beds, and enthusiastic interactions with other residents &mdash; immediately following the incident. While NerdUsefully does not plan to recall the product, we will be providing \"bumpers\" to current customers to mitigate any issues. Please note that these will not actually fit on The Shuttle, as they are left over from AntennaGate and designed for the iPhone 4. Also, we will not actually be providing bumpers. However, we would like to extend an offer to potential customers who foster dogs, and also to those who think that fostering dogs is (or might be) a noble cause and are willing to pretend that they do so in order to get a discount. Use the coupon SUREIFOSTERDOGS at NerdUsefully for a $20 discount, and thank you for your real or pretend service to these animals. Our special thanks to Brooklyn for bringing this issue to light, and we congratulate her on her valiant recovery from the skin conditions and obesity that she was suffering from when she first entered foster care. While highly discouraged, The Shuttle has withstood use as a pacifier by young humanoids with excellent results, but &mdash; while not included in our field testing thus far &mdash; the unit may be susceptible to damage by domesticated birds. We have found that very few substances can withstand onslaught by the tomia of avian mandibular attack without damage, ranging from costmetic to complete molecular destruction. In the interest of avoiding conflict in our work environment, the company takes no official stance on birds as pets. For more information about&hellip;",
		"keywords": ["apple","foster","nerdusefully","remote","shuttle","antennagate","apple","brooklyn","however","nerdusefully","remote","sureifosterdogs","shuttle","under","while","winona","activity","animals","announcement","applied","attack","avian","avoiding","aware","birds","bringing","bumpers","canine","cannot","cause","checkout","chewable","company","comprises","compromised","conditions","conflict","congratulate","cosmetic","costmetic","couch","coupon","customers","damage","demonstrated","designed","destruction","device","devices","discount","discouraged","domesticated","enough","enter","entered","enthusiastic","entirely","environment","excellent","excellently","exposure","extend","extended","field","first","flagship","foster","fostering","found","handcrafted","harmed","helpfully","highly","holder","humanoids","iphone","immediate","incident","included","information","instance","intact","intake","integrity","interactions","interest","issues","light","mandibular","mdash","mitigate","molecular","noble","normal","obesity","offer","official","onslaught","overall","owners","pacifier","potential","pressure","pretend","product","protective","provides","providing","ranging","recall","recent","recovery","release","remained","remember","remote","rescue","residents","results","resume","rsquo","service","sharing","shell","sleeping","special","stance","structural","substances","suffer","suffering","susceptible","takes","testing","thank","thanks","think","tomia","units","unscathed","untrained","valiant","while","willing","withstand","withstood","wooden","young"]
	},{
		"title": "2015 Festival of Artisanal Software For Writers",
		"url": "/2015/06/25/2015-festival-of-artisanal-software-for-writers/",
		"tags": ["sponsor"],
		"date": "Jun 25<span>th</span>, 2015",
		"ts": "1435230000",
		"summary": "SummerFest 2015, a festival of artisanal software, is sponsoring BrettTerpstra.com this week to let you know about this year&rsquo;s selection of amazing (my words) software from developers who care about their craft. This is great software for writing, thinking, researching, and organizing. At 25% off, they&rsquo;re a steal. Save 25% on a some of the longest-standing, top-tier professional tools for the Macintosh: Scrivener, Tinderbox, DEVONthink, Nisus, and more. These apps are powerful, and they work even better together. Each brings strong opinions and careful craftsmanship to help you discover, visualize, organize, and create.  Summer&rsquo;s the time for new plans, fresh projects, and great new ideas. Whether you&rsquo;re mapping out your next novel, finishing your dissertation, planning a product, or writing memoirs to pass on through generations, these tools will make the process simpler and the final product outstanding. DEVONthink Pro Office:  your Mac&rsquo;s paperless office Nisus Writer Pro:  the powerful word processor for OS X Scrivener:  your complete studio for growing your ideas and writing in style Tinderbox: the tool for connected notes Bookends:  the reference manager you&rsquo;ve been looking for Aeon Timeline: the timeline tool for creative thinking Take Control:  Guides for everything Mac and iOS, with the answers you need to get your work done",
		"keywords": ["control","devonthink","nisus","scrivener","software","summerfest","tinderbox","bookends","brettterpstra","control","devonthink","guides","macintosh","nisus","office","scrivener","summer","summerfest","timeline","tinderbox","writer","amazing","answers","artisanal","artisanalsoftwarefestival","artisinal","brettterpstra","brings","careful","class","connected","craft","craftsmanship","create","creative","developers","devontechnologies","discover","dissertation","eastgate","esellerate","everything","festival","finishing","fresh","generations","great","growing","height","https","ideas","image","litlat","loading","longest","looking","manager","mapping","media","memoirs","nisus","nofollow","noscript","notes","novel","office","opinions","organize","organizing","original","paperless","picture","planning","plans","powerful","process","processor","product","professional","projects","promotions","researching","rsquo","scribblecode","selection","simpler","software","sonnysoftware","source","sponsor","sponsoring","srcset","standing","steal","store","strong","studio","style","summerfest","thinking","through","timeline","title","together","tools","uploads","visualize","width","words","writing"]
	},{
		"title": "Web Excursions for June 24, 2015",
		"url": "/2015/06/24/web-excursions-for-june-24-2015/",
		"tags": ["bookmarks"],
		"date": "Jun 24<span>th</span>, 2015",
		"ts": "1435172400",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. This week&rsquo;s web excursions brought to you in partnership with Webdesigner News. Coverr - Beautiful, free videos for your homepage A frequently-updated collection of free video backgrounds for web pages, with ready-to-go HTML, CSS, and JavaScript for implementing them. App Store Optimization: A Hands-On Guide for App Developers Hongkiat offers an insightful post for developers selling apps on the Mac/iTunes app stores. From optimized titles to initial marketing, there are some suggestions in here that I really need to implement in my own App Store presence. ZenHub 2.0 If your team is already using GitHub for source control and issue tracking, ZenHub looks like a great way to bring a full Agile project management system into it. Fax Robot I send so few faxes these days that it&rsquo;s frustrating to keep an online fax account. This service for sending one-off faxes at 6 cents per page is going to be handy on those once-a-year occasions that an institution forces me to actually do that kind of thing. Hotjar An excellent new analytics platform for websites. Heatmaps, visitor recordings, conversion funnels, form analytics, feedback polls and proactive chat in one platform. Back-In-Time for Mac 50% off I can vouch that this tool is an excellent way to scour and manage Time Machine backups on a Mac. 50% off is a steal and there&rsquo;s a free trial available",
		"keywords": ["cascading","github","javascript","sheets","style","agile","beautiful","cleanmymac","coverr","developers","github","guide","hands","heatmaps","hongkiat","hotjar","javascript","machine","optimization","robot","store","webdesigner","zenhub","account","analytics","available","backgrounds","backups","bring","brought","cents","collection","control","conversion","design","developers","excellent","excursions","faxes","feedback","forces","frustrating","funnels","going","great","handy","homepage","itunes","implementing","initial","insightful","institution","looks","management","marketing","offers","online","optimized","pages","partnership","platform","polls","presence","proactive","project","ready","recordings","rsquo","scour","selling","sending","service","source","speed","steal","stores","suggestions","system","titles","tools","tracking","trial","updated","using","video","videos","visitor","vouch","websites"]
	},{
		"title": "Some MindMeister updates worthy of mention",
		"url": "/2015/06/24/some-mindmeister-updates-worthy-of-mention/",
		"tags": ["mindmapping","mindmeister"],
		"date": "Jun 24<span>th</span>, 2015",
		"ts": "1435150800",
		"summary": "As you may know, I&rsquo;m a huge proponent of mind mapping. The topic has been a major focus on several episodes of Systematic (and will be again in an upcoming episode with Eddie Smith). My favorite native app for this task is iThoughts (Mac and iOS) with MindNode (Mac and iOS) running a close second. As I frequently mention, though, I love the web app MindMeister (also available for iOS) for collaboration and sharing embeddable maps. I&rsquo;m writing this post to mention some excellent improvements that MindMeister just released. The biggest improvements to my own workflow are the copy & paste features. Using standard shortcuts (⌘C, ⌘V), the web app now behaves much more like my favorite desktop apps. Pasting links will intelligently determine whether it&rsquo;s a regular link (inserted as a hyperlinked node), an image link (inserted as an image node), or a video (YouTube, Vimeo, and DailyMotion videos are attached). Pasting text will automatically create a new node, and text with line breaks offers the option to create multiple nodes by splitting the pasted text. You can also copy topics and groups of nodes between maps in different windows and browsers, which is handy for multitasking and for transitioning and combining ideas. There is also Disqus integration for public maps, and a contextual menu that you can reach by right/control clicking and empty space in the canvas. The menu allows you to quickly change the theme of the map, as well as inserting floating (detached) topics anywhere you like. These are excellent improvements and I&rsquo;m happy to see that MindMeister is still receiving so much love, even as development effort continues to make their new product, MeisterTask, a great project management tool. You can sign up for MindMeister for free and see if it&rsquo;s as great a tool for you and your collaborators as it has been for me",
		"keywords": ["meisterlabs","meistertask","mindmeister","dailymotion","disqus","eddie","meistertask","mindmeister","mindnode","pasting","smith","systematic","using","vimeo","youtube","again","allows","anywhere","apple","attached","attachments","automatically","available","behaves","between","biggest","breaks","brettterpstra","browsers","canvas","change","class","clicking","clipboard","close","collaboration","collaborators","combining","contextual","continues","control","create","delightful","desktop","detached","development","different","effort","embeddable","empty","episode","episodes","excellent","favorite","features","floating","focus","great","groups","handy","happy","header","height","https","hyperlinked","ithoughts","ideas","image","images","improvements","inserted","inserting","instantly","integration","intelligently","ithoughts","ithoughtsx","itunes","links","loading","major","management","mapping","media","meistertask","mention","mindmap","mindmeister","mindnode","multiple","multitasking","native","nodes","noscript","offers","original","paste","pasted","picture","practicallyefficient","product","project","proponent","public","quickly","reach","receiving","regular","released","right","rsquo","running","searchlink","second","several","sharing","shortcuts","simple","source","space","splitting","srcset","standard","systematic","theme","title","topic","topics","transitioning","upcoming","uploads","video","videos","width","windows","workflow","writing"]
	},{
		"title": "Marked 2 cheat sheet for Dash and Cheaters",
		"url": "/2015/06/23/marked-2-cheat-sheet-dash-cheaters/",
		"tags": ["cheaters","keyboard","marked"],
		"date": "Jun 23<span>rd</span>, 2015",
		"ts": "1435073700",
		"summary": "Marked 2 has over 70 shortcuts for everything from exporting PDFs to navigating the preview. Not knowing them doesn&rsquo;t affect you, but knowing them can be very handy. I put together some cheat sheets to help with that. I built the first one for Cheaters, my own project for collecting cheat sheets. You can find a preview of it on the Cheaters Demo page. You can also grab one for Dash below. If you run Cheaters in the recommended Fluid instance, you&rsquo;ll have quick search, but if you&rsquo;re already running Dash, this version is an excellent way to find a shortcut quickly. The Preview Navigation features in Marked are my favorite set of shortcuts, all single-key actions for moving, bookmarking, searching, auto-scrolling, and more. If you&rsquo;ve never explored them, check out the cheat sheet and see what you&rsquo;re missing. For those, you can also type \"?\" while in a Marked 2 preview window and see all available shortcuts right in the window. Did you know you can type \"f\" and then any part of a headline title (fuzzy matched) to quickly jump to that section of a document? Check out Marked 2 (currently only $9.99), and grab either Cheaters or the Dash docset to push it to the next level. Marked 2 Docset for Dash v1 Download Marked 2 Docset for Dash v1 A cheat sheet docset for Dash.app Published 06/23/15. Updated 06/23/15. Changelog Donate &bull; More info&hellip",
		"keywords": ["cheat","markdown","marked","sheet","changelog","cheaters","check","docset","donate","download","fluid","marked","navigation","preview","published","updated","actions","available","below","bookmarking","built","cheat","check","collecting","docset","document","doesn","either","everything","excellent","explored","exporting","favorite","features","first","fuzzy","handy","headline","hellip","instance","knowing","level","matched","missing","moving","navigating","preview","project","quick","quickly","recommended","right","rsquo","running","scrolling","search","searching","section","sheet","sheets","shortcut","shortcuts","single","title","together","version","while","window"]
	},{
		"title": "On the XARA Mac and iOS exploits",
		"url": "/2015/06/19/on-the-xara-mac-and-ios-exploits/",
		"tags": ["macos","security"],
		"date": "Jun 19<span>th</span>, 2015",
		"ts": "1434737940",
		"summary": "I&rsquo;m not a security expert. This post is an opinion interlaced with the things I&rsquo;ve learned from sources I have faith in. Feel free to clarify or correct me in the comments. When I saw the news of the XARA1 exploits in an article on The Register, my heart sank. I&rsquo;ve spent years using security as a point of argument in platform debates. I don&rsquo;t want to be proven wrong. The report describes multiple weaknesses in both OS X and iOS centering around the systems that Apple has implemented to allow communication between apps. This is bad news to me, personally, because what&rsquo;s discouraged me most in recent OS X developments is the clamping down of these systems and the frustration it causes for anyone who wants to work (and automate) outside of the iCloud space. Most of the vulnerabilities reported are related to \"legacy\" systems that Apple built on top of the OpenBSD framework, such as the Keychain, url handlers, inter-app communication systems. These are all things that make OS X great to use, so we&rsquo;re walking the line between security and convenience again. Most of what I do every day relies on these technologies. It&rsquo;s stated that Apple had 6 months to &mdash; at the very least &mdash; prepare a statement. Historically it&rsquo;s rare that they do anything other than quietly release a patch, but this issue comes down to core technologies that especially affect the third-party developers that make the Apple ecosystem what it is. In retrospect, the announcements at WWDC already indicated that Apple was taking security measures against the url vulnerabilities, requiring that each app preemptively declare what handlers it can call. That&rsquo;s a big handicap for the current implementation of apps like Workflow, Drafts, and LaunchCenter Pro, who allow user-defined url schemes to call other apps. This change in the upcoming version seems like an indication that action was being taken. I&rsquo;m just surprised that there were no publicly visible proactive measures taken against the panic that this report is generating. The fact that part of the research on the exploits was to successfully publish a malware app to the App Store is frustrating. As a Mac developer, I know that getting through the rigorous review process is sometimes an even bigger hurdle than actually writing an app. I&rsquo;d like to think that this stringent and detail-focused process at least ends up providing security and quality. The \"malware&hellip;",
		"keywords": ["apple","exploit","icloud","iphone","keychain","store","vulnerability","acronym","agilebits","apple","bxxxk","drafts","historically","keychain","launchcenter","openbsd","password","register","serious","store","workflow","access","action","actions","again","against","agilebits","allow","analyzers","announcements","anyone","apple","argument","arstechnica","article","attacks","automate","automation","backlink","beauty","because","between","bigger","blitzkrieg","boffins","brettterpstra","built","bundle","capture","causes","center","centering","change","clamping","clarify","class","combination","comes","comments","communication","contents","continuing","convenience","credential","cross","debates","declare","deconstructed","defined","depth","describes","desktop","detail","detectable","developer","developers","developments","discouraged","discussion","doors","drafts","drive","ecosystem","endnotes","especially","expert","exploits","exposed","faith","favorite","flaws","flexibility","fnref","focused","footnote","footnotes","framework","frustrating","frustration","generating","getting","google","great","hackers","handicap","handler","handlers","handling","heart","height","hoping","hosed","https","hurdle","icloud","imore","iphone","image","imore","implementation","implemented","increased","indicated","indication","inter","interlaced","iphone","itunes","keychain","launch","ldquo","learned","legacy","loading","malware","mdash","measures","media","multiple","normal","noscript","noteref","notes","operating","original","outside","panic","party","passed","password","patch","personally","picture","platform","platforms","point","powerful","preemptively","prepare","proactive","process","proven","providing","publicly","publish","quality","quickly","quietly","rapidly","rdquo","recent","registration","related","release","relies","report","reported","requiring","research","resource","resources","retrospect","reversefootnote","rigorous","rsquo","sadfinder","schemes","scrutiny","searchlink","secure","security","seems","serious","sometimes","source","sources","space","spent","spoofing","srcset","stated","statement","static","steal","storage","stringent","successfully"]
	},{
		"title": "Web Excursions for June 19, 2015",
		"url": "/2015/06/19/web-excursions-for-june-19-2015/",
		"tags": ["bookmarks","icons"],
		"date": "Jun 19<span>th</span>, 2015",
		"ts": "1434718800",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Streamline 2.0 Icons I&rsquo;ve always liked the Streamline icons, and have been using them for web and app designs for a while. The set was just updated, now with 4000 icons, perfect for app and web UI. The packs include files for Sketch and Illustrator (and SVG format) with pixel-perfect designs and adjustable line widths. Leap Motion plugin for Reveal.js I&rsquo;m a huge fan of Reveal.js (and slides.com)1. I&rsquo;m also always looking for more ways to use my Leap motion controller, so this is awesome. I&rsquo;m not sure how practical it would be in most presentation environments, but I love the idea. youpy/ruby-spotlight I found this while looking for a way to automate the creation of OS X Saved Searches, which was an endless headache. I haven&rsquo;t tested this Ruby gem far enough to be sure it&rsquo;s a perfect solution, but it&rsquo;s a great start. MutationObserver API I&rsquo;ve been doing a lot of JavaScript learning lately and was surprised to find a new API I&rsquo;d overlooked. MutationObserver attaches to DOM elements and watches for changes, saving you from any additional custom events or polling. You&rsquo;re probably using the wrong dictionary This was pointed out to me by bowerbird on Twitter. It&rsquo;s a persuasive article about why you should change your default OS X Dictionary. I have spent and inordinate amount of time researching HTML5-based slide deck options, considering I give a presentation maybe once a year.&nbsp;↩",
		"keywords": ["design","graphics","javascript","mdmetadataquery","scalable","spotlight","vector","check","dictionary","icons","illustrator","javascript","motion","mutationobserver","reveal","saved","searches","setapp","sketch","streamline","twitter","access","adjustable","amount","article","attaches","automate","awesome","backlink","based","bbirdiman","boring","bowerbird","brettterpstra","brought","change","changes","class","considering","controller","creation","custom","davidwalsh","default","designs","dictionary","doing","elements","endless","endnotes","enough","environments","events","excursions","featured","files","fnref","footnote","footnotes","format","found","github","great","hakim","haven","headache","height","https","hundreds","icons","image","inordinate","jsomers","leapmotion","learning","liked","loading","looking","maybe","media","monthly","motion","mutationobserver","noscript","noteref","options","original","overlooked","packs","partnership","persuasive","picture","pixel","platform","plugin","pointed","polling","practical","presentation","presentations","researching","reveal","reversefootnote","rsquo","saving","setapp","slide","slides","solution","source","spent","spotlight","srcset","streamlineicons","subscription","surprised","tested","title","today","twitter","updated","uploads","using","watches","webexcursionsplane","while","width","widths","wrong","youpy"]
	},{
		"title": "MightyDeals: Bootstrap Starter Kit [sponsor]",
		"url": "/2015/06/18/mightydeals-bootstrap-starter-kit-sponsor/",
		"tags": ["sponsor"],
		"date": "Jun 18<span>th</span>, 2015",
		"ts": "1434625200",
		"summary": "Thanks to MightyDeals for sponsoring BrettTerpstra.com this week! If you&rsquo;re looking for an easy way to build a Bootstrap site, this is a great bundle. Bootstrap websites are all the rage these days and for good reason. They&rsquo;re lean, mean and highly responsive in design. With the incredible Bootstrap Starter Kit (50% off!), you can easily put together a great website of your own. Using the simple Drag-&-Drop HTML Builder, you can mix and match various Bootstrap Content Blocks to put together unlimited website layouts. So easy to use, this Starter Kit is perfect for all knowledge levels. Simple to use no matter what your level of Bootstrap knowledge is Create unlimited layouts with these high-quality Bootstrap content blocks from: Headers Promo Blocks Content Blocks Gallery Blocks Team Blocks Pricing Tables Blog Contact Blocks Footer Blocks Drag-&-Drop HTML Builder Monthly updates will contain new content blocks and additional features for even more variety Responsive websites will work on any device Bonus: you&rsquo;ll even get original PSD and PNG files for every content block",
		"keywords": ["bootstrap","bundle","design","website","blocks","bonus","bootstrap","brettterpstra","builder","contact","content","create","footer","gallery","headers","highlights","mightydeals","monthly","pricing","promo","responsive","simple","starter","tables","thanks","using","block","blocks","bootstrap","brettterpstra","btbootstrapkit","build","bundle","class","contain","content","design","device","easily","features","files","great","height","highly","https","image","incredible","knowledge","layouts","level","levels","loading","looking","match","media","mightdeals","mightydeals","nofollow","noscript","original","picture","quality","responsive","rsquo","simple","source","sponsor","sponsoring","srcset","starter","strong","title","together","unlimited","updates","uploads","variety","various","website","websites","width"]
	},{
		"title": "Freebie: Retro Social Media Icon Set",
		"url": "/2015/06/16/freebie-retro-social-media-icon-set/",
		"tags": ["design","giveaway"],
		"date": "Jun 16<span>th</span>, 2015",
		"ts": "1434484800",
		"summary": "Here&rsquo;s another fun icon set from FreeVectors.net: Retro Social Media icons. The download includes PSD, EPS, and AI files, so they&rsquo;re easy to customize. It&rsquo;s free, go for it&hellip; If these aren&rsquo;t your bag, there are many more to check out at FreeVectors",
		"keywords": ["facebook","icons","twitter","vector","freevectors","media","retro","social","another","check","customize","download","files","hellip","icons","includes","rsquo"]
	},{
		"title": "Web Excursions for June 13, 2015",
		"url": "/2015/06/13/web-excursions-for-june-13-2015/",
		"tags": ["bookmarks"],
		"date": "Jun 13<span>th</span>, 2015",
		"ts": "1434207600",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. This is a developer-centric pack of links. It&rsquo;s been one of those weeks. kcrawford/dockutil I have a lot of notes, but this little Python script turns OS X Dock modifications into intuitive command arguments. Now I can stop having to look up . benjamine/jsondiffpatch I know there are probably very few people who are looking for this, but I had an itch to scratch and was ecstatic to find that Google&rsquo;s diff-match-patch had been ported to JavaScript. karan/slack-overflow Add a StackOverflow search to your Slack channel so you can answer programming questions without all the hassle of opening a web browser. Sassline If you design for the web, you&rsquo;ve been inundated with typography talk for the last few years. Decade, really. There have been a few great tools to simplify vertical rythm, and more that have adapted for responsive design. Here&rsquo;s a collection of base typography styles and Sass mixins that make it simple. postcss/postcss I&rsquo;ve gotten good with Sass, but I make a strong effort not to get overly comfortable with any technology. Sticking with any library for more than 6 months is how I&rsquo;ll know it&rsquo;s time to quit tech and work on my carpentry skills. PostCSS is a tool for transforming CSS with JS plugins. These plugins can support variables and mixins, transpile future CSS syntax, inline images, and more. &hellip; PostCSS can do the same work as preprocessors like Sass, Less, and Stylus. But PostCSS is modular, 3-30 times faster, and much more powerful. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["browser","cascading","chrome","google","javascript","safari","sheets","style","check","decade","google","javascript","mindmeister","postcss","python","sassline","slack","stackoverflow","sticking","stylus","adapted","answer","arguments","benjamine","boosting","brainstorming","brought","browser","carpentry","centric","channel","collaborating","collaborative","collection","comfortable","command","design","developer","dockutil","ecstatic","effort","excursions","faster","gotten","great","hassle","having","hellip","images","inline","intuitive","inundated","jsondiffpatch","karan","kcrawford","library","links","little","looking","mapping","match","mixins","modifications","modular","notes","opening","overflow","overly","partnership","patch","people","plugins","ported","postcss","powerful","preprocessors","productivity","programming","questions","responsive","rsquo","rythm","scratch","script","search","simple","simplify","skills","slack","software","strong","styles","support","syntax","technology","times","tools","transforming","transpile","turns","typography","variables","vertical","weeks","years"]
	},{
		"title": "PDFpenPro 7: the ultimate PDF editor [sponsor]",
		"url": "/2015/06/11/pdfpenpro-7-the-ultimate-pdf-editor-sponsor/",
		"tags": ["sponsor"],
		"date": "Jun 11<span>th</span>, 2015",
		"ts": "1434020400",
		"summary": "Thanks to PDFpenPro 7 from Smile for sponsoring BrettTerpstra.com this week! PDFpenPro is the advanced version of PDFpen, the ultimate all-purpose PDF editor from Smile. It does everything that PDFpen does, such as add signatures, edit text and images, perform OCR on scanned documents, and export in Microsoft Word format. Only PDFpenPro can create an interactive PDF form, build a table of contents, set document permissions, and convert websites to multi-page PDFs. The new PDFpenPro 7 adds easy editing of OCR text from scanned documents as well as export in Microsoft Excel, Microsoft PowerPoint, and PDF archive formats. PDFpen can export PDFs of spreadsheets and presentations into editable formats. With PDFpenPro 7.1, users can set the tool tip on form fields, allowing VoiceOver-accessible forms that even users with disabilities can easily fill out. Edit PDFs on the go with PDFpenPro&rsquo;s iOS companion app, PDFpen for iPad & iPhone",
		"keywords": ["excel","microsoft","powerpoint","smile","brettterpstra","excel","microsoft","pdfpen","pdfpenpro","powerpoint","smile","thanks","voiceover","accessible","advanced","allowing","archive","build","companion","contents","convert","create","disabilities","document","documents","easily","editable","editing","editor","everything","export","fields","format","formats","forms","iphone","images","interactive","multi","permissions","presentations","rsquo","scanned","signatures","sponsoring","spreadsheets","table","today","toolbox","ultimate","users","version","websites"]
	},{
		"title": "The Terminology dictionary for Mac",
		"url": "/2015/06/10/the-terminology-dictionary-for-mac/",
		"tags": ["productivity"],
		"date": "Jun 10<span>th</span>, 2015",
		"ts": "1433961120",
		"summary": "Agile Tortoise produces my favorite iOS dictionary app, Terminology. It uses WordNet as its lexical reference, and until now I haven&rsquo;t found an elegant equivalent on OS X. Yesterday, Greg Pierce (the dev behind Agile Tortoise) officially released an OS X Dictionary version of the Terminology database. It&rsquo;s free, and it plugs directly into the built-in Dictionary app, meaning its definitions are available with a quick three-finger tap (and \"Look up&hellip;\" services) in any app on recent OS X versions. You can download the dictionary and find installation instructions at the Agile Tortoise website. Be sure to complete the installation by enabling the new dictionary in Dictionary.app preferences. If you haven&rsquo;t already grabbed Terminology for iOS, doing so would be a great way to thank Greg for this excellent free resource",
		"keywords": ["dictionary","agile","dictionary","pierce","terminology","tortoise","wordnet","yesterday","available","behind","built","database","definitions","dictionary","directly","doing","download","elegant","enabling","excellent","favorite","finger","found","grabbed","great","haven","hellip","installation","instructions","lexical","meaning","officially","plugs","preferences","produces","quick","recent","released","resource","rsquo","services","thank","version","versions","website"]
	},{
		"title": "The Painless tmux/Vim winners",
		"url": "/2015/06/09/the-painless-tmux-slash-vim-winners/",
		"tags": ["books","giveaway"],
		"date": "Jun 9<span>th</span>, 2015",
		"ts": "1433871480",
		"summary": "Thanks to everybody who entered in the Painless tmux giveaway! And congratulations to the lucky winners. If you didn&rsquo;t get an email from the Giveaway robot, please contact me! If you entered, you were obviously interested in the subjects of and/or . If you didn&rsquo;t win, I recommend taking the plunge and picking up the Painless tmux and Painless Vim books",
		"keywords": ["ebook","leanpub","alexander","andreas","bighi","borough","bryan","chris","christian","darrin","dwight","ekstrom","gauthier","giveaway","hanson","jakob","kaczkowski","kingman","koopmann","lattka","leonardo","lufley","mathers","names","ottmar","painless","philippe","phillips","raymond","richard","sirois","thanks","vannoy","books","brettterpstra","class","congratulations","contact","email","entered","everybody","giveaway","highlighter","https","interested","klaas","language","leanpub","listed","lucky","painless","picking","plaintext","plunge","recommend","reuter","robot","rouge","rsquo","subjects","taking","winners"]
	},{
		"title": "Web Excursions for June 08, 2015",
		"url": "/2015/06/08/web-excursions-for-june-08-2015/",
		"tags": ["bookmarks"],
		"date": "Jun 8<span>th</span>, 2015",
		"ts": "1433768400",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Activision Painyatta A piñata powered by Tweets. Also, a way to avoid arming large groups of small children with baseball bats, which happens to be a recurring nightmare for me. Streaming Unicorns. Stream the dream. Live stream your iPhone or iPad screen via your Mac. Live stream your iPhone screen over the web. Hat tip to John Voorhees. Tabio I usually use the tab switcher built into Vimium, but this plugin allows quick switching, reordering, and closing Chrome tabs from a dropdown, which is handy. I Wanna Be&hellip; Don&rsquo;t forget to pick up a T-shirt! This one (literally the most punk rock typographic t-shirt EVER) is the most likely to succeed, I think, so pile on. rzCodes/rzJSFundamentals A Javascript cheat sheet comprised of a handy collection of skeletal functions that serve as quick reminders. I made a quick version of it for Cheaters, and will probably make one for Dash soon. repl.it Online coding and REPL for JavaScript, Python, Ruby, Java, Node.js, Go, Scheme, C, C++, Lua, CoffeeScript and more. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["coffeescript","iphone","javascript","activision","backblaze","cheaters","check","chrome","coffeescript","javascript","javascript","online","painyatta","python","scheme","stream","streaming","tabio","tweets","unicorns","vimium","voorhees","wanna","affordably","allows","apple","arming","avoid","backblaze","backs","baseball","bgbhfmeabcmpjblimfddkeikogidjhao","brettterpstra","brought","built","cheat","cheaters","cheatsheets","children","chrome","class","closing","cloud","coding","collection","comprised","computer","dbepggeogbaibhgnhhndojpepiihcmeb","detail","dream","dropdown","entire","everything","excursions","forget","functions","github","google","groups","handy","happens","height","hellip","https","iphone","image","itunes","johnvoorhees","languages","likely","literally","loading","master","media","nightmare","noscript","original","painyatta","partnership","picture","plane","plugin","powered","projects","quick","recurring","reliably","reminders","reordering","roowilliams","rsquo","rzcodes","rzjsfundamentals","screen","secure","securely","serve","sheet","shirt","skeletal","small","snippets","source","srcset","status","stores","stream","succeed","switcher","switching","tabio","teespring","think","title","today","ttscoff","twitter","typographic","unicorns","uploads","usually","version","vimium","wanna","webexc","webexcursions","webstore","width"]
	},{
		"title": "Popup URL previews for Yosemite",
		"url": "/2015/06/05/popup-url-previews-for-yosemite/",
		"tags": ["macos","urlpreview"],
		"date": "Jun 5<span>th</span>, 2015",
		"ts": "1433534040",
		"summary": "I built a quick Action Extension for OS X 10.10+ this morning. It&rsquo;s called \"Preview URL,\" and it lets you select text containing a URL, then shows a preview of that web page in a popup. I built it because SearchLink sometimes gets inscrutable URLs (e.g. the Amazon results), and despite the convenience of that Service, I found myself switching back to my browser too often. Here&rsquo;s an action-packed video of the Action in action",
		"keywords": ["locator","resource","action","amazon","extension","preview","searchlink","service","action","because","browser","built","called","containing","convenience","details","download","found","inscrutable","morning","myself","often","packed","popup","preview","project","quick","results","rsquo","shows","sometimes","switching","video"]
	},{
		"title": "Painless Tmux + Painless Vim giveaway",
		"url": "/2015/06/04/painless-tmux-plus-painless-vim-giveaway/",
		"tags": ["books","giveaway"],
		"date": "Jun 4<span>th</span>, 2015",
		"ts": "1433440800",
		"summary": "You may or may not be familiar with tmux, a powerful terminal multiplexer that lets you switch between multiple terminal emulators with configurable panes and windows, as well as detach processes and keep them running in the background. Whether you&rsquo;re new to the idea of multiplexing, or switching from something like screen, Nate Dickson has an e-book to help you out: Painless Tmux. This book is designed to help you get comfortable with tmux incrementally, helping you build up the kind of skill you need to fully utilize panes, windows, sessions and all the other power features of tmux. The book is published through Leanpub, meaning free updates and flexible pricing. The suggested price is $9.99, but Nate has offered 10 20 codes for BrettTerpstra.com readers. Bonus: winners also receive a free copy of Painless Vim, which I covered a while back. Update: due to the fantastic response, Nate has upped the giveaway to 20 copies! To register for codes, just enter a name and email address below. 20 winners will be chosen randomly by the Giveaway Robot (Killotron 7800), and your email is used only for notification (Killotron incinerates them after the giveaway). Winners will receive codes for both Painless Tmux and Painless Vim (value $19.99 US). The drawing ends on Tuesday, June 9th, at 12PM CST. This drawing is open to all readers. Sorry, this giveaway has ended",
		"keywords": ["emulator","leanpub","multiplexer","terminal","bonus","brettterpstra","dickson","giveaway","killotron","leanpub","painless","robot","sorry","tuesday","winners","address","background","below","between","build","chosen","codes","comfortable","configurable","copies","covered","designed","detach","drawing","email","emulators","ended","enter","familiar","fantastic","features","flexible","fully","giveaway","helping","incinerates","incrementally","meaning","multiple","multiplexer","multiplexing","notification","offered","panes","powerful","price","pricing","processes","published","randomly","readers","receive","register","response","rsquo","running","screen","sessions","skill","suggested","switch","switching","terminal","through","updates","upped","utilize","value","while","windows","winners"]
	},{
		"title": "DevMate: seamless development and distribution [sponsor]",
		"url": "/2015/06/04/devmate-seamless-development-and-distribution-sponsor/",
		"tags": ["sponsor"],
		"date": "Jun 4<span>th</span>, 2015",
		"ts": "1433426400",
		"summary": "Thanks to DevMate from MacPaw for sponsoring BrettTerpstra.com this week! Originally an in-house product&mdash;now used by some of the best in the Mac development community&mdash;DevMate is a new platform from MacPaw, a team of indie developers turned company. DevMate helps developers prime their applications for release, making it incredibly easy to set up product licensing, deliver updates to customers, get user feedback, integrate crash reporting, and much more. Whether you&rsquo;re an indie dev or an established company, DevMate gives you all the necessary tools to sell your applications outside the Mac App Store. The platform takes hours of tedious code off developers&rsquo; hands. DevMate uses one single SDK which helps you protect your application from illegal usage, improve product stability, beta test new versions, communicate with your customers via feedback, and keep your users up-to-date with the latest version of your app. DevMate is also intended to work as a centralized place for application management, which improves interaction with customers and collects data in real time. DevMate&rsquo;s FastSpring integration provides an e-commerce solution to developers. Your users can purchase a full version or a paid upgrade right from the application, without affecting their customer experience. This helps make DevMate a complete platform for development, management, and distribution of applications. If you&rsquo;re a developer looking for a great solution for non-MAS distribution, check out DevMate today",
		"keywords": ["developer","store","analytics","brettterpstra","coding","conversion","crash","customer","devmate","develop","distribute","fastspring","macpaw","originally","revenue","seamlessly","single","solution","spend","store","thanks","affecting","aggregates","ampaign","applications","brettterpstra","build","campaign","centralized","check","class","collects","commerce","community","company","crash","customer","customers","deliver","developer","developers","development","devmate","distribution","efficiency","established","experience","extensive","feedback","funnels","gives","great","hands","height","hellip","helps","hours","house","https","illegal","image","improve","improves","incredibly","indie","integrate","integration","intended","interaction","latest","launch","licensing","loading","looking","macpaw","making","management","mdash","media","medium","necessary","nofollow","noscript","original","outside","performance","picture","platform","prime","product","protect","provides","release","reporting","reports","right","rsquo","sales","single","solution","source","sponsoring","srcset","stability","statistics","strong","takes","tedious","title","today","tools","turned","updates","upgrade","uploads","usage","users","version","versions","width"]
	},{
		"title": "MMD QuickLook 1.2 with TextBundle support",
		"url": "/2015/06/03/mmd-quicklook-1-dot-2-with-textbundle-support/",
		"tags": ["macos","markdown","multimarkdown","quicklook","textbundle"],
		"date": "Jun 3<span>rd</span>, 2015",
		"ts": "1433361900",
		"summary": "I&rsquo;ve updated my fork of Fletcher Penney&rsquo;s MultiMarkdown Quick Look plugin with TextBundle support. It&rsquo;s a seamless upgrade and maintains custom styles if you have one installed. For download, details, and instructions for using a custom style, head to the GitHub project. You can find a compiled version on the release page, ready to unzip, drag and drop into your folder. Make sure you run in Terminal after installing",
		"keywords": ["github","plugin","quick","fletcher","github","multimarkdown","penney","quick","terminal","textbundle","compiled","custom","details","download","folder","installed","installing","instructions","maintains","plugin","project","ready","release","rsquo","seamless","style","styles","support","unzip","updated","upgrade","using","version"]
	},{
		"title": "MindNode 2.0 for Mac (with Marked 2 integration)",
		"url": "/2015/06/03/mindnode-2-dot-0-for-mac-with-marked-2-integration/",
		"tags": ["brainstorming","mindmapping","productivity"],
		"date": "Jun 3<span>rd</span>, 2015",
		"ts": "1433342400",
		"summary": "MindNode 2.0 for Mac is out today. It&rsquo;s being sold as a new app with an intro price of $19.99 US. That will go up to $29.99 after the intro sale. The new features include the ability to attach extended notes to topics, \"Stickers\" to differentiate and mark nodes, and an outline view like the iOS version has. It can also import Mindjet MindManager files, which I&rsquo;m very happy to see. There&rsquo;s a lot in there, and I wrote it up in more detail on MacStories. A little bit ago, iThoughtsX added support for Marked 2 live preview, which I&rsquo;ve been loving. MindNode has adjusted their file format with this release, also allowing Marked 2 to preview your mind map as a rendered Markdown file on every save. Use File -> Advanced -> Open in Marked (or ⌘⇧M) to open the current map. The next update to Marked will allow opening MindNode files directly and the \"Open in Editor\" command will automatically send it back to MindNode. This kind of integration is great to see, and makes mind mapping an even more viable tool for writers of all ilk. Check out MindNode 2.0 on the Mac App Store",
		"keywords": ["mindnode","store","advanced","check","editor","macstories","markdown","marked","mindmanager","mindnode","mindnodemac","mindjet","stickers","store","ability","added","adjusted","allow","allowing","apple","attach","automatically","brettterpstra","class","command","delightful","detail","differentiate","directly","extended","features","files","format","great","happy","height","https","ithoughtsx","image","import","integration","intro","ithoughtsx","itunes","ldquo","little","loading","loving","macstories","makes","mapping","marked","media","mindnode","mindnodeicon","nodes","noscript","notes","opening","original","outline","picture","preview","price","rdquo","release","rendered","rsquo","source","srcset","strong","support","title","today","together","topics","uploads","version","viable","width","writers","wrote"]
	},{
		"title": "Living the Remote Dream",
		"url": "/2015/06/02/living-the-remote-dream/",
		"tags": ["books"],
		"date": "Jun 2<span>nd</span>, 2015",
		"ts": "1433265840",
		"summary": "Darren Murph, whom I had the pleasure of working with at Engadget for a few years, has published Living the Remote Dream: A Guide to Seeing the World, Setting Records, and Advancing Your Career, a book on the topic of working remotely. Darren was a key player and prolific writer at one of the top tech blogs in the world, and he did it all while traveling the world. I knew him during the time that Tim Stevens was Editor in Chief. While titles may have varied, orders often came from \"Tim and Darren,\" and they were a dynamic duo. The job was challenging and fun, and I wouldn&rsquo;t trade those years for anything. In addition to telling his personal story, the book covers a range of topics and tips for people planning to (or desiring to) get into remote work. Planning ahead, conversations to have with supervisors, tools you&rsquo;ll need, and productivity tips for a different kind of workplace are all covered in Darren&rsquo;s easy-to-digest writing style. You can find his own comments on the book on his blog. The book is $3.99 US for Kindle, and available as a paperback for $8.99 US. If you&rsquo;re already working remotely or you want to get started, I recommend picking it up",
		"keywords": ["amazon","darren","engadget","kindle","murph","stevens","advancing","career","chief","darren","dream","editor","engadget","guide","kindle","living","murph","planning","remote","seeing","setting","stevens","while","world","ahead","available","blogs","challenging","comments","conversations","covered","covers","desiring","different","digest","dynamic","often","orders","paperback","people","personal","picking","planning","player","productivity","prolific","published","range","recommend","remote","remotely","rsquo","started","story","style","supervisors","telling","titles","tools","topic","topics","trade","traveling","varied","while","working","workplace","world","wouldn","writer","writing","years"]
	},{
		"title": "TextExpander 5 JavaScript snippets",
		"url": "/2015/06/01/textexpander-5-javascript-snippets/",
		"tags": ["javascript","scripting","snippet","textexpander","webdesign"],
		"date": "Jun 1<span>st</span>, 2015",
		"ts": "1433163600",
		"summary": "I mentioned the release of TextExpander 5 last week, and the fact that it now allows snippets to be written using JavaScript. You can find the documentation for JavaScript in TextExpander in the help book. I started playing with it a bit over the weekend, and thought I&rsquo;d share a couple of findings. To start a JavaScript snippet, create a new snippet and change the type dropdown at the top of the edit field to \"JavaScript.\" Standard JavaScript is available, and JavaScript for Automation can be used. The latter will only work on OS X. Nested snippets work quite well, so you can create snippets containing JavaScript libraries and include them in other snippets. Just give them long names that you&rsquo;ll never type, and then reference them using the format at the top of your JavaScript snippet. I had the best results when setting the snippet type of included snippets to \"Plain Text.\" In the JavaScript context, there&rsquo;s a TextExpander object with some special values and functions. These are well documented in the help. The function is a way to incrementally build the return results. Just use and it&rsquo;s added to the output results. The final output of the script is what will be inserted when the snippet is triggered. You can get the abbreviation the script was triggered with using , and the Bundle ID of the application the snippet was triggered in using . These allow you to build logic that provides different responses based on these variables, potentially allowing snippets code to be re-used. For example, you could build one snippet that handled five different abbreviations, then nest it into five snippets. Each snippet would pass its own abbreviation to a case statement in the main script, and perform actions without having to rewrite the script five times. Filled values are available in the object, with keys based on the field name. If you have a fill-in named \"Format\", you can retrieve its value using . You can also use fill-ins directly in JavaScript code, and use the new placeholder in the script to have the fill-in popup show only the options without displaying the entire script. That&rsquo;s a very cool addition that I&rsquo;ll be incorporating across a lot of the TE-Tools. As an example of some of my experimentation, I&rsquo;ve added a new group to the TE-tools called \"Next X.\" It provides a JavaScript library, which it nests into snippets for each day of the week1. Then you can use to insert the date for the next Tuesday&hellip;",
		"keywords": ["abbreviation","snippets","&#39;format&#39;","automation","bundle","filled","format","interapplicationcommunication","javascript","javascriptforautomation","nested","standard","textexpander","tools","tuesday","abbreviation","abbreviations","across","actions","added","allow","allowing","allows","appendoutput","apple","applescript","available","backlink","based","brettterpstra","build","building","calendar","called","change","class","containing","context","couple","create","customizing","dates","default","developer","different","directly","displaying","documented","download","dropdown","endnotes","entire","example","excellent","expansioncontext","experimentation","field","filledvalues","filltop","findings","fnref","footnote","footnotes","format","function","functions","group","groups","handled","handy","having","highlight","highlighter","https","included","incrementally","index","information","inserted","language","latter","ldquo","letter","libraries","library","locale","logic","longjslibrarysnippetname","manipulation","manual","mentioned","myprefix","named","names","nests","newoutput","noteref","object","offers","options","output","placeholder","placeholders","plaintext","playing","popup","potentially","preference","prefix","project","projects","provides","rdquo","release","releasenotes","requires","responses","results","retrieve","return","reversefootnote","rewrite","rouge","rsquo","script","setting","share","smilesoftware","snippet","snippets","special","started","statement","strftime","strtime","tedates","textexpander","thought","through","times","tools","triggered","triggeringabbreviation","typing","using","value","values","variables","weekday","weekend","whatever","where","while","writing","written"]
	},{
		"title": "The Marked 2 URL Handler",
		"url": "/2015/05/29/marked-url-handler/",
		"tags": ["automation","marked"],
		"date": "May 29<span>th</span>, 2015",
		"ts": "1432922400",
		"summary": "There&rsquo;s an update to Marked 2 almost ready for release which has an in-app purchase option for full spelling and grammar checking. It also includes completely rewritten memory management and background processing which improves speed and stability (that part will be free to all users). Look for that soon! In the meantime&hellip; Recent versions of Marked 2 have included a URL handler. Rather than expanding the AppleScript library immediately, I&rsquo;ve focused on allowing more inclusive inter-app operability with url commands that can easily be used with launchers such as LaunchBar and Alfred, called from the command line or any script with the open command, or used as links. The url handler can load files, send text to temporary previews, force refreshes on a single window or all windows, change the preview style, and even reposition windows. The initial documentation is on the Marked 2 site (and in the internal help). The protocol for the handler is , followed by the command you want to call. For example, to refresh every open window from the command line or a script, you can use: If you pass a parameter with that url, you can target a specific window. While the command requires a full path, commands that target a window (refresh, style, etc.) only need a partial match; Marked will refresh whichever window&rsquo;s filename best matches the path given. The command can accept an additional parameter, which can call any other app that has a url handler upon completion of the command uses a parameter, but calling it with just a path works as well: (also note that because that path is a directory, Marked will open it as a folder watcher and show the most recent file, updating as that changes) The and commands can be used to create temporary preview windows using text from the clipboard or passed in the parameter, respectively Most commands can include a parameter (not documented yet) which accepts 4 numbers separated by commas (or ), defining top left corner distance from left of display, top left corner distance from top of display, window width, and window height for the target preview window A parameter can be used to force multi-display setups to target a specific monitor, numbered beginning at 0 If the parameters also include or , the window will be positioned to the left or right of the given frame (if possible within screen dimensions), allowing you to pass the frame of another window and have Marked move its preview based&hellip;",
		"keywords": ["alfred","applescript","handler","javascript","launchbar","locator","resource","scheme","alfred","applescript","changelog","check","donate","download","first","javascript","launchbar","marked","pages","points","published","rather","recent","selection","services","system","updated","while","accept","accepts","action","adding","allowing","allows","almost","another","automation","available","background","based","because","beginning","below","called","calling","change","changes","checking","chose","clipboard","command","commands","commas","completely","contents","corner","create","created","defining","details","dimensions","directory","display","distance","docket","documented","download","easily","email","example","executed","expanding","expose","feature","filename","files","finishing","flexibility","focused","folder","followed","force","frame","grammar","handler","handlers","height","hellip","ideas","improves","included","includes","inclusive","initial","inter","interest","internal","keyboard","launchers","library","links","management","marked","match","matches","meantime","memory","messages","monitor","multi","needed","numbered","numbers","opening","opens","operability","output","parameter","parameters","partial","passed","permanent","position","positioned","possible","preview","previewing","previews","processing","protocol","publish","ready","recent","refresh","refreshes","release","releases","reposition","requires","respectively","rewrite","rewritten","right","rsquo","screen","script","selected","selections","separated","setups","shortcuts","simple","single","specific","speed","spelling","stability","style","support","system","target","temporary","updating","usefulness","users","using","versions","watcher","whichever","width","window","windows","within","works"]
	},{
		"title": "Friday bonus Web Excursions",
		"url": "/2015/05/29/friday-bonus-web-excursions/",
		"tags": ["bookmarks"],
		"date": "May 29<span>th</span>, 2015",
		"ts": "1432904400",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. I had a few extra links this week, so here&rsquo;s a special bonus Web Excursions post. Plus, I made a new header image, because variety is the condiment of destiny. Zoommy A nice Mac app that aggregates stock photos from all the free stock sites. It&rsquo;s lacking search, which is a bit of a letdown, but the interface is nice and the photo offering is great. Iconjar A new app (in beta) for managing and browsing icons. What I&rsquo;m liking most about it is its simplicity. Sets and tags, and a nice browser. That&rsquo;s it, and that&rsquo;s what I&rsquo;ve been looking for. Photo managers aren&rsquo;t great for icon sets, but this is. Clark&rsquo;s call for DOJ action on cyber threats against women receives House backing Good news. The U.S. House of Representatives has formally supported Congresswoman Katherine Clark&rsquo;s request to intensify investigation and prosecution of severe online threats against women. &hellip; the DOJ is specifically instructed to \"intensify its efforts to combat this destructive abuse,\" and to \"increase investigations and prosecutions of these crimes.\" I Was a Proud Non-Breeder. I Changed My Mind. A great post on a subject I&rsquo;ve been talking (probably too much) about on Overtired. Michelle Goldberg had taken my position on (not) having children and this article details the path to changing her mind, which I think is an important perspective to read no matter which decision you&rsquo;ve made. Friends who like Nickelback I learned about this thanks to Rich Siegel. It will show you which of your friends have liked the Nickelback page. What you do with this information is up to you. To take it a step further, use findmyfacebookid and enter the page of any band or artist, then substitute the resulting ID into the ?page_id=6248267085 part of the url. Thanks, Rich",
		"keywords": ["house","icons","photos","representatives","states","stock","united","breeder","changed","clark","cleanmymac","congresswoman","excursions","friends","goldberg","house","iconjar","katherine","michelle","nickelback","overtired","photo","proud","representatives","siegel","thanks","zoommy","abuse","action","against","aggregates","article","artist","backing","because","bonus","brought","browser","browsing","changing","children","combat","condiment","crimes","cyber","decision","destiny","destructive","details","efforts","enter","excursions","extra","findmyfacebookid","formally","friends","great","having","header","hellip","icons","image","important","increase","information","instructed","intensify","interface","investigation","investigations","lacking","learned","letdown","liked","liking","links","looking","managers","managing","offering","online","partnership","perspective","photo","photos","position","prosecution","prosecutions","receives","resulting","rsquo","search","severe","simplicity","sites","special","specifically","speed","stock","substitute","supported","taken","talking","thanks","think","threats","tools","variety","women"]
	},{
		"title": "Never too many t-shirts",
		"url": "/2015/05/28/never-too-many-t-shirts/",
		"tags": ["apparel"],
		"date": "May 28<span>th</span>, 2015",
		"ts": "1432834860",
		"summary": "I set up a TeeSpring storefront where I&rsquo;ll be offering t-shirt designs as they&rsquo;re ready. Right now there are two designs from my Rock Paper collection (the Comfortably Numb one, and the most punk rock t-shirt ever), as well as the latest \"Lab\" design. We&rsquo;ll see how this goes. TeeSpring will print and ship these shirts if at least five of a given design are sold. If there&rsquo;s one you&rsquo;re interested in, sign up and then get your friends to pile on and ensure you get it. It&rsquo;s peer pressure with mutual benefits. I set the prices as low as I could. Women&rsquo;s sizes and fits are available. and there should be sizes up to 3XL in most styles. And some more colorful options will be added soon. See the store at TeeSpring",
		"keywords": ["brett","shirt","shirts","teespring","terpstra","comfortably","paper","right","teespring","women","added","available","benefits","collection","colorful","design","designs","friends","interested","latest","mutual","offering","options","pressure","prices","print","ready","rsquo","shirt","shirts","sizes","store","storefront","styles","where"]
	},{
		"title": "Backblaze Online Backup: The easiest online backup service around [sponsor]",
		"url": "/2015/05/28/backblaze-sponsor/",
		"tags": ["sponsor"],
		"date": "May 28<span>th</span>, 2015",
		"ts": "1432810800",
		"summary": "Thanks to Backblaze for sponsoring BrettTerpstra.com this week! A world free of data loss worries: that&rsquo;s what Backblaze online backup strives for. Backblaze is an online backup provider that allows users to back up unlimited data at unthrottled speeds, and does it all for just $5/month per computer. Backblaze runs natively on both your PC and your Mac and backs up all your movies, music, photos, videos, files, and whatever other bits of data you have on your computer. It&rsquo;s automatic, continuous, and secure. Backing up files is easy, but what about accessing those files? Backblaze has iOS and Android apps available to let you retrieve documents quickly. If you need more data, you can download .zip restores from the Backblaze web site using any web browser. If everything hits the fan, Backblaze can even send you a flash key or a USB Hard Drive with all of your data on it. Stop putting off backing up your computer. It&rsquo;s easier than ever with Backblaze. Head to the Backblaze homepage and start your free trial today",
		"keywords": ["backblaze","backup","computer","drive","microsoft","personal","remote","service","windows","android","backblaze","backing","brettterpstra","drive","thanks","accessing","allows","automatic","available","backblaze","backing","backs","backup","brettterpstra","browser","class","computer","continuous","documents","download","easier","everything","files","flash","height","homepage","https","image","loading","media","movies","music","natively","nofollow","noscript","online","original","photos","picture","provider","putting","quickly","restores","retrieve","rsquo","secure","source","speeds","sponsor","sponsoring","srcset","strives","strong","title","today","trial","unlimited","unthrottled","uploads","users","using","videos","whatever","width","world","worries"]
	},{
		"title": "LaunchBar 6.4 streamlines custom actions",
		"url": "/2015/05/27/launchbar-6-dot-4-streamlines-custom-actions/",
		"tags": ["launchbar","productivity"],
		"date": "May 27<span>th</span>, 2015",
		"ts": "1432756800",
		"summary": "The latest update to LaunchBar has a cool new feature that helps it catch up in the area that Alfred jumped ahead in: the Action Editor. It&rsquo;s not a drag and drop workflow system like Alfred has, but combined with the expanded API that LaunchBar 6 added, it allows users to easily create custom actions. The editor allows you to define scripts for handling automatic suggestions, default handlers for commands and input, as well as custom handlers for commands originating from url schemes. You can even determine what context a script was called in to have the same script handle all three modalities. You can write actions in JavaScript, AppleScript, Python, Ruby, Swift, or using Bash/Zsh scripts. The API is excellent, especially the JavaScript handlers. If you&rsquo;re interested in writing your own LaunchBar actions, head to the LaunchBar 6 Developer Documentation",
		"keywords": ["applescript","interface","javascript","programming","python","action","alfred","applescript","developer","editor","javascript","launchbar","python","swift","actions","added","ahead","allows","automatic","called","catch","commands","context","create","custom","default","define","easily","editor","especially","excellent","expanded","feature","handle","handlers","handling","helps","input","interested","jumped","latest","modalities","originating","rsquo","schemes","script","scripts","suggestions","system","users","using","workflow","write","writing"]
	},{
		"title": "TextExpander 5",
		"url": "/2015/05/27/textexpander-5/",
		"tags": ["productivity","smile","snippet","textexpander"],
		"date": "May 27<span>th</span>, 2015",
		"ts": "1432746000",
		"summary": "Smile has officially released TextExpander 5 for Mac. I&rsquo;ve been in on the beta test round and I&rsquo;m excited about all of the new features. Smile is a long-time supporter of this blog, but my love of TextExpander requires no remuneration; this post is straight from my heart. This latest version of TextExpander includes a suggestion feature that will tell you when you type a word or phrase often enough that it thinks you should consider making a snippet for it. It does this with OS X notifications, and clicking one will take you to the snippet editor where you can accept or reject the suggestion. If you decide to keep it, just add a shortcut and it&rsquo;s part of your collection. You can ignore words, remove suggestions en masse, or &mdash; if the suggestions get annoying &mdash; just disable the feature. I&rsquo;ve found the suggestion feature most helpful when I start writing a piece about a specific product. It&rsquo;s usually a product name with intercaps that I&rsquo;ve never needed a snippet for before, and would normally forget to save the extra keystrokes. For example, it just suggested that I make a snippet for \"TextExpander,\" which is probably a really good idea. It will also notify you when you type a word or phrase that you already have a snippet for. Just a friendly reminder that shows you the abbreviation you could have used to save some typing. Version 5 also offers custom storage locations for snippets, allowing sync using any cloud service, including iCloud Drive. You can search and expand snippets, abbreviations and suggestions inline while you type, and preview expanded snippets before committing to them. Lastly, TextExpander now supports JavaScript actions. With full access to JS for Automation, this means that we can start making cool programmatic snippets that work on both OS X and TextExpander for iOS. Watch for an expansion to the TextExpander Tools soon! Check out TextExpander 5. I can&rsquo;t fathom that any Mac owner isn&rsquo;t already using it, but I know there are some. Free demos of all Smile products are available at smilesoftware.com",
		"keywords": ["icloud","iphone","smile","software","automation","check","drive","javascript","lastly","smile","textexpander","tools","version","watch","abbreviation","abbreviations","accept","access","actions","allowing","annoying","available","before","clicking","cloud","collection","committing","consider","custom","decide","demos","disable","editor","enough","example","excited","expand","expanded","expansion","extra","fathom","feature","features","forget","found","friendly","heart","helpful","icloud","ignore","includes","including","inline","intercaps","keystrokes","latest","locations","making","masse","mdash","needed","normally","notifications","offers","officially","often","owner","phrase","piece","preview","product","products","programmatic","reject","released","reminder","remove","requires","round","rsquo","search","service","shortcut","shows","smilesoftware","snippet","snippets","specific","storage","straight","suggested","suggestion","suggestions","supporter","supports","thinks","typing","using","usually","version","where","while","words","writing"]
	},{
		"title": "Web Excursions for May 27, 2015",
		"url": "/2015/05/27/web-excursions-for-may-27-2015/",
		"tags": ["bookmarks"],
		"date": "May 27<span>th</span>, 2015",
		"ts": "1432731600",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Twinword Text Analysis Bundle API Documentation A great API for sentiment analysis, topic tagging, lemmatizing, and more. SoundCloud Wall A fun music discovery tool for SoundCloud. inessential: How Not to Crash The first in a great series of posts from Brent Simmons with tips for writing Objective-C apps that don&rsquo;t crash. Find more of the series in the May archives. MacID - Unlock your Mac with just your fingerprint. This is great. An iOS/Mac combo app that lets you unlock your Mac using Touch ID on your iOS device. It also allows you to define custom tap sequences for trackpad-based locking and unlocking. Hand in Hand Clock Now that personal timepieces are more ubiquitous than ever, be it a cell phone, a watch, a FitBit&hellip; the idea of a wall mounted clock is less useful than ever. This one strikes my fancy, though, and there are schematics available for building your own with a bit of 3D printing",
		"keywords": ["printing","brent","bundle","check","clock","crash","fitbit","macid","setapp","simmons","soundcloud","touch","twinword","unlock","access","allows","archives","available","based","brought","building","clock","combo","crash","custom","define","device","discovery","excursions","fancy","fingerprint","first","great","hellip","hundreds","inessential","lemmatizing","locking","monthly","mounted","music","partnership","personal","phone","posts","printing","rsquo","schematics","sentiment","sequences","series","strikes","subscription","tagging","timepieces","today","topic","trackpad","ubiquitous","unlock","unlocking","useful","using","watch","writing"]
	},{
		"title": "MacPaw announces DevMate distribution platform for Mac devs",
		"url": "/2015/05/26/macpaw-announces-devmate-distribution-platform-for-mac-devs/",
		"tags": ["developer"],
		"date": "May 26<span>th</span>, 2015",
		"ts": "1432645800",
		"summary": "MacPaw (makers of CleanMyMac 3, Encrypto, Listen for iOS, and more) has been developing a platform for Mac OS app development and distribution for a while. It started as an internal project for use with CleanMyMac, but is available today as DevMate, a tool for all Mac developers and vendors. Some of my favorite devs have been involved in early testing, including Realmac, Smile, and Digi DNA. I&rsquo;ve explored the beta platform myself, and it looks like an excellent and fully polished product. A single SDK offers licensing/activation (via Fastspring), crash report and feedback collection, and update delivery. It also offers a complete set of analytics and data collection tools. Along with Paddle, these all-in-one platforms have made app releases and app distribution (with tools for MAS and direct sales) easier than ever before. It&rsquo;s a good time to be writing Mac apps. Whether you&rsquo;re a seasoned developer already marketing or someone just looking into a first release, DevMate is worth taking a look at",
		"keywords": ["development","macpaw","software","cleanmymac","devmate","encrypto","fastspring","listen","macpaw","paddle","realmac","smile","activation","analytics","available","before","collection","crash","delivery","developer","developers","developing","development","direct","distribution","easier","excellent","explored","favorite","feedback","first","fully","including","internal","involved","licensing","looking","looks","makers","marketing","myself","offers","platform","platforms","polished","product","project","release","releases","report","rsquo","sales","seasoned","single","started","taking","testing","today","tools","vendors","while","worth","writing"]
	},{
		"title": "Beyond Productivity workshop with Mike Vardy",
		"url": "/2015/05/25/beyond-productivity-workshop-with-mike-vardy/",
		"tags": ["productivity"],
		"date": "May 25<span>th</span>, 2015",
		"ts": "1432602720",
		"summary": "Mike Vardy, friend, Systematic guest, and productivity strategist (among many other things), is offering an online workshop called Beyond Productivity tomorrow, Tuesday, May 26. The workshop will stream live from 10am-3pm PDT, and will be available for replay. I wanted to give you a heads up tonight because you can get in for $39 until the end of Tuesday, before the price goes up to $59 on Wednesday. Topics will include better time management, planning, reducing stress and urgency, and Mike&rsquo;s process called \"The NOW Year Formula.\" For more info, check out the Beyond Productivity website",
		"keywords": ["beyond","formula","productivity","vardy","beyond","formula","productivity","systematic","topics","tuesday","vardy","wednesday","among","available","because","before","called","check","friend","guest","heads","management","offering","online","planning","price","process","productivity","reducing","replay","rsquo","strategist","stream","stress","tomorrow","tonight","urgency","wanted","website","workshop"]
	},{
		"title": "Logging snippets for Sublime Text",
		"url": "/2015/05/22/logging-snippets-for-sublime-text/",
		"tags": ["snippet","sublimetext"],
		"date": "May 22<span>nd</span>, 2015",
		"ts": "1432314300",
		"summary": "Following most of the same patterns as TextMate snippets, Sublime Text snippets can be a great timesaver. One of the things I&rsquo;ve been doing recently is assigning keyboard shortcuts to snippets instead of tab expansions, allowing me to apply them to selected text with the placeholder. That, combined with some text mutation offers some serious timesaving options. To illustrate, I thought I&rsquo;d share a couple of very handy logging snippets. These are added to the default user keybindings file located in your Sublime application support folder, in the file (substitute your OS as needed). The first thing to note is that you can add a language scope to the keybindings, so that the same keybinding inserts different snippets depending on what language you&rsquo;re currently working in. Here are the two logging snippets I use most commonly, one for JavaScript, and one for Objective-C: These add an ⌥⇧L (Option-Shift-L) keybinding. When you trigger it in a JS file, it will insert a statement. If there is a selection when it&rsquo;s triggered, the selection will be moved into the arguments for the command. Initially the keyword is selected, so that you can change it to , , or any of the available methods in the console API. Hitting TAB from there jumps into the arguments for the command, where you can add a string or object to log. One more TAB jumps the cursor to after the closing semicolon. In the Objective-C snippet, ⌥⇧L will produce . Any current selection will be added to the format string arguments, and you can use placeholders to reference the arguments. The is automatically selected for editing. If you delete the from the format string, the trailing comma will automatically be removed. If you add back any placeholder, the comma will return and TAB will place the cursor into the format arguments. Between the two of these examples, you should have enough to come up with snippets for debug logging in any language. If you have some awesome snippets to share, please gist them and shoot me a link here or on Twitter",
		"keywords": ["coding","keyboard","programming","snippet","sublime","between","default","hitting","javascript","logging","nslog","packages","selection","shift","sublime","textmate","twitter","added","allowing","apply","arguments","assigning","automatically","available","awesome","brettterpstra","change","chrome","class","closing","comma","command","commonly","console","contact","contents","context","couple","cursor","debug","default","depending","developer","devtools","different","doing","editing","enough","examples","expansions","first","folder","format","github","great","handy","height","highlight","highlighter","https","inserts","jumps","keybinding","keybindings","keyboard","keymap","keyword","language","loading","located","logging","match","media","methods","moved","mutation","needed","noscript","object","offers","operand","operator","options","original","patterns","picture","placeholder","placeholders","plaintext","produce","recently","removed","return","rouge","rsquo","scope","selected","selection","selector","semicolon","serious","share","shift","shoot","shortcuts","snippet","snippets","source","srcset","statement","string","sublime","substitute","support","thought","timesaver","timesaving","title","trailing","trigger","triggered","ttscoff","twitter","uploads","where","width","working"]
	},{
		"title": "Web Excursions for May 21, 2015",
		"url": "/2015/05/21/web-excursions-for-may-21-2015/",
		"tags": ["bookmarks"],
		"date": "May 21<span>st</span>, 2015",
		"ts": "1432220400",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. ControlAir If you haven&rsquo;t gone the Leap route, here&rsquo;s a touch-free controller for Mac that uses your built-in camera to allow gesture-based control of iTunes and Spotify, among others. SmartIcons - Smart SVG icon system A huge collection of web-ready icons that updates constantly. There&rsquo;s a great variety in there, and plans start at $0. Colorsublime A great collection of themes for Sublime Text. The coolest part is the plugin (available through Package Control) that lets you flip through and preview the available themes in the current view using the command palette, and install/enable them without constantly visiting the preferences menu or editing the JSON config. Sunrise Meet A third-party keyboard (iOS link, available for Android as well) which lets you schedule one-to-one meetings with invites and calendar integration from any app. For me&mdash;someone who only meets with one person at a time anyway&mdash;this is awesome. IFTTT Apps for Automatic Automatic (the smart assistant for your car) has introduced a bunch of app integrations, but the most intruiguing to me are the IFTTT triggers. I can automate events on my iPhone and connected devices based on speed, error codes, or even when I&rsquo;m starting or ending a drive. Neat. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["android","google","iphone","itunes","media","spotify","store","streaming","android","automatic","check","colorsublime","control","controlair","ifttt","mindmeister","package","smart","smarticons","spotify","sublime","sunrise","allow","among","anyway","assistant","automate","available","awesome","based","boosting","brainstorming","brought","built","bunch","calendar","camera","codes","collaborating","collaborative","collection","command","config","connected","constantly","control","controller","coolest","devices","drive","editing","ending","error","events","excursions","gesture","great","haven","iphone","itunes","icons","install","integration","integrations","introduced","intruiguing","invites","keyboard","mapping","mdash","meetings","meets","others","palette","partnership","party","person","plans","plugin","preferences","preview","productivity","ready","route","rsquo","schedule","smart","software","speed","starting","system","themes","third","through","touch","triggers","updates","using","variety","visiting"]
	},{
		"title": "Working Copy: Git productivity on iOS [sponsor]",
		"url": "/2015/05/21/working-copy-git-productivity-on-ios-sponsor/",
		"tags": ["sponsor"],
		"date": "May 21<span>st</span>, 2015",
		"ts": "1432206000",
		"summary": "Thanks to Working Copy for sponsoring BrettTerpstra.com this week! I searched a long time for a good way to work with Git repositories on iOS, and Working Copy is the most powerful I&rsquo;ve found. Working Copy is a full-featured Git client for iPhone & iPad. With Working Copy you can clone repositories, view and edit files, commit changes, and push commits back to the server. Other applications can open files inside Working Copy, letting you edit images, text files or even SVGs in your favorite editor. Included is a state-of-the-art diff viewer for investigating the changes to text files and images before deciding to commit or revert these changes. You can create new branches and merge them back. You can keep your on-device repositories synchronized with one or multiple remotes. These remotes can be hosted on GitHub, BitBucket or any modern Git server supporting http, https, or ssh transfers. Working Copy makes it easy to store files in your Git repositories with a Share Extension available from any application using the standard iOS share-sheet. Applications supporting the iCloud document picker can read and update files directly in the repositories you have cloned, saving you the trouble of sending files back and forth between applications. Keep your work within reach on your iPhone or iPad. Whether you use Git as part of your job or for personal projects, Working Copy is the ultimate solution to being productive on the go. Download it for free today and start cloning",
		"keywords": ["hosting","icloud","iphone","itunes","service","store","working","applications","bitbucket","brettterpstra","download","extension","github","included","share","thanks","working","applications","available","before","between","branches","changes","client","clone","cloned","cloning","commit","commits","create","deciding","device","directly","document","editor","favorite","featured","files","forth","found","hosted","https","icloud","iphone","images","inside","investigating","letting","makes","merge","modern","multiple","personal","picker","powerful","productive","projects","reach","remotes","repositories","revert","rsquo","saving","searched","sending","server","share","sheet","solution","sponsoring","standard","store","supporting","synchronized","today","transfers","trouble","ultimate","using","viewer","within"]
	},{
		"title": "Postbox 4",
		"url": "/2015/05/20/postbox-4/",
		"tags": ["email","productivity"],
		"date": "May 20<span>th</span>, 2015",
		"ts": "1432141200",
		"summary": "Postbox 4 was released last week, and it&rsquo;s good. Yes, I&rsquo;m way behind on blogging, but that&rsquo;s another post. Postbox has long been of interest to me because it offers stability and a degree of extensibility. I&rsquo;ve settled into MailMate quite nicely in recent years, but the new version of Postbox looks amazing, and is a great option for people who need a level of power that falls between Mail.app and MailMate. First, the new version is pretty. Postbox has always achieved a certain level of aesthetic beauty that defied its origin as a Mozilla-based email client. This version, though, is stunning. The \"Focus Pane\" that has been part of Postbox for a while now has received a powerful update. It provides a way to find messages using common criteria such as recipient headers, attachment attributes, and custom labels. The criteria can be quickly combined into powerful searches. I like this because it&rsquo;s as powerful as many of my Smart Mailboxes, but simplified from a setup and modification perspective. Postbox 4 also adds Box and OneDrive to its cloud attachment capability, which lets you have your email attachments automatically hosted on a cloud server to avoid sending large files through your email host and into your recipient&rsquo;s inbox. The \"Domain Fencing\" feature is new, too, and something I haven&rsquo;t seen implemented anywhere else before. When composing a message or reply, it can intelligently warn you if you&rsquo;re sending it to someone outside of your organization when you shouldn&rsquo;t be, and if you have multiple accounts it can let you know if you&rsquo;re replying from the \"wrong\" account. There&rsquo;s a lot more to check out, and you can read the full release notes, but if you&rsquo;re in the market for a powerful email client, I recommend just giving it a shot",
		"keywords": ["agent","client","dropbox","editor","email","message","mozilla","postbox","thunderbird","windows","domain","fencing","first","focus","mailmate","mailboxes","mozilla","onedrive","postbox","smart","account","accounts","achieved","aesthetic","amazing","another","anywhere","attachment","attachments","attributes","automatically","avoid","based","beauty","because","before","behind","between","blogging","capability","certain","check","client","cloud","common","composing","criteria","custom","defied","degree","email","extensibility","falls","feature","files","giving","great","haven","headers","hosted","implemented","inbox","intelligently","interest","labels","level","looks","market","message","messages","multiple","nicely","notes","offers","organization","origin","outside","people","perspective","powerful","provides","quickly","received","recent","recipient","recommend","release","released","reply","replying","rsquo","searches","sending","server","settled","setup","shouldn","simplified","stability","stunning","through","using","version","while","wrong","years"]
	},{
		"title": "New features and fixes for BitTorrent Sync",
		"url": "/2015/05/20/new-features-and-fixes-for-bittorrent-sync/",
		"tags": ["macos","windows"],
		"date": "May 20<span>th</span>, 2015",
		"ts": "1432134060",
		"summary": "I&rsquo;ve become an even bigger fan of Sync since BitTorrent released 2.0, so I thought I&rsquo;d mention the 2.0.120 update they posted yesterday. The update offers quite a few fixes, as well as some new features such as a built-in search for folders, users, and devices, and an easier way to see which user or device owns each folder in the list. There&rsquo;s a blog post with the announcement, and the full changelog has all of the details. If you&rsquo;re looking for a secure way to own your own cloud, you download Sync for free",
		"keywords": ["bittorrent","bittorrent","announcement","bigger","built","changelog","cloud","details","device","devices","download","easier","features","fixes","folder","folders","looking","mention","offers","posted","released","rsquo","search","secure","since","thought","users","yesterday"]
	},{
		"title": "Touch-free scanning on iOS with PDFpen Scan+ [sponsor]",
		"url": "/2015/05/14/touch-free-scanning-on-ios-with-pdfpen-scan-plus-sponsor/",
		"tags": ["sponsor"],
		"date": "May 14<span>th</span>, 2015",
		"ts": "1431601200",
		"summary": "Thanks to Smile and their power-packed scanner for iOS, PDFpen Scan+ for supporting BrettTerpstra.com this week! PDFpen Scan+ gives you the scanning and OCR power you need in a beautifully-designed app that&rsquo;s always with you. Version 2.0 came out on March 18, and it&rsquo;s a free upgrade for existing users. Touch-free scanning on your iPhone or iPad camera Detects page edges automatically when camera is focused and steady Automatic cropping In-camera setting for color / grayscale / black and white In-camera setting for page size, including legal, business card, receipt sizes, and more Perform OCR text recognition, and create a searchable and shareable PDF directly on your iPhone or iPad. Point your iPhone or iPad camera at a document, receipt, or business card, and PDFpen Scan+ will take the scan, automatically crop, and prepare to edit – all without a tap. PDFpen Scan+ can automatically upload your editable, searchable PDFs to iCloud or Dropbox so that your scans are available on all your devices. The best scanner is the one that&rsquo;s with you, so grab PDFpen Scan+ from the App Store today",
		"keywords": ["dropbox","icloud","idevice","iphone","store","automatic","brettterpstra","detects","dropbox","pdfpen","point","smile","store","thanks","touch","version","automatically","available","beautifully","black","brett","brettterpstra","business","camera","class","color","crcampaign","crcat","create","cropping","crsource","designed","devices","directly","document","edges","editable","focused","gives","grayscale","height","https","icloud","iphone","image","including","legal","loading","media","nofollow","noscript","original","packed","picture","prepare","recognition","rsquo","scanner","scanning","scans","searchable","setting","shareable","sizes","smilesoftware","source","srcset","steady","strong","supporting","title","today","upgrade","upload","uploads","users","white","width"]
	},{
		"title": "Introducing The Shuttle - never lose your Apple Remote again",
		"url": "/2015/05/07/introducing-the-shuttle-never-lose-your-apple-remote-again/",
		"tags": ["shuttle"],
		"date": "May 7<span>th</span>, 2015",
		"ts": "1431025140",
		"summary": "Ok, so I teased \"The Shuttle\" a while ago, but it&rsquo;s ready for sale now. It&rsquo;s a handmade oak holder for the Apple Remote that looks great with the sleek design of the remote. Its raison d&rsquo;être is to keep you from losing your Apple Remote, and doing it with class and style. I own several of the silver Apple Remotes, yet could never find any of them. On Twitter and talking to friends I found I was far from alone. I prototyped this out of a toilet paper tube, and it&rsquo;s come a long way since then. Now, thanks to my father&rsquo;s engineering and woodworking skills, it&rsquo;s a gorgeous piece that not only solves the lost remote issue, but also looks good in any setting. I have large hands. My wife has much smaller hands, so part of the design process was coming up with a size that worked for everyone. The end result is comfortable to use in any size hand &mdash; and more comfortable than the sharp-edged sliver of aluminum has ever been. \"We used to lose our Apple Remote twice a day. Over several weeks of using The Shuttle, we haven&rsquo;t lost it once. I&rsquo;m embarrassed to admit how much better The Shuttle has made my life.\" - Merlin Mann This is a handcrafted piece that&rsquo;s built to last, and it&rsquo;s not an impulse purchase item. I&rsquo;m pricing it at $79, but for a limited time you can order it at the intro price of $59. Right now The Shuttle is listed as a made-to-order product, but we have stock on hand and ready to ship. Tired of looking for your Apple Remote? Here you go",
		"keywords": ["aluminum","apple","design","engineering","merlin","remote","apple","merlin","remote","remotes","right","shuttle","tired","twitter","admit","alone","aluminum","apple","blockquote","brettterpstra","built","class","comfortable","coming","design","doing","edged","embarrassed","engineering","everyone","father","found","friends","gorgeous","great","handcrafted","handmade","hands","haven","height","holder","hotdogsladies","https","image","impulse","intro","ldquo","limited","listed","listing","loading","looking","looks","losing","mdash","media","noscript","original","paper","picture","piece","price","pricing","process","product","prototyped","raison","rdquo","ready","remote","rsquo","setting","several","sharp","shuttle","shuttleheader","silver","since","skills","sleek","sliver","smaller","solves","source","srcset","stock","style","talking","teased","thanks","title","toilet","twice","twitter","uploads","using","weeks","while","width","woodworking","worked"]
	},{
		"title": "Centralize your project management with Pagico 7 [sponsor]",
		"url": "/2015/05/07/centralize-your-project-management-with-pagico-7-sponsor/",
		"tags": ["sponsor"],
		"date": "May 7<span>th</span>, 2015",
		"ts": "1430996400",
		"summary": "Thanks to Pagico 7 for supporting BrettTerpstra.com this week! Pagico is a feature-rich, easy-to-use way to put all your notes, tasks, files, projects and clients in one place. It lets you easily stay on top of project management, and helps you archive everything for future reference. It features many unique designs to seamlessly combine task and data management into one elegant package. Pagico is cross-platform &mdash; available on Mac, Windows and Ubuntu &mdash; and the built-in cloud sync feature works with all your computers and iOS/Android mobile devices. Cross-platform cloud sync also allows fluid collaboration in small to mid-size teams. The Dashboard Flowchart offers a stunning, interactive view of your schedule to give you the big picture Create hyperlinks between any object in your database with the Cross-link feature As your project database grows, an innovative tag browser makes it simple to locate the information you need The Daily Planning feature lets you easily prioritize and reschedule tasks for the current day Using Natural Language Parsing &mdash; a new feature in version 7 &mdash; Pagico can interpret any text and create new tasks, complete with date information. Also new in Pagico 7 is integration with Zapier, allowing you to centralize thousands of apps and services into one project manager",
		"keywords": ["managment","pagico","project","software","ubuntu","windows","zapier","android","brettterpstra","create","cross","daily","dashboard","download","flowchart","language","natural","pagico","parsing","planning","sponsored","syndicate","thanks","ubuntu","using","windows","zapier","allowing","allows","archive","available","between","browser","built","centralize","clients","cloud","collaboration","computers","create","cross","database","designs","devices","easier","easily","elegant","everything","feature","features","files","fluid","grows","helps","hyperlinks","information","innovative","integration","interactive","interpret","makes","management","manager","mdash","mobile","notes","object","offers","package","picture","platform","prioritize","project","projects","reschedule","rsquo","schedule","seamlessly","services","simple","small","stunning","supporting","tasks","teams","thousands","trial","unique","version","works"]
	},{
		"title": "Recap: May 06th, 2015",
		"url": "/2015/05/06/recap-may-06th-2015/",
		"tags": ["recap"],
		"date": "May 6<span>th</span>, 2015",
		"ts": "1430953200",
		"summary": "Tinderbox 6.2, industrial-strength notes sponsor (Apr 30th) Thanks to Tinderbox for sponsoring BrettTerpstra.com this last week! Be sure to check out the latest release of this full-featured organization tool. Rock Paper Wallpapers (May 1st) I&rsquo;m quite happy with this round of typographic wallpapers based on classic rock/punk song lyrics. At least one of these is going to become a t-shirt. My hackable vegetarian sandwich (May 3rd) Hungry? A basic recipe for a great-tasting hot sandwich, for vegetarians and non-vegetarians alike. Wired In: blunt social cues for the workplace (May 4th) A new Kickstarter for slick, lighted signs to help prevent workplace interruptions. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["lyrics","recipe","tinderbox","wallpaper","brettterpstra","hungry","kickstarter","paper","recaps","thanks","tinderbox","wallpapers","wired","alike","based","basic","blunt","check","classic","curated","digest","featured","format","going","great","hackable","happy","industrial","interest","interruptions","latest","lighted","lyrics","notes","organization","posts","prevent","quick","recipe","release","round","rsquo","sandwich","shirt","signs","slick","social","specifically","sponsor","sponsoring","strength","subscribe","summary","tasting","typographic","updates","vegetarian","vegetarians","wallpapers","weekly","workplace"]
	},{
		"title": "Web Excursions for May 05, 2015",
		"url": "/2015/05/05/web-excursions-for-may-05-2015/",
		"tags": ["bookmarks"],
		"date": "May 5<span>th</span>, 2015",
		"ts": "1430830800",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Brighten Your Day with Motion Controlled Cabinet Light Every day I find things that make me wish I had time to actually dig into Arduino programming. Robotic feline enrichment toys would be my first project, of course, then lighting automation. AnyBar and SuperDuper! Great use of AnyBar from Dr. Drang. Learn Git Branching A very cool interactive tutorial on Git branching. Great stuff for anyone starting with Git, and even more for people at an intermediate (plus) level. kcd As far as command line directory navigation goes, this utility seems pretty awesome so far. Yosemite: Enable dark mode with a keyboard shortcut I don&rsquo;t use Dark Mode in Yosemite, but I do need it when testing app UIs. I hadn&rsquo;t paid attention to this option previously, but it&rsquo;s handy for people who switch Dark Mode on and off frequently. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["arduino","command","interface","keyboard","shortcut","anybar","arduino","backblaze","branching","brighten","cabinet","check","controlled","drang","great","learn","light","motion","robotic","superduper","yosemite","affordably","anyone","automation","awesome","backs","branching","brought","cloud","command","computer","directory","enrichment","entire","everything","excursions","feline","first","handy","interactive","intermediate","keyboard","level","lighting","navigation","partnership","people","previously","programming","project","reliably","rsquo","securely","seems","shortcut","starting","stuff","switch","testing","today","tutorial","utility"]
	},{
		"title": "Wired In: blunt social cues for the workplace",
		"url": "/2015/05/04/wired-in-blunt-social-cues-for-the-workplace/",
		"tags": ["bluetooth","hardware","kickstarter"],
		"date": "May 4<span>th</span>, 2015",
		"ts": "1430745600",
		"summary": "Joshua Howland, Caleb Hicks, and Andrew Madsen launched a Kickstarter called \"Wired In\" today. It&rsquo;s a Bluetooth-enabled desktop sign that lets co-workers know when you&rsquo;re busy. It has the obtuse effect of shutting an office door in an unobtrusive package&hellip; that doesn&rsquo;t require having your own office. The inability to avert distractions from co-workers without the luxury of a door you can close is part of the reason I never did well in office environments. If you don&rsquo;t have the remote-worker convenience of just turning off IRC for a bit, this could be a great solution. Even working from home, I actually want one myself to signal \"on air\" status upstairs when podcasting. The product is a clear (replaceable) laser-etched acrylic slab on an aluminum base which signals your status by catching light from an LED in the etched portion. The sign allows remote control via Bluetooth or USB. There are three phrases available (In the Zone, Wired In, On Air), with customization options, including custom text and inverting the etching so that the background is etched and the text is clear. There are myriad options for controlling the sign via Bluetooth 4.0, including Remote and Pomodoro apps on iOS, Mac, and Apple Watch. Wired In also has a RESTful API that you can integrate with tools such as Slack, HipChat, IFTTT, Zapier, and more. Thanks to the open architecture, there are plenty of automation options using AppleScript, Calendar, and keyboard shortcuts. There is, of course, a hardwired switch (on the Bluetooth model) as well. \"Wired In\" looks like a simple piece of beautiful hardware with a lot of fun automation options. You can jump in on the Kickstarter campaign and get a sign with backing as small as $20 ($25k goal). More info on the Wired In homepage, and follow @wearewiredin on Twitter for updates",
		"keywords": ["bluetooth","kickstarter","andrew","apple","applescript","bluetooth","caleb","calendar","hicks","hipchat","howland","ifttt","joshua","kickstarter","madsen","pomodoro","restful","remote","slack","thanks","twitter","watch","wired","zapier","acrylic","allows","aluminum","architecture","automation","available","avert","background","backing","beautiful","called","campaign","catching","clear","close","control","controlling","convenience","custom","customization","desktop","distractions","doesn","enabled","environments","etched","etching","great","hardware","hardwired","having","hellip","homepage","inability","including","integrate","inverting","keyboard","laser","launched","light","looks","luxury","model","myriad","myself","obtuse","office","options","package","phrases","piece","plenty","podcasting","portion","product","remote","replaceable","rsquo","shortcuts","shutting","signal","signals","simple","small","solution","status","switch","today","tools","turning","unobtrusive","updates","upstairs","using","wearewiredin","worker","workers","working"]
	},{
		"title": "My hackable vegetarian sandwich",
		"url": "/2015/05/03/my-hackable-vegetarian-sandwich/",
		"tags": ["personal","recipe"],
		"date": "May 3<span>rd</span>, 2015",
		"ts": "1430695320",
		"summary": "As some know, almost 2/3 of my daily diet consists of a flavorless food substitute, which sounds horrifying to many. The thing is, I love food and I enjoy cooking. I just don&rsquo;t like cooking more than once a day, and I don&rsquo;t like eating too many frozen meals and processed foods when I&rsquo;m not feeling like cooking. When I do cook, however, I like the experimentation side. Sunday evening seems like a good enough time to post a \"hackable\" recipe. Yes, all recipes are hackable. That&rsquo;s a major entertainment point of cooking for me. Some recipes are just safer to go crazy with than others. I&rsquo;ve gone from vegetarian to carnivore and back to vegetarian, but there&rsquo;s one simple meal &mdash; a vegetarian sandwich &mdash; that I&rsquo;ve always enjoyed. I don&rsquo;t know how to name it, and it changes a bit every time I make it. It&rsquo;s kind of a \"vegetarian Rueben,\" but very loosely so. Every part of the recipe is tweakable and it&rsquo;s hard to screw up. Here&rsquo;s the basic idea. The \"meat\" of the sandwich is tempeh. I start by seasoning it because if you don&rsquo;t, it&rsquo;s almost as boring as tofu. My usual tactic is to slice the tempeh to squares about 3x3\" about 1/2\" thick, then simmer them for 5 minutes in a base. My current favorite is a strong Better Than Bouillion mix. After seasoning, I move the tempeh to a plate to air while I prep the rest. The bread I use is usually rye, but it varies. I definitely prefer a denser bread for these, and darker grains are my favorite. I consider cheese an important part of the recipe, but you could make it vegan without it if you wanted to. I started with Swiss, but have come to like it with deli-sliced Provolone lately. This happened because I make them with whatever&rsquo;s handy, rarely planning ahead, and somehow they always seem to work. Next is the sauerkraut. Don&rsquo;t use the stuff in the can that tastes more like can than cabbage. Get the stuff that&rsquo;s still a little crisp and without a ton of salt and sweetener in the brine. It&rsquo;s hard to find at a grocery store, but the local co-op probably has some good choices. Press the sauerkraut lightly with a fork against a plate, draining it before using it. Excess brine will make the sandwich soggy (and annoying to eat). Lastly, the dressing. My standard is a good brown mustard, but I&rsquo;ve used everything from Thai Peanut salad dressing to Worcestershire sauce. Quantity used depends on the&hellip;",
		"keywords": ["cooking","mustard","olive","poppy","rueben","vegetarian","bouillion","flexibility","lastly","lightly","peanut","press","provolone","qhenbukce","quantity","rueben","stack","sunday","swiss","tempeh","worcestershire","against","ahead","almost","amazon","annoying","another","based","basic","basting","because","before","boring","bread","brettterpstra","brine","brown","browning","butter","cabbage","carnivore","changes","cheese","choices","class","consider","consists","cooking","crazy","creative","creativeasin","crisp","daily","darker","definitely","denser","depends","draining","dressing","eating","edges","enjoy","enjoyed","enough","entertainment","evening","everything","experimentation","favorite","feeling","first","flavor","flavorless","foods","forkfuls","frozen","grains","grocery","hackable","handy","happened","height","horrifying","however","https","image","important","inset","ldquo","light","lightly","linkcode","linkid","little","loading","local","loosely","major","margarine","mdash","meals","media","minute","minutes","mustard","noscript","olive","original","others","outside","personal","picture","planning","plate","point","prefer","press","processed","product","rarely","rdquo","recipe","recipes","right","rsquo","safer","salad","sandwich","sauce","sauerkraut","screw","seasoned","seasoning","seems","simmer","simple","skillet","slice","sliced","slices","soggy","somehow","sounds","source","soylent","spatula","spread","squares","srcset","standard","started","store","strength","strong","stuff","substitute","sweetener","tactic","taste","tastes","tempeh","thick","title","tweakable","uploads","using","usually","varies","vegan","vegetarian","wanted","whatever","while","width","wikipedia","wilting","worked"]
	},{
		"title": "Rock Paper Wallpapers",
		"url": "/2015/05/01/rock-paper-wallpapers/",
		"tags": ["freebie","wallpaper"],
		"date": "May 1<span>st</span>, 2015",
		"ts": "1430485200",
		"summary": "Not that I plan to make a habit of \"Friday Freebies,\" but here&rsquo;s a little something I&rsquo;ve been playing with for a while. It&rsquo;s not an app. It&rsquo;s not even functional. Just a series of rock-lyric-inspired typographic wallpapers for iOS and desktop. I didn&rsquo;t output every possible pixel size, but the primary ratios you need are there for standard, widescreen, and iPhone 6/plus. Download the full set at the bottom and plunder as desired. These have a permanent home in the \"otherstuff\" category (along with the random ringtones) under Wallpapers. Rock Paper Rock Wallpapers v1.0.0 Download Rock Paper Rock Wallpapers v1.0.0 A collection of typographic wallpapers based on classic rock and punk songs for iPhone/iPad/Desktop Published 04/30/15. Updated 04/30/15. Changelog Donate &bull; More info&hellip; Not because it is easy, but because wallpaper. Or me on GitHub",
		"keywords": ["desktop","graphics","iphone","changelog","desktop","donate","download","freebies","friday","github","paper","published","updated","wallpapers","based","because","bottom","category","classic","collection","desired","desktop","functional","habit","hellip","iphone","inspired","little","lyric","otherstuff","output","permanent","pixel","playing","plunder","possible","primary","random","ratios","ringtones","rsquo","series","songs","standard","typographic","under","wallpaper","wallpapers","while","widescreen"]
	},{
		"title": "JekyllConf: free online conference this weekend",
		"url": "/2015/04/30/jekyllconf-free-online-conference-this-weekend/",
		"tags": ["jekyll"],
		"date": "Apr 30<span>th</span>, 2015",
		"ts": "1430407320",
		"summary": "CloudCannon is running a free online conference for \"all things Jekyll\" this weekend. If you&rsquo;re interested in learning more about the static site generator, you can join in to hear from a great lineup of eight speakers, including Tom Preston-Werner (a.k.a. mojombo, creator of Jekyll), and Parker Moore (current Jekyll Core Team lead). The conference takes place on Saturday May 2nd from 10am-5pm PST. This is the first JekyllConf and CloudCannon hopes to inspire further awareness and adoption of Jekyll. If you&rsquo;re not familiar with Jekyll, it&rsquo;s a a simple, blog-aware, static site generator. It&rsquo;s what brettterpstra.com runs on, and how I&rsquo;m easily able to provide the page load times and site stability I do. Jekyll also happens to be the engine behind GitHub Pages, which means you can use Jekyll to host your project&rsquo;s page, a blog, or any website from GitHub&rsquo;s servers for free. A quick look at the stats will show that Jekyll is by far the most popular generator, with the largest community support. \"Jekyll is an awesome technology and it feels like it&rsquo;s on the cusp of being really big. Part of JekyllConf is showing where Jekyll came from, what it’s capable of and where the technology is heading. It’s no longer just a tool for powering hacker’s blogs.” &ndash; Mike Neumegen, JekyllConf organizer and CEO of CloudCannon. If you&rsquo;re interested in JekyllConf, you can register at JekyllConf.com to receive the latest updates, and follow @JekyllConf on Twitter. Discussion will take place on the day of the conference using the hashtag \"#JekyllConf\". Recordings of all of the sessions will be available following the conference. I also wanted to mention how CloudCannon fits into the Jekyll world. They&rsquo;ve built a true CMS that allows you to build sites using HTML and/or Jekyll, and manage them via a web interface. Their current public product is focused on static HTML, but they&rsquo;ve found that Jekyll offers a more powerful system with easier management, even for larger sites. Not to mention it opens up far more blogging possibilities. Since late last year CloudCannon has been building support for Jekyll. The goal is to bring more Jekyll power to non-technical users, not to mention allowing collaboration by teams who would not previously have been able to get everyone on board. I&rsquo;ve been part of the private beta testing for Jekyll support, and during the conference CloudCannon will be&hellip;",
		"keywords": ["conference","generator","software","static","testing","twitter","cloudcannon","discussion","github","jekyll","jekyllconf","moore","neumegen","pages","parker","preston","recordings","saturday","since","twitter","werner","action","adoption","allowing","allows","announcing","available","aware","awareness","awesome","behind","blockquote","blogging","blogs","board","brettterpstra","bring","build","building","built","capable","check","class","cloudcannon","collaboration","community","conference","creator","discussions","easier","easily","eight","engine","everyone","familiar","feels","first","focused","found","generator","great","hacker","happens","hashtag","heading","height","highlight","highlighter","hopes","https","including","inspire","interested","interface","jekyllconf","jlatw","language","larger","largest","latest","ldquo","learning","lineup","loading","longer","management","media","mention","mojombo","ndash","noscript","offers","online","opens","organizer","original","parkr","picture","plaintext","popular","possibilities","powerful","powering","previously","private","product","project","public","quick","rdquo","receive","register","rouge","rsquo","running","servers","sessions","showing","simple","sites","source","speakers","srcset","stability","static","staticgen","stats","support","system","takes","teams","technical","technology","testing","times","title","twitter","updates","uploads","users","using","video","wanted","watch","website","weekend","where","width","world","youtube"]
	},{
		"title": "Tinderbox 6.2, industrial-strength notes [sponsor]",
		"url": "/2015/04/30/tinderbox-6-dot-2-industrial-strength-notes-sponsor/",
		"tags": ["sponsor"],
		"date": "Apr 30<span>th</span>, 2015",
		"ts": "1430391600",
		"summary": "Thanks to Tinderbox for sponsoring BrettTerpstra.com this week. Be sure to check the link at the bottom for a special offer for BrettTerpstra.com readers! Tinderbox is a professional tool for managing important notes and crucial ideas. It helps you make sense of important information, providing the tools you need to keep track of everything and adapting as your project grows. Tinderbox is a personal content assistant that helps you visualize, organize, and discover hidden relationships in your work. Tinderbox gives you superb maps, flexible outlines, tree charts, timelines and more. Better yet, Tinderbox lets you make documents that organize themselves, with agents that gather notes of special interest, lists that keep themselves sorted, rules that automatically enforce constraints, and inheritance to save repetitive typing. Whether you&rsquo;re plotting your next novel or planning a new syllabus, managing a department or launching a political campaign, or simply getting stuff done: if you’re working with complex ideas over a span of months or years, Tinderbox can help. \"an elegant and powerful Mac-based system I&rsquo;ve used for info-management since making the Mac switch six years ago\" &ndash; James Fallows This week only, BrettTerpstra.com readers can save $50 on Tinderbox Six",
		"keywords": ["management","notes","productivity","project","tinderbox","brettterpstra","fallows","james","plotting","product","software","specials","syllabus","terpstra","thanks","tinderbox","vacation","adapting","agents","assistant","automatically","based","blockquote","bottom","brettterpstra","campaign","charts","check","class","complex","constraints","content","crucial","department","design","discover","documents","eastgate","elegant","enforce","everything","flexible","gather","getting","gives","grows","height","helps","hidden","https","ideas","image","important","information","inheritance","interest","launching","ldquo","lists","loading","making","management","managing","media","ndash","nofollow","noscript","notes","novel","offer","organize","original","outlines","personal","picture","planning","plotting","political","powerful","professional","project","providing","pullquote","quote","rdquo","readers","refactoring","relationships","repetitive","right","rsquo","rules","sense","simply","since","sorted","source","special","sponsoring","srcset","stuff","superb","switch","syllabus","system","themselves","timelines","title","tools","track","typing","unique","uploads","visualize","width","working","years"]
	},{
		"title": "Meanwhile, on Systematic",
		"url": "/2015/04/29/meanwhile-on-systematic/",
		"tags": ["overtired","podcast","systematic"],
		"date": "Apr 29<span>th</span>, 2015",
		"ts": "1430317320",
		"summary": "I haven&rsquo;t written about every episode of Systematic (or Overtired) for a long time. I really should, as there have been a slew of great guests in recent episodes. From Lex Friedman to a return appearance from Merlin Mann, a very interesting conversation with Belle Beth Cooper of Exist, and a supercut of the amazing John Roderick series. Things have gotten productive with guests like David Allen, Mike Vardy, and research lecturer Joel Anderson. My conversation with Rabbi Eric Linder is among my personal recent favorites, and I love the approachable nerd vibe of Rich Stevens and Grant Robertson. Most recently, I&rsquo;ve been interviewing a string of \"women in tech.\" Kelly Guimont and Ashley Esqueda kicked off the month, and then I had the chance to interview Molly Holzschlag. If you&rsquo;re way behind on Systematic and only have time to catch up on one episode, make it #137 with Molly Holzschlag. Molly&rsquo;s first appearance last week is the beginning of a series where we&rsquo;re going to tell her life story, and it&rsquo;s a fascinating and inspiring one. It will mostly be of interest to people who use the web, which is to say that every human who visits a website ever should check it out. Molly was a major player in shaping the web as you know it now, and an exciting person talk to. Her life has not been all roses, and that&rsquo;s going to be part of the story, but it&rsquo;s going to end on a hopeful and upbeat note that will leave you thinking about your own life in new ways. Next up (today or tomorrow), Jean MacDonald of App Camp for Girls will be talking more about the camp (and the work behind it) that&rsquo;s bringing the tools for a future in coding to middle school girls. We&rsquo;ll also talk about the brand new App Camp Quiz Compendium app that includes some of the work produced by the campers! Overtired (with Christina Warren) has been growing as well, and we&rsquo;ve started bringing guests on board to take the crazy even further. If you&rsquo;re looking for a podcast that&rsquo;s informative but random and edgy and full of pop culture, you should be tuning in",
		"keywords": ["ashley","christina","esqueda","guimont","holzschlag","kelly","merlin","molly","overtired","podcast","roderick","systematic","warren","allen","anderson","ashley","belle","christina","compendium","cooper","david","esqueda","exist","friedman","girls","guimont","holzschlag","kelly","linder","macdonald","merlin","molly","overtired","rabbi","robertson","roderick","stevens","systematic","vardy","warren","amazing","among","appearance","approachable","beginning","behind","board","brand","bringing","campers","catch","chance","check","coding","conversation","crazy","culture","episode","episodes","exciting","fascinating","favorites","first","girls","going","gotten","great","growing","guests","haven","hopeful","human","includes","informative","inspiring","interest","interesting","interview","interviewing","kicked","leave","lecturer","looking","major","middle","mostly","people","person","personal","player","podcast","produced","productive","random","recent","recently","research","return","roses","rsquo","school","series","shaping","started","story","string","supercut","talking","thinking","today","tomorrow","tools","tuning","upbeat","visits","website","where","women","written"]
	},{
		"title": "StretchLink 1.0",
		"url": "/2015/04/28/stretchlink-1-dot-0/",
		"tags": ["stretchlink"],
		"date": "Apr 28<span>th</span>, 2015",
		"ts": "1430258160",
		"summary": "I&rsquo;m releasing a little side project called StretchLink today. It&rsquo;s an easy-to-use tool for expanding shortened links, fixing redirects, and cleaning out referrer junk from Google Analytics and others. StretchLink runs in the OS X menu bar. You can click the icon to open the main panel from which it can expand and clean links on demand with a single click. Even better, it can be set to silently watch your clipboard. You can turn this on with a switch from the main panel, or just right click the menu bar icon to toggle it. When watching the clipboard, urls that you copy from the web, emails, Twitter clients, or anywhere on your system are instantly converted to reveal their actual destination, with unnecessary query strings (the stuff that Google, Twitter, Facebook, and others use to track clicks) removed. By the time you go to paste into an email, a blog post, a new Tweet, or anywhere else, you&rsquo;ll get the url you wanted, not the one that redirects through Twitter or Facebook, then sends information to Google, and then (maybe) finally gets to where you wanted to go. StretchLink 1.0 is priced at $1.99, with a free trial available on the website. An introductory sale of $0.99 (50% off) starts now and goes through the end of May. StretchLink didn&rsquo;t get a beta round, but it&rsquo;s been tested on a variety of my own machines. If you do run into issues, don&rsquo;t hesitate to contact me. A Mac App Store release is planned for the near future, if all goes well",
		"keywords": ["facebook","google","twitter","analytics","facebook","google","store","stretchlink","twitter","anywhere","available","called","clean","cleaning","click","clicks","clients","clipboard","contact","converted","demand","destination","email","emails","expand","expanding","finally","fixing","hesitate","information","instantly","introductory","issues","links","little","machines","maybe","others","panel","paste","planned","priced","project","query","redirects","referrer","release","releasing","removed","reveal","right","round","rsquo","sends","shortened","silently","single","starts","strings","stuff","switch","system","tested","through","today","toggle","track","trial","unnecessary","variety","wanted","watch","watching","website","where"]
	},{
		"title": "A launchd post scheduling system for Jekyll",
		"url": "/2015/04/28/a-launchd-post-scheduling-system-for-jekyll/",
		"tags": ["jekyll","launchd"],
		"date": "Apr 28<span>th</span>, 2015",
		"ts": "1430226000",
		"summary": "My previous post scheduling system revolved around the Unix command to schedule one-off future tasks. In the most recent version of OS X (10.10.4), that atrun command is utterly broken. Running , , or will give you: I couldn&rsquo;t find any way to fix it, so I revamped the system. It now uses a lightweight launchd task that polls for dates listed in a simple text file. This is a simple solution that works well because I can easily edit the file remotely and modify it with other scripts. The code that follows uses my notifyutil-based system to trigger the command that builds and uploads my static blog. You can also experiment with just running that command directly from a script, but because Jekyll has specific dependencies and most people use bundler/rvm/rbenv with it, the fact that launchd doesn&rsquo;t load your shell environment may be problematic. The idea remains the same, though. First, the script that the launchd task uses to check for new date triggers. It just reads in a file called \"scheduled_deploys.txt\" in the root of your Jekyll directory, parses each line, and if a line contains a date that&rsquo;s before the time the task runs, it deletes the line and runs the build command. And here&rsquo;s the launchd job that polls every 5 minutes. To load it, edit the script path in the file and save it to (or whatever name you like), then run ",
		"keywords": ["first","jekyll","running","atrun","based","because","before","broken","build","builds","bundler","called","check","command","contains","couldn","dates","deletes","dependencies","deploys","directly","directory","doesn","easily","environment","experiment","follows","launchd","lightweight","listed","minutes","modify","notifyutil","parses","people","polls","problematic","rbenv","reads","recent","remains","remotely","revamped","revolved","rsquo","running","schedule","scheduled","scheduling","script","scripts","shell","simple","solution","specific","static","system","tasks","trigger","triggers","uploads","utterly","version","whatever","works"]
	},{
		"title": "A universal clipboard command for Bash",
		"url": "/2015/04/27/a-universal-clipboard-command-for-bash/",
		"tags": ["macos","scripting","terminal"],
		"date": "Apr 27<span>th</span>, 2015",
		"ts": "1430139600",
		"summary": "I frequently use in the shell to get output to the OS X clipboard. I&rsquo;m constantly using , and figured it would be worth making a little easier, so I wrote this little function this morning. It works in a few ways, attempting to intelligently figure out what it&rsquo;s supposed to do. If the arguments passed execute properly as a command (return 0), the results of the command are copied to the clipboard If the first argument is a path to an existing plain text file, the contents of that file are copied, and any further arguments are tested as text files (functions like for the clipboard) Failing all of that, the arguments themselves are copied as a string If there are no arguments, it waits for STDIN, meaning you can pipe to it as a shortcut for , or manually enter text and end entry with Just add the function below to or to any file/folder that gets sourced during login. Change the name of the function as needed&hellip; if weren&rsquo;t already aliased to for me, I&rsquo;d have just named it that",
		"keywords": ["function","change","examples","failing","stdin","aliased","argument","arguments","attempting","below","clipboard","command","constantly","contents","copied","easier","enter","entry","execute","figure","figured","files","first","folder","function","functions","hellip","intelligently","little","login","making","manually","meaning","morning","named","needed","output","passed","properly","results","return","rsquo","shell","shortcut","sourced","string","supposed","tested","themselves","using","waits","weren","works","worth","wrote"]
	},{
		"title": "Web Excursions for April 25, 2015",
		"url": "/2015/04/25/web-excursions-for-april-25-2015/",
		"tags": ["bookmarks"],
		"date": "Apr 25<span>th</span>, 2015",
		"ts": "1429974000",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Designing Nozbe for Apple Watch Nozbe has taken a well-thought-out approach to incorporating Apple Watch support, joining the offerings from Cultured Code, Omni, Realmac, and many others. SOLOSHOT I view this servo-packed tripod that automatically tracks the movement of whoever is wearing the \"tag\" as another wondrous milestone in the quest to avoid non-essential human interaction. Quip Chat Rooms I love Quip for realtime collaborative editing. Markdown import/export, API, smart content locking, version history&hellip; and now separate chat rooms. This completely removes any inconvenience surrounding realtime conversations using the commenting feature, and will definitely become part of the Overtired weekly routine. \"1Password, find my stuff!\" (How to not lose anything ever again) An idea for creating a physical inventory in 1Password. I did this with Evernote for a while, but then moved away from daily use of Evernote. I&rsquo;ve been using QuickQuestion more recently. Given 1Password&rsquo;s ubiquity in my life and across my devices, though, this is an ideal way to handle my fritzing memory. Find Sketch Plugins by Use Case Just in case you haven&rsquo;t found the right Sketch plugins yet&hellip",
		"keywords": ["store","apple","cleanmymac","cultured","designing","evernote","markdown","nozbe","overtired","password","plugins","quickquestion","realmac","rooms","soloshot","sketch","watch","across","again","another","approach","automatically","avoid","brought","collaborative","commenting","completely","content","conversations","creating","daily","definitely","devices","editing","essential","excursions","export","feature","found","fritzing","handle","haven","hellip","history","human","ideal","import","inconvenience","interaction","inventory","joining","locking","memory","milestone","moved","movement","offerings","others","packed","partnership","physical","plugins","quest","realtime","recently","removes","right","rooms","routine","rsquo","separate","servo","smart","speed","stuff","support","surrounding","taken","thought","tools","tracks","tripod","ubiquity","using","version","wearing","weekly","while","whoever","wondrous"]
	},{
		"title": "Modifying Jekyll post data with inline tags",
		"url": "/2015/04/24/modifying-jekyll-post-data-with-inline-tags/",
		"tags": ["jekyll"],
		"date": "Apr 24<span>th</span>, 2015",
		"ts": "1429898400",
		"summary": "This post will only be of interest to Jekyll users, but if you want to start creating your own customizations to your Jekyll setup, this will be an easy start. Jekyll posts include YAML frontmatter at the top of the post. After the default keys (title, date, layout, etc.), you can define any key you want and assign data to it. That data is then available in your template using Liquid output tags (via ). For example, I use a \"description\" key that&mdash;if it&rsquo;s set in the post&mdash;will generate custom tags in for \"description\" (and its OpenGraph counterparts) with the key&rsquo;s value. Going further, you can also affect the custom page/post data with Liquid tags in the post content. A short custom plugin is all that&rsquo;s needed to define a custom tag that will set metadata before the template renders. When a Jekyll finds a it calls on the plugin that registered that tag. It passes a object to the plugin which contains the data for the post or page currently being processed (among a lot of other info). The data for the current page is contained within the first element of the array, and modifications to that data are passed by reference. Thus, if you wanted to create a block tag called \"describe\" and use it to surround text which will be lifted into the data for a post, you could use something as simple as: In the case of this block tag, it&rsquo;s simply modifying (or adding) the value of description key in the page data hash for the current post. Then it returns the original contents of the tag unmodified. You could also make an inline tag that sets boolean values or processes the tag&rsquo;s tokens to set anything you want. This version does no processing or modification of the contents. You could, if desired, do things like HTML escape or truncate the content before setting the variable, but I usually handle that with custom Liquid filters. What you do with it from there is up to your template, but simple plugins like this offer some interesting customization possibilities. Consider that instead of passing back the original contents, the plugin could modify it or add elements based on its context. As a wild example, you could create a block tag that added HTML wrappers that varied based on its contents, and then assigned a key to the page data to change a body class",
		"keywords": ["liquid","plugin","template","consider","going","hopefully","jekyll","liquid","opengraph","above","added","adding","among","anywhere","array","assign","assigned","automatically","available","based","before","block","boolean","called","calls","change","class","contained","contains","content","contents","context","counterparts","create","creating","custom","customization","customizations","default","define","describe","description","desired","element","elements","escape","example","filters","finds","first","folder","frontmatter","functions","gives","handle","ideas","inline","interest","interesting","layout","lifted","loads","markup","matters","mdash","metadata","modifications","modify","modifying","needed","object","offer","original","output","passed","passes","passing","plugin","plugins","possibilities","posts","processed","processes","processing","registered","renders","returns","rsquo","saved","setting","setup","short","simple","simply","standard","surround","template","title","tokens","truncate","unmodified","users","using","usually","value","values","variable","varied","version","wanted","within","wrappers"]
	},{
		"title": "MeisterTask for iOS and Apple Watch",
		"url": "/2015/04/24/meistertask-for-ios-and-apple-watch/",
		"tags": ["applewatch","appreview","productivity"],
		"date": "Apr 24<span>th</span>, 2015",
		"ts": "1429880400",
		"summary": "MeisterTask, which I mentioned recently (also a previous sponsor), just launched the iOS version of their new productivity and project management tool. The iOS app is a great complement to the web version, but it&rsquo;s also functional enough to effectively replace it, depending on your workflow and needs. The ability to turn MindMeister mind maps (also on iOS) into agile projects has been especially appealing to me. There&rsquo;s Apple Watch support built in to the iOS version, too. Of course. I don&rsquo;t have an Apple Watch yet, so I can&rsquo;t tell you much other than that I&rsquo;m a bit jealous of all of you who have taken the plunge. I do know that it allows you to create, assign, and complete tasks right from your wrist, and has support for predefined messages and voice input for efficient responses. Dick Tracy will be more productive than ever. Check out the new MeisterTask iOS app free on the iTunes App Store, and sign up for an account at meistertask.com (or use your existing MindMeister account)",
		"keywords": ["apple","iphone","itunes","meistertask","mindmeister","store","watch","apple","check","meistertask","mindmeister","store","tracy","watch","ability","account","agile","allows","appealing","assign","built","complement","create","depending","effectively","efficient","enough","especially","functional","great","itunes","input","jealous","launched","management","meistertask","mentioned","messages","needs","plunge","predefined","productive","productivity","project","projects","recently","replace","responses","right","rsquo","sponsor","support","taken","tasks","version","voice","workflow","wrist"]
	},{
		"title": "Mighty Deals: Train Simple expert Adobe training [sponsor]",
		"url": "/2015/04/23/sponsor-mighty-deals-train-simple-expert-adobe-training/",
		"tags": ["sponsor"],
		"date": "Apr 23<span>rd</span>, 2015",
		"ts": "1429786800",
		"summary": "Thanks to Mighty Deals and Train Simple for sponsoring BrettTerpstra.com. If you&rsquo;re looking for a path to becoming an expert in Adobe apps and web design technologies, this is a great offer. Also check out their new resource for web design news at WebDesigner News. Train Simple gives you access to some of the top Adobe Instructors, teaching you everything from Photoshop and Illustrator to HTML5. You&rsquo;ll get unlimited access to over 5,000 professional video tutorials. You also get access to course files for each lesson, and the ability to watch the high-quality videos anywhere you go. Top-notch instructors, thousands of lessons, and a wide range of topics! With this deal, you get over 50% off a 1-year subscription, or &mdash; even better &mdash; 97% off a lifetime membership. 5,000+ Video Tutorials Learn Adobe&rsquo;s design and Web development software including Acrobat, Photoshop, Illustrator, InDesign, Flash, Fireworks, Dreamweaver, Edge Animate, Muse, Fireworks and more You can even take lessons on Web technology like HTML5, CSS3, JavaScript, WordPress and more Train Simple is constantly updating their courses. They regularly add new courses for the following subjects: Graphic Design Photography Web Design Web Development and more Interactive Course Files Official lessons from Adobe about using its popular products, with tracks for certification Mobile apps, learn anywhere Train Simple is an official Adobe Authorized Training Center A lifetime membership to Train Simple normally costs $2,500, but for a limited time only, you can get unlimited lifetime access for just $79! That&rsquo;s a massive savings of 97% off the regular price! If you prefer just 1-year access, you can purchase a 1-year membership for just $47, instead of the regular price of $100",
		"keywords": ["adobe","creativity","design","graphic","illustrator","indesign","photoshop","systems","acrobat","adobe","animate","authorized","brettterpstra","center","deals","design","development","dreamweaver","files","fireworks","flash","graphic","highlights","illustrator","indesign","instructors","interactive","javascript","learn","mighty","mobile","official","photography","photoshop","simple","thanks","train","training","tutorials","video","webdesigner","wordpress","ability","access","anywhere","becoming","certification","check","constantly","courses","design","development","everything","expert","files","gives","great","including","instructors","learn","lesson","lessons","lifetime","limited","looking","massive","mdash","membership","normally","notch","offer","official","popular","prefer","price","products","professional","quality","range","regular","regularly","resource","rsquo","savings","software","sponsoring","subjects","subscription","teaching","technologies","technology","thousands","today","topics","tracks","training","tutorials","unlimited","updating","using","video","videos","watch"]
	},{
		"title": "Sublime Text tips for Markdown table editing",
		"url": "/2015/04/22/sublime-text-tips-for-markdown-table-editing/",
		"tags": ["markdown","markdownediting","multimarkdown","sublimetext","texteditor"],
		"date": "Apr 22<span>nd</span>, 2015",
		"ts": "1429730760",
		"summary": "I edited a bunch of MultiMarkdown tables in Sublime Text 3 yesterday, and by about halfway through I&rsquo;d developed a pretty good system. I thought I&rsquo;d document a couple of tricks for my own future reference, and for anyone else it might help. First, you want MarkdownEditing if you&rsquo;re working in Sublime. It&rsquo;s the package I built long ago, now cared for by Ali Ayas and Felix Hao, and being actively updated by the community. Next, you need the Table Editor package. If you edit tables in any of the humane text formats, this is a godsend. It allows you to tab between columns, wrapping to the next row at the end, auto format the entire table every time you finish an edit, and swap, add and delete columns and rows. Now, with those two packages, editing is almost as simple as just working in a spreadsheet. Note: Keyboard combinations mentioned in this post are Mac-specific, but available on other platforms with the usual meta key substitutions. I&rsquo;m working in MultiMarkdown, so the next row also needs to be a divider row, which Table Editor makes as simple as a pipe and a dash: My specific task was to turn a series of bullet lists into columns of a table. I could have written out fancy regex scripts to automate this, but there were enough variances that it was worth figuring out faster ways to do it by hand. I knew how many lists the table needed to hold, so setting up the header row was easy. I knew how long the longest of the lists would be, so I could add rows of empty cells ahead of time. With Table Editor&rsquo;s ability to tab through cells, this is handy. Table Editor has commands for adding rows, but I&rsquo;ve disabled a few of them because the shortcuts interfere with my normal editing commands (Option-Right, for example). The Control-Shift-Down command to insert a new row above is still active, so once the table skeleton is set up, I can just add the rows with repeated keystrokes. You can also use some of Sublime&rsquo;s great editor commands, which also come in handy in the next part. To add a certain number of rows to the end of the table quickly, just select that number of lines, use Command-Shift-L to split the selection into lines, then type a \"|\" and hit tab. Table Editor will add the missing dividers for the number of columns in the header row. If you use Vintage mode (the Vim emulation in Sublime) you can make this even faster by just typing the number of rows followed by \"j\" before doing the&hellip;",
		"keywords": ["markdown","sublime","tables","another","backstory","blake","break","building","command","control","converting","editor","either","felix","first","forbidden","github","hitting","justin","keyboard","license","markdown","markdownediting","marky","method","multimarkdown","pasting","permitted","required","right","setup","shift","sublime","table","vintage","ability","above","active","actively","adding","affecting","again","ahead","allows","almost","amount","another","anyone","attempts","automate","available","because","before","beginning","between","block","blocks","break","broken","built","bullet","bunch","cared","cells","certain","choosealicense","clear","column","columns","combinations","command","commands","community","couple","create","creation","curious","cursor","cursors","decided","deprivation","developed","dinking","disabled","divider","dividers","document","doing","edited","editing","editor","efficiency","elements","empty","emulation","enough","entire","entirely","example","explanation","fancy","faster","figuring","files","finish","finished","first","followed","forgotten","format","formats","found","generated","generating","godsend","going","great","halfway","handles","handy","header","height","honed","humane","important","inserting","interfere","interspersed","keystrokes","kinds","learner","learners","length","license","licenses","lists","longest","makes","marker","markers","mentioned","method","middle","missing","mouse","multiple","necessary","needed","needs","nesting","night","normal","nothing","output","overview","package","packages","parts","paste","pasting","people","piecemeal","pipes","platforms","point","presentation","process","projects","proves","quick","quickly","realized","reformat","regex","repeat","repeated","replace","rsquo","scripts","search","second","selection","selections","sense","series","setting","shortcuts","shorten","simple","situations","skeleton","sleep","sleepless","source","specific","split","spreadsheet","steps","substitutions","summary","system","table","tables"]
	},{
		"title": "OS X shell tricks: speaking in tongues",
		"url": "/2015/04/21/os-x-shell-tricks-speaking-in-tongues/",
		"tags": ["macos","scripting","shell","terminal"],
		"date": "Apr 21<span>st</span>, 2015",
		"ts": "1429621200",
		"summary": "I have an always-on Mac mini that sits in the corner of my office. It toils away running staging servers for media, web development, and home automation. It also runs a lot of scheduled scripts. I&rsquo;m happy to have most of those scripts just run silently. Important notifications and errors get sent to my laptop and mobile devices via the Pushbullet API. Some fall in between those levels of severity, though. I have scheduling systems, such as the one that lets me schedule a generate and deploy of my Jekyll blog based on future dates found in posts1. I like to have these quietly announce themselves (with a little bit of status notification), just so I know they&rsquo;re running if I&rsquo;m in the office. I love the command in OS X for this purpose. For scripting purposes, it&rsquo;s as simple as in a shell or AppleScript. You can customize the script to say something appropriate, and even pass variables to it to make it dynamic. I discovered the flag for a couple of years ago, and it doubles its usefulness in this application. You can use to change the voice of the speech synthesizer to any of the available system voices. This lets me give a different voice to each context, and use a different timbre for different status reports. You can see all the available voices using . Then, in your shell command, just use to switch. There&rsquo;s also a useful flag, which changes the rate of speech (by words-per-minute). I find that provides more fluid speech than the default for short sentences. Side note: I&rsquo;ve mentioned it before, but is pretty smart about things like roman numerals. A few quirks, but try or . There are a bunch of new voices in the recent versions of OS X, mostly an assortment of localized voices geared toward languages other than English. Here&rsquo;s the full list with localities, and asterisks to indicate recent additions. While exploring the new voices, I made a quick shell script to test them all at once. You can run it alone for default settings, or pass it a test string and/or a rate setting, e.g. . And here&rsquo;s the audio output, in case you don&rsquo;t want to bother: By the way, Apple recently (10.10.3) broke the command I&rsquo;ve always used for this. I&rsquo;ll post soon about a solution using Automator, osascript, iCloud, and Calendars.&nbsp;↩",
		"keywords": ["applescript","automator","script","shell","apple","applescript","automator","calendars","darwin","english","important","jekyll","pushbullet","superbowl","while","xxvii","zarvox","additions","alone","announce","assortment","asterisks","audio","automation","available","backlink","based","before","between","bother","brettterpstra","broke","bunch","change","changes","class","command","context","controls","corner","couple","customize","dates","default","deploy","development","devices","different","discovered","doing","doubles","dynamic","endnotes","errors","exploring","figcaption","figure","fluid","fnref","footnote","footnotes","found","geared","github","happy","height","highlighter","https","icloud","image","jekyll","language","languages","laptop","levels","little","loading","localities","localized","media","mentioned","minute","mobile","mostly","noscript","noteref","notification","notifications","numerals","office","original","osascript","output","picture","plaintext","posts","provides","pushbullet","quick","quietly","quirks","rakening","recent","recently","reports","reversefootnote","roman","rouge","rsquo","running","sched","schedule","scheduled","scheduling","script","scripting","scripts","sentences","servers","setting","settings","severity","share","shell","short","silently","simple","smart","solution","source","speak","speech","srcset","staging","status","string","supported","switch","synthesizer","system","systems","terminal","themselves","timbre","title","tlnuvwep","toils","toward","ttscoff","uploads","useful","usefulness","using","variables","versions","voice","voices","watch","width","words","years","youtube"]
	},{
		"title": "Web Excursions for April 20, 2015",
		"url": "/2015/04/20/web-excursions-for-april-20-2015/",
		"tags": ["bookmarks"],
		"date": "Apr 20<span>th</span>, 2015",
		"ts": "1429551000",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. A special edition of \"Web Excursions\" with two more links than usual. That&rsquo;s the kind of service you can expect from us here at BrettTerpstra.com. Lightpack &ndash; ambient backlight for your displays Lightpack creates ambient colors around your monitor or TV based on the color averages being displayed. I&rsquo;ve seen some hacks of the IKEA light strips to do this, but they were beyond my USB programming capabilities. I&rsquo;m very tempted to go for this ready-to-use-but-still-open-source version&hellip; icefox/git-hooks Dammit, this is something I&rsquo;ve been trying to build, but better. git-hooks lets hooks be installed inside git repositories, users home directory, and globally. When a hook is called by git, git-hooks will check each of these locations for the hooks to run. DIY: Frozen Treats for Dogs Our dog Emma loves these, so my wife published the recipe. By the way, Emma has her own Facebook page and does not care how you feel about dogs having Facebook pages. Jon Stewart: why I quit The Daily Show Over the years, Jon Stewart become my most respected news source. I have no shame in admitting that. The Daily Show has been more \"fair and balanced\" than any other source. It&rsquo;s sad to see this era of it ending, but you have to admire Stewart for knowing when to fold. The linked article is long, but fun and insightful for Jon Stewart fans. LaunchDR I was researching ways to handle scheduled publishing on Jekyll now that Apple&rsquo;s broken my system, and stumbled on this tool from my old friend Elliott Cable1 for programmatically creating plist files in Ruby. Apple Watch Vector UI Kit for Keynote and PowerPoint I&rsquo;ve personally moved away from Keynote as a prototyping tool, but Keynotopia keeps making me reconsider that. Sketch Tricks I&rsquo;m really getting into Sketch, primarily because of the community surrounding it. This site compiles great tips and tutorials for the vector design app. whom I met through his incessant and useful bug reports and feature requests for MoodBlast, way back when. He&rsquo;s what forced me to start learning about proper UI design and intuitive interfaces.&nbsp;↩",
		"keywords": ["central","comedy","daily","stewart","apple","brettterpstra","cable","check","daily","dammit","elliottcable","elliott","excursions","facebook","frozen","jekyll","keynote","keynotopia","launchdr","lightpack","moodblast","powerpoint","setapp","sketch","stewart","treats","tricks","vector","watch","access","admire","admitting","ambient","apple","article","atrun","averages","backlight","backlink","balanced","based","because","beyond","blockquote","brettterpstra","broken","brought","build","called","capabilities","check","class","color","colors","community","compiles","creates","creating","daily","design","directory","displayed","displays","edition","emmasophiaterpstra","ending","endnotes","excursions","expect","facebook","feature","files","flickr","fnref","footnote","footnotes","forced","friend","frozen","getting","github","globally","great","hacks","handle","having","height","hellip","highlighter","hooks","https","hundreds","icefox","image","incessant","inside","insightful","installed","interfaces","intuitive","keeps","keynotopia","knowing","language","launchd","ldquo","learning","light","lightpack","linked","links","loading","locations","loves","making","media","monitor","monthly","moved","ndash","noscript","noteref","original","pages","partnership","personally","picture","plaintext","plist","primarily","programmatically","programming","proper","prototyping","published","publishing","rdquo","ready","recipe","reports","repositories","requests","researching","respected","reversefootnote","rouge","rsquo","scheduled","search","service","setapp","shame","sketchtricks","source","special","srcset","stewart","strips","stumbled","subscription","surrounding","system","tempted","theguardian","theurbaneanimal","through","title","today","treats","trying","tutorials","uploads","useful","users","vector","version","watch","webexcursions","width","years"]
	},{
		"title": "A Friday Freebie: Network and Database icon set",
		"url": "/2015/04/17/a-friday-freebie-network-and-database-icon-set/",
		"tags": ["design","freebie","giveaway","icons"],
		"date": "Apr 17<span>th</span>, 2015",
		"ts": "1429284720",
		"summary": "Vecteezy has provided BrettTerpstra.com readers with an exclusive set of free network and database icons for web and app developers. The set includes layered, vector icons in Illustrator (AI), Photoshop (PSD), EPS, and PNG formats. This icon set is licensed under the Creative Commons Attribution 3.0 Unported License. Thanks to Vecteezy for sharing",
		"keywords": ["adobe","graphics","interface","network","photoshop","portable","scalable","vector","attribution","brettterpstra","click","commons","creative","illustrator","license","photoshop","thanks","unported","vecteezy","database","developers","download","exclusive","formats","icons","includes","layered","licensed","network","readers","sharing","under","vector"]
	},{
		"title": "VOX for iOS",
		"url": "/2015/04/16/vox-for-ios/",
		"tags": ["appreview"],
		"date": "Apr 16<span>th</span>, 2015",
		"ts": "1429207200",
		"summary": "VOX developer Coppertino released VOX for iOS yesterday, and it continues their tradition of amazing and beautiful software. I love VOX for Mac (previous review), and this new iPhone companion is a perfect complement. With full support for Soundcloud and iTunes, as well as custom VOX playlists, it&rsquo;s a great central music player. VOX&rsquo;s ability to play every file format you can imagine means you can use higher quality audio than with other players (or even iTunes). The idea of a \"playlist\" in VOX has evolved into \"Collections,\" which allow you to build your playlist from multiple sources. You can pull together your favorite Soundcloud tracks, your own FLAC files, and your iTunes music in one list. There&rsquo;s also LOOP, an entirely new way to store your music in the cloud. It&rsquo;s directly integrated into the VOX players, so music you upload from VOX on your Mac is immediately available on your iPhone, ready to hit the road. The Mac App Store version of VOX hasn&rsquo;t received this update yet, but the version you can download from Coppertino is ready to go. I love the gesture support in VOX iOS, and I&rsquo;ve always wondered why the default iTunes player in iOS doesn&rsquo;t have it figured out. It&rsquo;s all simple and intuitive: swipe up and down to open menus, left and right to change tracks, tap to play/pause. Coppertino has always impressed me with their ability to make beautiful, unconventional interfaces that behave exactly the way you&rsquo;d expect. Stunning looks with intuitive behavior. Check out VOX iOS on the App Store, and find more info about VOX for Mac at the Coppertino website",
		"keywords": ["audio","format","itunes","playlist","soundcloud","store","check","collections","coppertino","soundcloud","store","stunning","ability","allow","amazing","audio","available","beautiful","behave","behavior","build","central","change","cloud","companion","complement","continues","custom","default","developer","directly","doesn","download","entirely","evolved","expect","favorite","figured","files","format","gesture","great","higher","iphone","itunes","imagine","impressed","integrated","interfaces","intuitive","looks","menus","multiple","music","pause","player","players","playlist","playlists","quality","ready","received","released","right","rsquo","simple","software","sources","store","support","swipe","together","tracks","tradition","unconventional","upload","version","website","wondered","yesterday"]
	},{
		"title": "Love Writing with Desk App [sponsor]",
		"url": "/2015/04/16/love-writing-with-desk-app-sponsor/",
		"tags": ["sponsor"],
		"date": "Apr 16<span>th</span>, 2015",
		"ts": "1429182000",
		"summary": "Thanks to Desk App for sponsoring BrettTerpstra.com this week! Desk App, which won Apple&rsquo;s \"Best App of 2014,\" is a writing, blogging, and note taking app for OS X. Built by indie developer John Saddington, its focus and intent is quite simple: To help you capture your thoughts and publish them to the world. You can easily publish your stories to WordPress, Blogger, Tumblr, and more via an intuitive WYSIWYG editor or Markdown. With drag-and-drop image insertion and powerful platform-specific features like Post Formats and Scheduled Posts you may never have to visit your web editor again (which was kind of the point). In addition, customize your experience with visual styles (Night/Day Mode), text and font treatments, and other viewing options that should delight as well offer excellent functionality. Finally, come join the growing community of writers and bloggers on the Community Forum. They can help encourage you to not give up on some of the most important work that you have: Telling your story. Get Desk App on the Mac App Store. Love writing",
		"keywords": ["markdown","store","apple","blogger","brettterpstra","built","community","finally","formats","forum","markdown","night","posts","saddington","scheduled","store","telling","thanks","tumblr","wysiwyg","wordpress","again","bloggers","blogging","brettterpstra","capture","class","community","customize","delight","developer","easily","editor","encourage","excellent","experience","features","focus","functionality","growing","height","https","image","important","indie","insertion","intent","intuitive","ldquo","loading","media","nofollow","noscript","offer","options","original","picture","platform","point","powerful","publish","rdquo","rsquo","simple","source","specific","sponsor","sponsoring","srcset","stories","story","strong","styles","taking","thoughts","title","treatments","uploads","viewing","visit","visual","width","world","writers","writing"]
	},{
		"title": "Movie quote lipsum for TextExpander",
		"url": "/2015/04/15/movie-quote-lipsum-for-textexpander/",
		"tags": ["lipsum","snippet","textexpander"],
		"date": "Apr 15<span>th</span>, 2015",
		"ts": "1429126980",
		"summary": "I&rsquo;ve been feeling horrible about my lack of posting recently, so this morning I decided to make something to share. It&rsquo;s an addition to my Lorem Ipsum set of TextExpander tools. I know, again with the Lipsum. This one takes a title of a movie (or a comma-separated list of titles) and grabs quotes from the movie(s) by scraping IMDB. It compiles them into paragraphs of 5 or fewer quotes and outputs plain filler text using your lines from your favorite flicks. If more than one movie is listed, the results will be shuffled together, randomizing the paragraph order, with each paragraph containing quotes from one movie. Paragraphs have periods appended if needed to complete punctuation. Quotes recognized as lyrics (split with \"/\" on IMDB) will be output as a Markdown block quote with hard line breaks. Head to the te-snippets page and set a prefix. The prefix will be what you type before the shortcut, and is used to distinguish the snippet&rsquo;s trigger from existing abbreviations. It can be left blank. You can then copy the URL and use TextExpander&rsquo;s \"Add Group from URL\" command, or download the group and add it manually. I&rsquo;ve made this one part of its own group for various and sundry reasons. Unlike most of the \"Random Lipsum\" snippets, it has no dependencies and no setup required, so the separation is more about form than function. In the fill-in fields you can set the movie title(s) to grab, enable the profanity filters (they default to disabled), and set a maximum number of paragraphs and/or maximum character count. Because this filler text might not be just for you, there are two levels of automatic profanity filtering. The regular filter will find a select group of the \"worst\" words, and leave their first and last characters in place, obscuring the rest with random punctuation characters. The \"strict\" filter mode will use an expanded dictionary of bad words, and then completely obscure the full word. Limit the total length of the output using either paragraph or character counts. Character count has the final say, if it&rsquo;s any number other than blank or zero it will truncate the entire output to that number of characters. Any output at the end that doesn&rsquo;t have trailing punctuation will be trimmed back to the end of the previous sentence. Paragraphs can be of drastically different lengths depending on the length of each quote. The snippet will combine four quotes in a paragraph no matter how long&hellip;",
		"keywords": ["filler","ipsum","lorem","because","character","group","hollywood","installation","ipsum","length","limit","lipsum","lorem","markdown","movie","options","paragraph","paragraphs","profanity","quotes","random","shuffling","textexpander","unlike","abbreviations","again","appended","automatic","before","blank","block","blocks","breaks","called","character","characters","comes","comma","command","compiles","completely","consulted","containing","count","counts","create","decided","default","defaults","dependencies","depending","desired","dictionary","different","directory","disabled","distinguish","doesn","download","drastically","either","entire","expanded","favorite","feeling","fewer","field","fields","filler","filter","filtering","filters","first","flicks","function","grabs","group","horrible","leave","length","lengths","levels","limiting","listed","lyrics","manually","maximum","morning","movie","needed","obscure","obscuring","options","output","outputs","paragraph","paragraphs","parameters","passage","periods","posting","prefix","profanity","pulling","punctuation","quote","quotes","random","randomizing","reasons","recently","recognized","regular","required","results","return","rsquo","scraping","sentence","separated","separation","setup","share","short","shortcut","shuffled","shuffling","simply","snippet","snippets","source","split","strict","sundry","takes","title","titles","together","tools","trailing","trigger","trimmed","truncate","truncates","using","various","words","worst"]
	},{
		"title": "iOS scanning and OCR with PDFpen Scan+ [sponsor]",
		"url": "/2015/04/09/sponsor-pdfpen-scan-plus/",
		"tags": ["sponsor"],
		"date": "Apr 9<span>th</span>, 2015",
		"ts": "1428577200",
		"summary": "Thanks to Smile and their iOS scanning/OCR app, PDFpen Scan+, for sponsoring BrettTerpstra.com this week! PDFpen Scan+ gives you the scanning and OCR power you need in a beautifully-designed app that&rsquo;s always with you. This new version of PDFpen Scan+ automates the scanning process, making scanning fast and incredibly easy. Point your iPhone or iPad camera at a document, receipt, or business card, and PDFpen Scan+ will take the scan, automatically crop it, and prepare for editing – all without a tap. Perform OCR text recognition, and create a searchable, shareable PDF directly on your iPhone or iPad. The best scanner is the one that&rsquo;s with you, so grab PDFpen Scan+ from the App Store today",
		"keywords": ["icloud","store","automatically","brettterpstra","dropbox","pdfpen","point","smile","store","thanks","automates","automatically","available","beautifully","brett","brettterpstra","business","camera","class","crcampaign","crcat","create","crsource","designed","devices","directly","document","editing","gives","height","https","icloud","iphone","image","incredibly","loading","making","media","nofollow","noscript","original","picture","prepare","process","recognition","rsquo","scanner","scanning","scans","searchable","shareable","smilesoftware","source","sponsoring","srcset","title","today","upload","uploads","version","width"]
	},{
		"title": "CleanMyMac 3 adds robust new features",
		"url": "/2015/04/07/cleanmymac-3-adds-robust-new-features/",
		"tags": ["appreview","macos","utility"],
		"date": "Apr 7<span>th</span>, 2015",
		"ts": "1428414300",
		"summary": "For a long time I mistakenly associated CleanMyMac with MacKeeper in my head. The latter is awful, let&rsquo;s not talk about them. CleanMyMac, on the other hand, has proven to be a powerful &mdash; and safe &mdash; tool for reclaiming disk space. Version 3 was released today and includes some powerful new features. The \"auto-scan\" that CleanMyMac performs covers an array of cleaning tasks that remove files you may not even have realized were taking up space. You&rsquo;re able to verify every deletion before it proceeds, and it uses an extensive whitelist to avoid damaging any files your system or applications require. It scours everything from cache files and logs to Mail attachments, and even extra application binaries and language files you don&rsquo;t need. It cleans up old iTunes backups, broken downloads and more. It also has maintenance features now, including permissions repair, Spotlight reindexing, and Mail database vacuuming. A privacy can clear out chat logs, browser histories, and other evidence you might not want on your system if your computer is compromised. One of the interesting features is a helper application that sits in your menubar and monitors things like available memory, hard drive space, and overall system health. It lets you know when it might be able to help, shows you when an app is using way too much memory, and even lets you know when your trash needs emptying (and can do it for you with one click). The new version of CleanMyMac is selling for $39.95 US. Current users can receive 50% off on an upgrade. A free trial and more info is available at the CleanMyMac website",
		"keywords": ["iphone","itunes","maintenance","space","cleanmymac","mackeeper","spotlight","version","applications","array","associated","attachments","available","avoid","awful","backups","before","binaries","broken","browser","cache","cleaning","cleans","clear","click","compromised","computer","covers","damaging","database","deletion","downloads","drive","emptying","everything","evidence","extensive","extra","features","files","health","helper","histories","itunes","includes","including","interesting","language","latter","maintenance","mdash","memory","menubar","mistakenly","monitors","needs","overall","performs","permissions","powerful","privacy","proceeds","proven","realized","receive","reclaiming","reindexing","released","remove","repair","rsquo","scours","selling","shows","space","system","taking","tasks","today","trash","trial","upgrade","users","using","vacuuming","verify","version","website","whitelist"]
	},{
		"title": "Web Excursions for April 03, 2015",
		"url": "/2015/04/03/web-excursions-for-april-03-2015/",
		"tags": ["bookmarks"],
		"date": "Apr 3<span>rd</span>, 2015",
		"ts": "1428076320",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. shyiko/commacd As an addition to the tools listed in my recent post on directory traversal in the shell, commacd is a great new tool by Stanley Shyiko that combines a lot of the tricks I&rsquo;m currently using into one simple system. Browsy A gesture-based fullscreen web browser for iOS that happens to use Marky to offer web page \"markdownification\" as a built-in service and an iOS 8 Action Extension. Chrome&rsquo;s Console API: Greatest Hits There turned out to be a lot of things I didn&rsquo;t know about Chrome&rsquo;s debug console. A lot of really useful things. The News 2: Hacker News & Designer News & Product Hunt This is my new home tab. A simple, beautiful presentation of my favorite sources of information and tools. Also available as a free iOS app. Tabbie - Material, customizable and hackable new tab replacement Another way to get Hacker News, Designer News, and Product Hunt into your Chrome new tab page, plus GitHub, Pushbullet, and more. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["browser","github","javascript","action","another","browsy","check","chrome","console","designer","extension","github","greatest","hacker","marky","mindmeister","product","pushbullet","shyiko","stanley","tabbie","available","based","beautiful","boosting","brainstorming","brought","browser","built","collaborating","collaborative","combines","commacd","console","customizable","debug","directory","excursions","favorite","fullscreen","gesture","great","hackable","happens","information","listed","mapping","markdownification","offer","partnership","presentation","productivity","recent","replacement","rsquo","service","shell","shyiko","simple","software","sources","system","tools","traversal","tricks","turned","useful","using"]
	},{
		"title": "Sponsor: Drag and drop better with Yoink",
		"url": "/2015/04/02/sponsor-drag-and-drop-better-with-yoink/",
		"tags": ["sponsor"],
		"date": "Apr 2<span>nd</span>, 2015",
		"ts": "1427972400",
		"summary": "Thanks to Eternal Storms Software &mdash; creator of Yoink &mdash; for sponsoring BrettTerpstra.com this week. I&rsquo;ve been a fan of Matthias&rsquo; work for years (back to &lsquo;09!), and I&rsquo;m excited to have Eternal Storm&rsquo;s support! Yoink makes it easier for you to move files on your Mac by providing a space where you can temporarily place them. This way, your mouse is free and you can more easily navigate to the destination of your drag - a window, a fullscreen app or another space. Yoink follows you so you can drag files back out at any time, to any app. Download a free 15-day trial. Yoink is developed by Eternal Storms Software, an Austria-based one-man company run by Matthias Gansrigler. In addition to Yoink, the following apps have been crafted with care: ScreenFloat is a Mac app that lets you create screenshots which float above other windows, keeping information visible while you work in other apps. It&rsquo;s very useful when trying to transfer information between apps, windows, or even different displays. flickery is a flickr desktop client for Mac that manages your flickr photo stream, albums, groups, galleries, uploads, downloads, and lets you browse through the vast photo library of flickr",
		"keywords": ["flickr","iphone","austria","brettterpstra","briefly","download","eternal","gansrigler","matthias","motion","screenfloat","software","storm","storms","thanks","transloader","videos","yoink","above","albums","another","based","between","browse","clicks","client","combo","company","crafted","create","creator","desktop","destination","developed","different","displays","downloads","easier","easily","excited","files","flickery","flickr","float","follows","fullscreen","galleries","groups","iphone","information","keeping","library","lsquo","makes","manages","mdash","mouse","music","navigate","photo","photos","providing","remotely","rsquo","screenshots","space","sponsoring","stream","stunning","support","temporarily","through","trial","trying","turns","uploads","useful","visible","where","while","window","windows","years"]
	},{
		"title": "Intrepid command line directory traversal",
		"url": "/2015/04/01/intrepid-command-line-directory-traversal/",
		"tags": ["terminal"],
		"date": "Apr 1<span>st</span>, 2015",
		"ts": "1427895420",
		"summary": "I use Terminal (well, iTerm 2) for file management on my Mac more often than I use Finder. Typing out long path names is often more tedious than drilling through Finder folders, though1. I have enough tag-based Spotlight () tools worked out in Bash that traversal in the shell has most of the same conveniences2, but still, some of those paths&hellip; There are a lot of solutions available for efficient directory navigation in the shell. Here&rsquo;s a quick rundown of my favorites. There have been a few great solutions for jumping back through your history. From the Bash builtins , , and (see ), we&rsquo;ve progressed to tools like autojump and z. I&rsquo;m partial to fasd, which is currently aliased to both and because MUSCLE MEMORY. With these tools, every directory you to is remembered, and you can jump back to them with just fragments of their name. For example, if you were recently (or ever) in , you can just type to get back there. I&rsquo;ve been using a slightly customized version of the bashmarks (and zshmarks) system for a while for assigning quick aliases to commonly-used directories. Thanks to Jack at OneThingWell.org, I recently discovered Apparix, which is looking to be a more powerful solution. It provides additional utilities and (fuzzy) tab completion not only for the bookmark name, but for subdirectories off of the bookmark&rsquo;s path. Once again, I&rsquo;ve aliased all of its features to the same commands I&rsquo;ve been using for bashmarks. Creature of habit. By the way, if you use bashmarks, here&rsquo;s a handy trick (which you could also port to Apparix using the file). I use the alias for , so bookmarking the current folder is just . To avoid bookmarking a folder twice with different names, I have an alias to check and see if it&rsquo;s already bookmarked. It uses the command (list bookmarks) and greps for the current working directory: Here&rsquo;s one of my own functions for jumping to subdirectories up to three levels from the working directory using fuzzy search. It incorporates , which is brilliant and you should have it anyway. With this function you can drill into a directory tree quickly. If you&rsquo;re in and you want to get to , you can just type and it will find the target and jump to it. If there are multiple matches, you&rsquo;ll get the screen where you can use arrow keys or typeahead filtering to pick the correct target. Just add it to your or any file sourced there. It&rsquo;s not the fastest&hellip;",
		"keywords": ["command","computer","folder","interface","actions","apparix","bookmarking","creature","downloads","finder","folder","forecast","fuzzy","happy","launchbar","memory","muscle","onethingwell","smart","spotlight","terminal","thanks","typing","acting","again","alias","aliased","aliases","anyway","apparix","apparixrc","arrow","assigning","autojump","available","avoid","backlink","based","bashmarks","because","bookmark","bookmarked","bookmarking","bookmarks","brettterpstra","brilliant","builtins","check","choose","class","combination","command","commands","commonly","completing","contents","conveniences","created","customized","different","digging","directories","directory","discovered","doesn","drill","drilling","efficient","endnotes","enough","example","fastest","favorites","features","filtering","finder","fnref","folder","folders","footnote","footnotes","forecast","fragments","function","functions","fuzzy","github","great","greps","habit","handy","height","hellip","highlight","highlighter","history","https","huyng","iterm","image","incorporates","iterm","jocelynmallon","joelthelion","jumping","junegunn","language","launchbar","ldquo","levels","loading","local","location","looking","makes","management","marked","matches","matching","maxdepth","mdfind","mdfinds","media","micans","multimarkdown","multiple","names","navigation","needle","noscript","noteref","obdev","often","onethingwell","optionally","original","partial","paths","picture","plaintext","powerful","profile","progressed","project","provides","pushd","quick","quickly","rdquo","recently","remembered","reversefootnote","rouge","rsquo","rundown","saved","screen","search","shell","shortcut","simple","slightly","solution","solutions","source","sourced","srcset","subdirectories","system","target","tedious","terminal","through","title","tools","trails","traversal","traversing","trick","tricks","twice","typeahead","uploads","using","usually","utilities","vendor","version","where","while","width","worked","working","zshmarks"]
	},{
		"title": "Last chance: Lab v2 T-shirt run ends today",
		"url": "/2015/03/26/last-chance-lab-v2-t-shirt-run-ends-today/",
		"tags": ["apparel","marketing"],
		"date": "Mar 26<span>th</span>, 2015",
		"ts": "1427391900",
		"summary": "I&rsquo;m not mentioning this because I need sales, I really just don&rsquo;t want anyone to ask me tomorrow if I have any more because they missed this t-shirt run. If you&rsquo;ve been meaning to grab one of The Lab v2 t-shirts, now&rsquo;s the time",
		"keywords": ["shirt","teespring","error","anyone","because","countdown","meaning","mentioning","missed","processing","rsquo","sales","shirt","shirts","tomorrow"]
	},{
		"title": "MeisterTask: intuitive task management and collaboration [sponsor]",
		"url": "/2015/03/26/meistertask-intuitive-task-management/",
		"tags": ["collaboration","mindmeister","productivity","sponsor"],
		"date": "Mar 26<span>th</span>, 2015",
		"ts": "1427367600",
		"summary": "I mentioned the launch of MeisterTask last week, and I&rsquo;m pleased to have them join me as a sponsor this week. Thanks to MindMeister for their support! You work with MeisterTask in your browser, and in the free mobile app for iPhone and iPad. All your project-related data and files are safely stored in the cloud and synced&mdash;in real-time&mdash;across all devices. You can stay on top of your projects and their to-do lists wherever you are, all with efficient team collaboration. MeisterTask is free and signup only takes a few seconds. Once you&rsquo;re in, you can easily invite your friends and colleagues to collaborate with you on projects. MeisterTask&rsquo;s interface is highly intuitive, and your team can get to work right away with no training required. MeisterTasks project boards are highly flexible, and can be adapted to perfectly fit your workflow. You can use it as a lightweight Kanban board, create simple to-do lists, or set up sprints for your agile software development project. MeisterTask was created by the collaboration experts behind MindMeister, the market-leading online mind mapping app. The integration between the two tools ensures a seamless workflow from your very first idea to a successfully completed project. Brainstorm, plan, and outline in MindMeister, then easily turn your map into an agile project in MeisterTask, exporting your ideas as actionable tasks to make your project a reality. Get your team started with MeisterTask, and manage, collaborate and complete your projects together",
		"keywords": ["drive","dropbox","google","icloud","iphone","management","mindmeister","brainstorm","kanban","meistertask","meistertasks","mindmeister","thanks","across","actionable","adapted","agile","behind","between","board","boards","browser","cloud","collaborate","collaboration","colleagues","completed","create","created","development","devices","easily","efficient","ensures","experts","exporting","files","first","flexible","friends","highly","iphone","ideas","integration","interface","intuitive","invite","launch","leading","lightweight","lists","management","mapping","market","mdash","mentioned","mobile","online","outline","perfectly","pleased","project","projects","reality","related","required","right","rsquo","safely","seamless","seconds","signup","simple","software","sponsor","sprints","started","stored","successfully","support","synced","takes","tasks","together","tools","training","wherever","workflow"]
	},{
		"title": "Web Excursions for March 23, 2015",
		"url": "/2015/03/23/web-excursions-for-march-23-2015/",
		"tags": ["bookmarks"],
		"date": "Mar 23<span>rd</span>, 2015",
		"ts": "1427122800",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. It&rsquo;s only been four days since I last posted one of these. They&rsquo;re not supposed to happen that often, but they get sent to my draft folder as soon as I rack up enough bookmarks in Pinboard. So much new stuff, I can&rsquo;t stop it. The automation must move forward. tdenniston/bish A scripting language that compiles to Bash, but is much friendlier to code than Bash. It&rsquo;s lacking a few finer details at this point, but it&rsquo;s a brilliant idea that&rsquo;s totally usable right now. It&rsquo;s being consistenty developed, too, so I have a certain amount of hope that this will become a \"thing.\" dvorka/hstr A smart history search with fuzzy matching for Bash and Zsh. There&rsquo;s a hack for overriding Ctrl-R with it, too (`bind &lsquo;\"\\C-r\": \"\\C-a hh \\C-j\"&rsquo;). pdcgomes/XCActionBar Holy crap. A keyboard launcher built into Xcode. Hey.Press - Find relevant journalists. For free. I like this idea a lot. It&rsquo;s a database of publicly available emails for bloggers at major outlets, searchable by keywords. It shows you 3 relevant articles for each blogger, and if you think they&rsquo;re appropriate, you can add them to lists and export CSV files for a press campaign. Hey.Press is free to use, you just have to create an account. They do an intelligent job of \"letting\" you pay a buck or two when you download. It&rsquo;s optional&mdash;the service is promised to be free forever&mdash;but it&rsquo;s a smart way to get support from users in palettable increments. PRstack &ndash; crowd-sourced catalog of 200+ public relations tools More PR tools (crowd-sourced catalog) ranging from free services perfect for guerilla marketing and indie developers to enterprise level CRMs and analytics tools. Streamlining Our Proposal Writing Process LaCroix Design Co. wrote up how they use Markdown and Marked 2 to quickly and easily create beautiful client proposals. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["blogger","language","press","relations","scripting","backblaze","check","design","lacroix","markdown","marked","prstack","pinboard","press","process","proposal","streamlining","writing","xcactionbar","xcode","account","affordably","amount","analytics","articles","automation","available","backs","beautiful","blogger","bloggers","bookmarks","brilliant","brought","built","campaign","catalog","certain","client","cloud","compiles","computer","consistenty","create","crowd","database","details","developed","developers","download","draft","dvorka","easily","emails","enough","enterprise","entire","everything","excursions","export","files","finer","folder","forever","friendlier","fuzzy","guerilla","happen","history","increments","indie","intelligent","journalists","keyboard","keywords","lacking","language","launcher","letting","level","lists","lsquo","major","marketing","matching","mdash","ndash","often","optional","outlets","overriding","palettable","partnership","pdcgomes","point","posted","press","promised","proposals","public","publicly","quickly","ranging","relations","relevant","reliably","right","rsquo","scripting","search","searchable","securely","service","services","shows","since","smart","sourced","stuff","support","supposed","tdenniston","think","today","tools","totally","usable","users","wrote"]
	},{
		"title": "A Bash function for finding your Bash functions",
		"url": "/2015/03/21/a-bash-function-for-finding-your-bash-functions/",
		"tags": ["scripting","terminal","where"],
		"date": "Mar 21<span>st</span>, 2015",
		"ts": "1426974240",
		"summary": "As you may have noticed if you&rsquo;ve followed this blog lately, I write a lot of Bash functions and aliases. I keep them in distinct files using a plugin system based on bash-it. It works really well, and makes upkeep simple. However, I very often lose track of exactly where I defined a function or alias after a few months go by. Unix commands like and will tell you where executable scripts and binaries are, but they&rsquo;ll fail finding a function. Thus, \"where\" was born. It&rsquo;s a Bash function that indexes every function and alias in any files that are sourced during login. Then you can type and find out exactly where a function or alias was defined. If a function/alias appears multiple times in your sourced files, the last version sourced (and thus likely the one Bash will default to) will win. has options for degrees of fuzzy search, too. You can use (aliased to ) to find any functions containing the search string. There&rsquo;s (or ) to do a completely fuzzy search of the index as well. The search will fall back to using if there are no results in its index, so it becomes a universal command for me, replacing and for the most part. The basic command outputs a full path (with :lineno) if a match is found. In iTerm, you can just ⌘-click that to edit the file. You can also use a flag to immediately open a match in your . The fully-automatic version hooks the builtin command. (There are included routines for taking a more manual approach as well.) Because hooking the command and parsing every file you load can be slow, the index that creates can be cached with any expiration time you want. See the project page for more info",
		"keywords": ["alias","command","function","interface","because","editor","however","alias","aliased","aliases","appears","approach","automatic","based","basic","becomes","binaries","brettterpstra","builtin","cached","class","click","command","commands","completely","containing","creates","default","defined","degrees","distinct","executable","expiration","files","finding","followed","found","fully","function","functions","fuzzy","github","height","highlighter","hooking","hooks","https","iterm","image","images","included","index","indexes","language","ldquo","likely","lineno","loading","login","makes","manual","match","media","multiple","noscript","noticed","often","options","original","outputs","parsing","picture","plaintext","plugin","project","projecticons","projects","rdquo","replacing","results","rouge","routines","rsquo","scripts","search","simple","source","sourced","srcset","string","system","taking","times","title","track","universal","upkeep","using","version","where","width","works","write"]
	},{
		"title": "Blink: instant iTunes affiliate links on iOS",
		"url": "/2015/03/19/blink-instant-itunes-affiliate-links-on-ios/",
		"tags": ["itunes","productivity","writing"],
		"date": "Mar 19<span>th</span>, 2015",
		"ts": "1426788480",
		"summary": "Blink is an app for people who share links to iTunes and Mac App Store apps and use Apple&rsquo;s affiliate linking program. It lets you search across the App Store, the Mac App Store, the iTunes Store and the iBooks store, then generate an affiliate link with the result. You can choose a link format: plain url or one of three Markdown formats. You can also pass appsto.re, itun.es, appstore.com and itunes.com links to Blink to have them converted before you share them. With an extension that lets you use Blink&rsquo;s capabilities anywhere on iOS, it&rsquo;s a great tool for writers and bloggers who want to take advantage of affiliate linking without jumping back and forth between apps. There&rsquo;s even a URL scheme for integration with workflow apps such as Drafts, Editorial, or Workflow. Check out the homepage for more info, or just go grab Blink on the iTunes App Store ($4.99 US)",
		"keywords": ["affiliate","ibooks","itunes","markdown","store","twitter","apple","blink","check","drafts","editorial","letterpress","markdown","store","voorhees","workflow","across","advantage","affiliate","anywhere","appsto","appstore","before","between","bloggers","called","capabilities","choose","converted","extension","format","formats","forth","frequent","friend","great","homepage","ibooks","itunes","integration","itunes","jumping","linking","links","people","program","released","rival","rsquo","scheme","search","share","store","workflow","writers"]
	},{
		"title": "Web Excursions for March 19, 2015",
		"url": "/2015/03/19/web-excursions-for-march-19-2015/",
		"tags": ["bookmarks"],
		"date": "Mar 19<span>th</span>, 2015",
		"ts": "1426784400",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Google Feud I&rsquo;m lucky to get even one right in any category, but this combination of Family Feud and Google suggestions is hilarious. This made it onto @midnight the same day I added this bookmark, so it must be cool. Hackr.io A curated collection of online programming tutorials for an array of languages. sdegutis/choose I think I&rsquo;ve mentioned before. It&rsquo;s a utility for Yosemite that pops up a visual selector for input received from any script. I mention it again because now it&rsquo;s open source and ready for hacking! Create an App Demo Video in Minutes (With Gestures) for Free This looks like a cool service from Placeit. When I finally get around to making an iOS app&hellip; Blippy - GIF Folders Just in case you didn&rsquo;t have enough tools for annoying people with memes, Blippy lets you build a \"gif keyboard\" for iOS 8 to easily save and use animated gifs in your communications. Also check out blippybot",
		"keywords": ["blippy","format","google","graphics","interchange","twitter","blippy","cleanmymac","create","family","folders","gestures","google","hackr","minutes","placeit","video","yosemite","added","again","animated","annoying","array","because","before","blippybot","bookmark","brought","build","category","check","choose","collection","combination","communications","curated","easily","enough","excursions","finally","hacking","hellip","hilarious","input","keyboard","languages","looks","lucky","making","memes","mention","mentioned","midnight","online","partnership","people","programming","ready","received","right","rsquo","script","sdegutis","selector","service","source","speed","suggestions","think","tools","tutorials","utility","visual"]
	},{
		"title": "Elgato Thunderbolt Dock: Connect everything with one cable. [sponsor]",
		"url": "/2015/03/19/elgato-thunderbolt-tm-dock-connect-everything-with-one-cable/",
		"tags": ["sponsor"],
		"date": "Mar 19<span>th</span>, 2015",
		"ts": "1426762800",
		"summary": "Thanks to Elgato for sponsoring BrettTerpstra.com this week! Elgato Thunderbolt&trade; 2 Dock lets you connect everything to your MacBook or Ultrabook at once. With two Thunderbolt&trade; 2 ports, connect your computer with only one cable and simultaneously enjoy the extended versatility of Thunderbolt&trade;. A built-in HDMI port can drive any display of your choice up to 4K resolution, and three additional SuperSpeed USB 3.0 ports assure that all of your devices are connected when you need them, at full speed and with up to 1.5A of power. The power keeps flowing when your computer isn&rsquo;t connected, so you can leave devices charging even when you&rsquo;re away from your desk. Tap into the full performance of wired network connections with the built-in Gigabit Ethernet port, and enjoy crystal-clear conference calls through the separate microphone input and amplified audio output. Pick one up today, and start connecting all your devices with a single cable",
		"keywords": ["elgato","ethernet","gigabit","macbook","resolution","serial","thunderbolt","ultrabook","universal","brettterpstra","cable","elgato","ethernet","gigabit","macbook","sponsorship","superspeed","syndicate","thanks","thunderbolt","ultrabook","amplified","assure","audio","built","cable","calls","charging","choice","clear","comes","computer","conference","connect","connected","connecting","connections","crystal","devices","display","drive","enjoy","everything","extended","flowing","input","keeps","leave","microphone","network","output","performance","ports","resolution","rsquo","separate","simultaneously","single","speed","sponsoring","through","today","trade","versatility","wired"]
	},{
		"title": "MeisterTask: visual task management from MindMeister",
		"url": "/2015/03/18/meistertask-visual-task-management-from-mindmeister/",
		"tags": ["mindmeister","productivity"],
		"date": "Mar 18<span>th</span>, 2015",
		"ts": "1426712880",
		"summary": "MeisterTask was officially announced today. It&rsquo;s a web-based project management app from the team behind my favorite web-based mind mapping app, MindMeister. MindMeister offers a more visual way to think and collaborate, and MeisterTask continues that vision by turning brainstorms into actions. MeisterTask is similar in function to Trello, but offers a more complete project management environment with a beautiful user interface. I&rsquo;ve been trying MeisterTask out in beta for a while now, and it&rsquo;s a pleasure to use. There&rsquo;s an iOS companion, too. In addition to the Kanban-style overviews of each project, every project and task contains conversation and a full activity history. You can use @mentions in conversations on any task, and inviting and onboarding new members to any project is streamlined, even if they&rsquo;ve never used MeisterTask before. Tasks can have links, photos, and other attachments connected, including direct integration with MindMeister maps. With MindMeister&rsquo;s collaboration and voting features, it&rsquo;s easy to expand an in-depth conversation on a single task using mind maps, which takes the conversation into a realm that I consider far more productive. From within MindMeister, you can also easily turn nodes into tasks, and link tasks into MeisterTask projects. MeisterTask also has time tracking, great keyboard navigation, and integration with email. It also syncs with services such as GitHub, Zendesk, Google Drive, Slack, and Dropbox. There&rsquo;s an API being finalized right now for custom integrations and tools, too. I&rsquo;m excited about this. I&rsquo;m already using it with family and friends for small-to-medium projects, and I think it will scale quite well. It&rsquo;s free to use, with a Pro package coming soon. Head over and check it out",
		"keywords": ["drive","dropbox","google","interface","management","manager","mindmeister","mobile","programming","project","drive","dropbox","github","google","kanban","meistertask","mindmeister","slack","tasks","trello","zendesk","actions","activity","announced","attachments","based","beautiful","before","behind","brainstorms","check","collaborate","collaboration","coming","companion","connected","consider","contains","continues","conversation","conversations","custom","depth","direct","easily","email","environment","excited","expand","family","favorite","features","finalized","friends","function","great","history","including","integration","integrations","interface","inviting","keyboard","links","management","mapping","medium","members","mentions","navigation","nodes","offers","officially","onboarding","overviews","package","photos","productive","project","projects","realm","right","rsquo","scale","services","similar","single","small","streamlined","style","syncs","takes","tasks","think","today","tools","tracking","trying","turning","using","vision","visual","voting","while","within"]
	},{
		"title": "Shell tricks: sort a Bash array by length",
		"url": "/2015/03/17/shell-tricks-sort-a-bash-array-by-length/",
		"tags": ["shell"],
		"date": "Mar 17<span>th</span>, 2015",
		"ts": "1426604400",
		"summary": "I&rsquo;m certain there&rsquo;s a more elegant way to do this, but I couldn&rsquo;t find it. I needed to sort a Bash array of strings by the length of each element without getting too verbose. Here&rsquo;s what I came out with: If you want to reverse the order, just change the section of the oneliner to (reverse). By the way, this is from a quick change I made to Reiki (v1.1.3 is up) that allows it to assume that the shortest match is the most likely when testing multiple fuzzy matches. Just in case you cared&hellip",
		"keywords": ["proramming","script","scripting","shell","reiki","allows","array","ascending","assume","cared","certain","change","contains","couldn","elegant","element","elements","fuzzy","getting","hellip","length","likely","match","matches","multiple","needed","oneliner","quick","reverse","rsquo","section","shortest","sorted","strings","testing","variable","verbose"]
	},{
		"title": "MultiMarkdown Quicklook plugin 1.1",
		"url": "/2015/03/16/multimarkdown-quicklook-plugin-1-dot-1/",
		"tags": ["markdown","multimarkdown","quicklook"],
		"date": "Mar 16<span>th</span>, 2015",
		"ts": "1426539180",
		"summary": "MultiMarkdown 4.7 was recently released, and I decided it was time to catch my Quicklook plugin up with it. This version of the MultiMarkdown QuickLook plugin allows for custom styling when previewing Markdown files in Finder. Full details on GitHub. The only changes aside from the binary update are to the CSS files, which had comments in them that MultiMarkdown was mistaking for headlines when generating the results. That&rsquo;s right, MultiMarkdown 4.7 has automatic table of contents generation. There are lots of other new things in MultiMarkdown lately, so if you haven&rsquo;t updated your own installations, you should. replacements are one of my favorite new features, allowing you to use the format to include text from any MMD headers defined in your document. The new QuickLook plugin source is on GitHub, and there&rsquo;s a compiled version ready to install on the release page for 1.1",
		"keywords": ["cascading","github","markdown","sheets","style","finder","github","markdown","multimarkdown","quicklook","quicklook","allowing","allows","aside","automatic","binary","catch","changes","comments","compiled","contents","custom","decided","defined","details","document","favorite","features","files","format","generating","generation","haven","headers","headlines","install","installations","mistaking","plugin","previewing","ready","recently","release","released","replacements","results","right","rsquo","source","styling","table","updated","version"]
	},{
		"title": "Easy embedding of Google web fonts",
		"url": "/2015/03/14/embedding-google-web-fonts/",
		"tags": ["fonts","webdesign"],
		"date": "Mar 14<span>th</span>, 2015",
		"ts": "1426363920",
		"summary": "I&rsquo;m working on a new splash/intro section to embed in Marked 2. It&rsquo;s coming along nicely, and in addition to offering a \"Getting started\" series of slides, it can set groups of configuration options with a single button. Now that Marked has attempted to satisfy so many different writing workflows, it&rsquo;s become overloaded with options (i.e. \"bloated\"). This simplifies things greatly (details:1). When I&rsquo;m working on HTML interfaces to embed in apps (or designing themes for Marked), I usually like to embed any web fonts I use as data URIs. In cases like an app&rsquo;s splash page, this ensures it won&rsquo;t load looking awful because the user didn&rsquo;t have an internet connection to download remotely-hosted fonts when they launched. Google hosts a selection of free web fonts, and there are some pretty good ones in there. Amongst some awful ones, but it&rsquo;s easy to search. To embed these, though, you have to take the code Google gives you, follow the import url to the CSS page, grab the source url for each font/variation, save the target file locally, then base64 encode the font to use in a data URI. The source for all of these is available from Google Code, but the process is just as tedious going that route. I do this just often enough that it had to be automated. The script is simple and serves only this purpose. You just copy one or more lines from the \"Standard\" tab of the Quick Use panel on the Google Web Fonts page. Pass them to the script on STDIN and it will do the rest, outputting ready-to-paste CSS with the base64 URIs within a full font-face declaration for each font. Grab the script, save it to a file in your path ( works), and then run to make it executable. It looks for an exact match without much forgiveness, so make sure that you have the full markup in the input. That will put the result directly back onto your clipboard. You can also redirect it to a file, if needed, with: You can also save the link lines to a file and it into the pipe, or pass each link as an argument on the command line, quoted with double quotes. I don&rsquo;t recommend the latter, too messy. Put that into your main CSS and you can use freely with no additional import statements. Note that this increases your CSS size significantly enough to offset any load time gains from reducing external requests, so in most cases it&rsquo;s not an optimization. It just ensures that the fonts will be available offline. Here&rsquo;s the&hellip;",
		"keywords": ["cascading","google","scheme","sheets","style","&#39;open","&#39;http","&#39;stylesheet&#39;","&#39;text","&#39;truetype&#39;","aaeaaaasaqa","amongst","fonts","getting","google","marked","quick","stdin","sans&#39;","standard","terminal","using","above","again","argument","attempted","automated","available","awful","backlink","because","bloated","brettterpstra","builds","button","changes","checkout","chmod","class","clipboard","coming","command","configuration","cyrillic","declaration","defaults","designing","details","different","directly","double","download","easiest","embed","encode","endnotes","enough","ensures","exact","executable","external","family","finished","fnref","fontgrabberheader","fonts","footnote","footnotes","forgiveness","format","freely","gains","github","gives","going","google","googleapis","googlefontdirectory","grabber","greatly","groups","height","highlight","highlighter","hosted","hosts","https","image","import","increases","input","interfaces","internet","intro","language","latin","latter","launched","ldquo","loading","local","locally","looking","looks","marked","markup","match","media","messy","missed","multiple","navigation","needed","newsplash","nicely","normal","noscript","noteref","offering","offline","offset","often","optimization","options","original","output","outputting","overloaded","panel","paste","pbcopy","pbpaste","picture","plaintext","preference","process","publish","quoted","quotes","rdquo","reads","ready","recommend","redirect","reducing","remotely","requests","reversefootnote","rouge","route","rsquo","satisfy","script","search","section","selection","series","serves","shown","significantly","simple","simplifies","single","skeleton","slides","source","splash","srcset","started","statements","steps","strings","style","subset","system","target","tedious","tempfonts","themes","title","transitions","uploads","usually","weight","whole","width","within","workflows","working","works","writing"]
	},{
		"title": "The Lab v2 t-shirt, round 2",
		"url": "/2015/03/13/the-lab-v2-t-shirt-round-2/",
		"tags": ["apparel","marketing"],
		"date": "Mar 13<span>th</span>, 2015",
		"ts": "1426281420",
		"summary": "I&rsquo;ve had a few requests from people who missed the first (limited) run of The Lab v2 t-shirts. I think there&rsquo;s enough interest to do a small run, so if you missed out the first time around, now&rsquo;s your chance. I did get a chance to upload slightly modified artwork for this run. The last run had a tiny white border around all of the edges that I didn&rsquo;t like, so that&rsquo;s been cleaned up. Every t-shirt purchased is a donation to support this site, but in addition to feeling good about keeping me alive, you get a shirt. Everybody wins. Tank top and women&rsquo;s versions and sizes available. Take a look",
		"keywords": ["brett","brettterpstra","shirt","terpstra","everybody","alive","artwork","available","border","chance","cleaned","donation","edges","enough","feeling","first","interest","keeping","limited","missed","modified","people","purchased","requests","rsquo","shirt","shirts","sizes","slightly","small","support","think","upload","versions","white","women"]
	},{
		"title": "PDFpen 7: the ultimate all-purpose PDF editor [sponsor]",
		"url": "/2015/03/12/pdfpen-7-the-ultimate-all-purpose-pdf-editor-sponsor/",
		"tags": ["sponsor"],
		"date": "Mar 12<span>th</span>, 2015",
		"ts": "1426158000",
		"summary": "Thanks again to Smile for supporting BrettTerpstra.com this week. Be sure to check out the great new videos from MacSparky which will show you PDFpen 7 more eloquently than I could! PDFpen is the ultimate all-purpose PDF editor, and now Smile offers ten great tutorials from the talented David Sparks (aka MacSparky). There also what&rsquo;s new, what more to explore, and what&rsquo;s specific to PDFpenPro. Watch the videos, and get PDFpen today",
		"keywords": ["document","dropbox","format","icloud","iphone","pdfpen","portable","apply","brettterpstra","david","dropbox","macsparky","pdfpen","pdfpenpro","smile","sparks","thanks","touch","watch","again","check","convert","documents","editor","eloquently","explore","forms","great","icloud","iphone","images","learn","markup","minutes","offers","redact","rsquo","scanned","signature","specific","supporting","talented","today","tutorials","ultimate","usable","videos"]
	},{
		"title": "Web Excursions for March 11, 2015",
		"url": "/2015/03/11/web-excursions-for-march-11-2015/",
		"tags": ["bookmarks"],
		"date": "Mar 11<span>th</span>, 2015",
		"ts": "1426101120",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. itod/tdtemplateengine \"A multi-pass, streaming template engine implemented in Cocoa, for use in Cocoa.\" Apparently Todd Ditechendorf built a great templating engine for Cocoa (iOS and OS X) a year ago and I missed it&hellip; Nozbe is coming to the  Watch I assume many of the productivity apps will be going for this. Nozbe is a great one, especially for collaborative project management, so I&rsquo;m excited to see what they do. Enable Clang Modules, Disable Auto Linking I think I learn something new every time Daniel Jalkut writes (or speaks). animatedModal.js \"a jQuery plugin to create a fullscreen modal with CSS3 transitions.\" These are slick. Dug.js &ndash; A JSONP to HTML Script &ndash; Rog.ie Handy JavaScript for displaying JSONP feeds on a web page using mustache-style templating",
		"keywords": ["cascading","design","javascript","jquery","library","sheets","style","apparently","check","clang","cocoa","daniel","disable","ditechendorf","handy","jsonp","jalkut","javascript","linking","looks","modules","nozbe","script","setapp","watch","access","animatedmodal","assume","brought","built","clang","collaborative","coming","coreint","create","developer","disable","displaying","dugjs","edition","engine","especially","excited","excursions","feeds","fullscreen","github","going","great","hellip","https","hundreds","implemented","indiestack","jquery","joaopereirawd","jsonp","ldquo","learn","linking","management","missed","modal","modules","monthly","multi","mustache","ndash","nozbe","partnership","plugin","productivity","project","rdquo","rsquo","script","setapp","slick","speaks","streaming","style","subscription","tdtemplateengine","template","templating","think","today","transitions","turned","using","watch","writes"]
	},{
		"title": "My favorite stuff from 2014, Part 2",
		"url": "/2015/03/08/my-favorite-apps-of-2014-part-2/",
		"tags": ["macappstore"],
		"date": "Mar 8<span>th</span>, 2015",
		"ts": "1425837180",
		"summary": "This is the second half of the \"My favorite stuff from 2014\" that I started in January. It took me a while to get back to it, but here it is! This half covers utilities and developer tools. Even if you&rsquo;re not a developer, there&rsquo;s plenty of great stuff for both power users and aspiring power users. I&rsquo;ll kick it off with an oddball physical product that ended up being one of my favorite small investments from 2015: The AcousticSheep SleepPhones, a pair of headphones that look like a sweatband and are exquisitely comfortable to sleep in. I&rsquo;ve mentioned them in years past, but this year they redesigned and made them sound better, feel better, and added a woven cable that won&rsquo;t dry out and crack over a year or two like previous versions. If you like binaural beats or sleeping to music (or pzizz), check them out. Now, on with the utilities and tools show&hellip; I use a lot of utilities on my Macs. From having my office lights turn on and off automatically as I come and go to keeping my machines speedy, the array of software available for accomplishing just about any task has continued to improve in the last year. Bartender is probably my number one pick, and the utility I&rsquo;m most likely to take for granted on any given day because it \"just works.\" If you have more than a few utilities running in your menu bar, this is sanity. Visits continues to be the most convenient way to monitor Google Analytics stats for multiple sites right from the OS X menu bar. With graphs and referral information for day, previous day, week, and month, it&rsquo;s a perfect overview in a compact and easily-accessible interface. I&rsquo;ve always enjoyed GeekTool for displaying information on my Desktop, but 2014 saw the dawn of Ubersicht, which has been better looking and even more fun to play with. unDock is a great utility for people with laptops. Quickly unmount external and/or network drives with a keyboard shortcut (I use Hyper-escape). It has an awesome \"undo\" feature for re-mounting those drives as well. BetterTouchTool is one of those utilities that I&rsquo;m lost without. I have extensive gestures set up for my trackpad, as well as keyboard shortcuts. It&rsquo;s not as powerful as Keyboard Maestro for keyboard tasks, but it&rsquo;s all I need for just about every shortcut I want to assign. It even powers my Leap Motion Minority Report setup, and there&rsquo;s an iOS companion (BTT remote) for even more fun. I&rsquo;ll&hellip;",
		"keywords": ["developer","macintosh","software","store","tools","utilities","acousticsheep","alcatraz","analytics","appdelete","applescripts","archive","automation","bartender","bettertouchtool","bittorrent","bluetooth","capslock","cleanmymac","climate","cocktail","codekit","coderunner","coffeescript","controlplane","daisydisk","desktop","developer","development","digger","drive","drobo","dropbox","droplr","enough","eventscripts","expandrive","fixme","fastscripts","fuzzyautocomplete","geektool","general","ghostlab","github","google","grunt","hazel","houdahspot","hyper","indigo","insteon","kaleidoscope","karabiner","keyremap","keyboard","launchcontrol","livereload","macbook","mackeeper","maestro","markdown","minority","motion","network","oyster","pckeyboardhack","pattern","patterns","peppermint","powerlinc","quickly","regexrx","report","shortcuts","shuttlexpress","sleepphones","slender","speaking","spotlight","stylus","sublime","terminal","tower","transporter","ubersicht","utilities","version","visits","visor","while","xcode","access","accessible","accomplished","accomplishing","accurate","added","advanced","allows","amazing","among","anymore","anyone","applications","areas","array","aspects","aspiring","assign","associated","automate","automatic","automatically","automation","available","avoided","awesome","based","beats","beautiful","because","before","beginners","between","binaural","brand","browser","browsers","buckets","built","cable","caches","called","capabilities","capable","capture","changes","check","checking","choice","cleaning","clever","cloud","coding","combination","comfortable","command","comments","common","compact","companion","complex","conditions","config","configuration","consolidated","contextual","continued","continues","controlling","convenient","copying","covers","crack","create","creating","default","deleting","designer","detection","detectors","developer","development","devices","display","displaying","displays","docking","doing","drive","drives","easier","easily","editor","either","elements","ended","enjoyed","escape","especially","essential","events","everyone","everything","excellent","expand","experience","exploring","expressions","exquisitely","extensive","external","favor","favorite","favorites","feature"]
	},{
		"title": "Marked 2.4.11: party like it's $9.99!",
		"url": "/2015/03/05/marked-2-dot-4-11-party-like-its-9-dollars-dot-99/",
		"tags": ["markdown","marked"],
		"date": "Mar 5<span>th</span>, 2015",
		"ts": "1425588480",
		"summary": "Marked 2.4.11 is out in the updater for direct customers (MAS update coming, hopefully soon). It&rsquo;s a leap forward in speed when analyzing text on large documents, fixes multiple bugs, and hopefully represents a significant improvement in stability for all customers. There are a couple of new features, mostly invisible and related to normalizing results between the MultiMarkdown and Discount processors. I&rsquo;m currently working on adding an improved feedback system that will allow me to spend less time asking users how their preferences are set up and more time helping to solve issues. To celebrate what I think is a very solid update, you can purchase Marked 2 for $9.99 (normally $13.99) this month (March 2015). The discount is across the board, no coupon necessary. The price will be reflected on the Mac App Store when the new version finally gets approved. Yes, it&rsquo;s weird to have a celebratory sale for an incremental release, but I&rsquo;m a weird developer",
		"keywords": ["features","marked","store","discount","marked","multimarkdown","store","across","adding","allow","analyzing","approved","asking","between","board","celebrate","celebratory","coming","couple","coupon","customers","developer","direct","discount","documents","features","feedback","finally","fixes","helping","hopefully","improved","improvement","incremental","invisible","issues","mostly","multiple","necessary","normalizing","normally","preferences","price","processors","reflected","related","release","represents","results","rsquo","significant","solid","solve","speed","spend","stability","system","think","updater","users","version","weird","working"]
	},{
		"title": "Web Excursions for March 04, 2015",
		"url": "/2015/03/04/web-excursions-for-march-04-2015/",
		"tags": ["bookmarks"],
		"date": "Mar 4<span>th</span>, 2015",
		"ts": "1425492600",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Get your Party started with Festify (Beta) In-beta (and I&rsquo;ve had some setup issues) app to let your party attendees vote on which Spotify tracks to play. metaflop : modulator An online font editor that happens to serve as a great visual tool for learning the ins and outs of typography. No, OS X is NOT the &lsquo;most vulnerable OS&rsquo; despite shoddy reporting I&rsquo;m clearly no security expert, but these points raised by Rene Ritchie are pretty obvious flaws GFI \"report.\" Fillerama: A Filler Text Generator HTML-formatted Lipsum generator with sources including Arrested Development, Doctor Who, Dexter, Futurama, Monty Python, and more. It also has an API. Expect the TextExpander lipsum tools in the TE-tools project to be updated soon. Sublime Theme - Lyte The only thing I don&rsquo;t like about this Sublime Text 3 theme is the group headers in the sidebar, and even they&rsquo;re not bad. The rest is great, and the included theme files are perfect for my tastes. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["apple","cascading","github","interface","javascript","jquery","programming","sheets","spotify","style","arrested","check","development","dexter","doctor","expect","festify","filler","fillerama","futurama","generator","lipsum","mindmeister","monty","party","python","ritchie","spotify","sublime","textexpander","theme","attendees","boosting","brainstorming","brought","clearly","collaborating","collaborative","editor","excursions","expert","files","flaws","formatted","generator","great","group","happens","headers","included","including","issues","learning","lipsum","lsquo","mapping","metaflop","modulator","obvious","online","partnership","party","points","productivity","project","raised","report","reporting","rsquo","security","serve","setup","shoddy","sidebar","software","sources","started","tastes","theme","tools","tracks","typography","updated","visual","vulnerable"]
	},{
		"title": "David Sparks' \"Workflow Video Field Guide\"",
		"url": "/2015/03/03/david-sparks-workflow-video-field-guide/",
		"tags": ["video"],
		"date": "Mar 3<span>rd</span>, 2015",
		"ts": "1425412800",
		"summary": "Have you seen Workflow for iOS, but had reservations about digging into it? True to form, David Sparks has published a Workflow Video Field Guide packed with videos to not only help you get started, but turn you into Workflow master. In MacSparky style, the videos are easy to follow, bookmarked for quick reference, and you can get through the course in an hour. You can check out a free sample on Vimeo. Pick up a copy for $9.99 directly from Mr. Sparks, and see the MacSparky website for more details and a chapter listing. Don&rsquo;t miss the rest of the Field Guides, either",
		"keywords": ["iphone","store","workflow","david","field","guide","guides","macsparky","sparks","video","vimeo","workflow","bookmarked","chapter","check","details","digging","directly","either","listing","master","packed","published","quick","reservations","rsquo","sample","started","style","through","videos","website"]
	},{
		"title": "BitTorrent Sync 2.0 is official",
		"url": "/2015/03/03/bittorrent-sync-2-dot-0-is-official/",
		"tags": [],
		"date": "Mar 3<span>rd</span>, 2015",
		"ts": "1425409200",
		"summary": "As you probably know, I&rsquo;m a fan of BitTorrent Sync. When it comes to fast file sharing, there are a few really good options (that almost all trump Dropbox for me), and Sync is one of the best. I&rsquo;ve been beta testing version 2.0 and am excited to announce that it&rsquo;s stable and available today! The core features of Sync are available for free. There&rsquo;s a new \"Pro\" tier, which is enabled for free for the first 30 days, which enables some cool extra features. Sync 2.0 does everything that the last version (1.4) did, but with a better interface, an enhanced security model, and a cool \"selective sync\" (a \"Pro\" feature) that allows you to connect to a shared folder without downloading its contents. Instead, you get placeholders, and double-clicking a file (or tapping on iOS) will download just that file and keep it in sync. If you own a NAS, Sync 2.0 also has an expanded list of devices (Seagate, Western Digital, NETGEAR, Synology, Drobo, Asustor, QNAP, Overland) that it can integrate with. Sync 2.0 works with Mac, Windows, Linux, and FreeBSD. The mobile updates for iOS, Android, Windows Phone, and Amazon Kindle will also be released today. There&rsquo;s a fun intro video to check out, an announcement blog post, and you can check out Sync 2.0 itself at GetSync.com",
		"keywords": ["android","cloud","sharing","amazon","android","asustor","bittorrent","digital","drobo","dropbox","freebsd","getsync","kindle","linux","netgear","overland","phone","seagate","synology","western","windows","allows","almost","announce","announcement","available","check","clicking","comes","connect","contents","devices","double","download","downloading","enabled","enables","enhanced","everything","excited","expanded","extra","feature","features","first","folder","integrate","interface","intro","itself","mobile","model","options","placeholders","released","rsquo","security","selective","shared","sharing","stable","tapping","testing","today","trump","updates","version","video","works"]
	},{
		"title": "Your teenage rock band",
		"url": "/2015/03/01/your-teenage-rock-band/",
		"tags": ["music","personal"],
		"date": "Mar 1<span>st</span>, 2015",
		"ts": "1425233820",
		"summary": "You&rsquo;re a high schooler. You love music. You want to play music. Not marching band music, and orchestra isn&rsquo;t cutting it for you. You want your own band. You&rsquo;d find 2/3 or 3/4 of a core band among your close friends. Then you launch the search for the final piece, and maybe some extra pieces. It&rsquo;s going to be a rock band, but you have a friend who&rsquo;s a really, really good fiddler. You can make that work. It seemed like a lead singer and a drummer were going to be the hardest to find. Most kids who were into starting a band had taken guitar lessons, and some had chosen bass. Those two were easy to nail down. Teen self-esteem made lead singers tougher to find, and good drummers were in such high demand that finding an available one was a challenge. A singer doesn&rsquo;t need much experience, and a guitar player can usually pick up bass reasonably well, but you don&rsquo;t just pick up drums. But you found them all, eventually. Then you had to find a rehearsal space. You couldn&rsquo;t afford to rent a space, so you find garages and basements at whoever&rsquo;s house has a parent or parents that worked late (or happen to be wonderfully permissive). Your equipment sucks enough to begin with, but the acoustics in a garage made life hell. The louder you played, the worse it sounded. The acoustics in a basement were different, but not much better. You can hear your bandmates now, though. You rehearse and rehearse. After some covers, you start writing original songs. Your style starts to form. Someone in the band eventually hears something worth keeping. They convince you to play live. Then you talk some friends into letting you play their party. It doesn&rsquo;t go well. Maybe it went badly enough that someone in the band gives up and you start the search again. Maybe, though, you&rsquo;d found a group of kids who were willing to soldier on. You keep at it. You bond through the humiliation of gigs that probably weren&rsquo;t as bad as you thought. Soon you get more cohesive. You get better. Then it&rsquo;s time to scrap together a demo tape. Someone has a small 4-track cassette recorder, or the local pawn shop has one you can pick up on a McDonald&rsquo;s wage. You can&rsquo;t afford good mics, though, so even if the noise bed on that 4-track weren&rsquo;t insane, the combination of your basement-cum-studio and lack of anything but that blues mic your singer is in love with makes for an almost-indistinguishable, muddy&hellip;",
		"keywords": ["highschool","audio","between","digital","everyone","fortunately","friday","making","maybe","mcdonald","people","playing","plymouth","rampage","seeing","tempers","workstation","acoustics","adios","affordable","again","agents","almost","among","available","average","awkward","badly","bandmates","bands","basement","basements","became","because","becomes","before","begin","bigger","blues","booking","boosts","burners","calls","career","carpet","cassette","catalog","challenge","chosen","clash","close","clubs","cohesive","college","combination","comes","contracts","convince","copies","couldn","couple","cover","covers","critical","cutting","dance","decent","decide","degradation","demand","demanding","diaspora","different","digital","doesn","dozen","dreaming","drive","drummer","drummers","drums","enough","entire","equipment","esteem","eventually","everyone","exhilarating","experience","exposure","extra","faces","fiddler","field","finding","finish","first","flare","found","friend","friends","garage","garages","getting","gives","going","graduation","group","guitar","guitarist","hands","happen","hardest","headed","headlining","heard","hears","heater","hellip","house","humiliation","imagine","indistinguishable","insane","keeping","keeps","label","labels","later","launch","lessons","letting","level","listeners","little","local","louder","magnetic","makes","making","marching","maybe","mdash","member","merch","mixdown","money","monitors","muddy","music","nights","noise","opener","orchestra","original","parent","parents","party","performance","permissive","piece","pieces","plateau","played","player","playing","pristine","reasonably","record","recorder","recording","regularly","rehearsal","rehearse","retakes","rounds","rsquo","sales","school","schooler","schoolers","scrap","search","seemed","showing","shows","showstoppers","silent","singer","singers","situation","small","soldier","songs","sound","soundboard","sounded","space","sport","stardom","starting"]
	},{
		"title": "Paddle: In-app analytics for iOS, Mac, Android & Windows [sponsor]",
		"url": "/2015/02/26/paddle-in-app-analytics-for-ios-mac-android-and-windows-sponsor/",
		"tags": ["sponsor"],
		"date": "Feb 26<span>th</span>, 2015",
		"ts": "1424952000",
		"summary": "Thanks to Paddle for sponsoring BrettTerpstra.com this week. I use Paddle for Marked 2 and it&rsquo;s been so good that I&rsquo;m planning to use it for a couple of (secret and not-so-secret) upcoming apps. I just integrated the new analytics features, and with two lines of code I&rsquo;m receiving opt-in analytics info that&rsquo;s helping me make solid development and marketing decisions. App analytics can be complex and expensive to set up, and more often than not they&rsquo;re restricted to specific platforms. That&rsquo;s why Paddle.com built a range of free in-app analytics SDKs for iOS, Mac, Android and Windows to help developers gain insights about their apps and users in a single, beautiful dashboard. After a simple integration process involving just 3 lines of code, the Paddle dashboard will start pulling in real-time data about your app&rsquo;s daily/weekly/monthly active users, where in the world they&rsquo;re based, the operating systems and devices they use, number of app launches and more. The best part is that all of this data is available for free and out of the box; there&rsquo;s no need for complex configurations.  Developers wanting to dig deeper can also upgrade to Paddle&rsquo;s \"Plus\" packages (starting at $10 per month) to create their own custom, app-specific metrics. Whether that&rsquo;s tracking the number of documents created, level-ups in a game, or tasks created, custom metrics provide the data that&rsquo;s relevant to your app. Paddle&rsquo;s new analytics SDKs tie seamlessly into their existing range of developer tools &ndash; such as the checkout and trial SDK for Mac & Windows &ndash; making it simple for developers to manage and sell their apps & games outside independently. ",
		"keywords": ["analytics","android","developer","development","google","interface","microsoft","mobile","payment","processor","programming","software","windows","analytics","android","brettterpstra","developers","fcympp","marked","paddle","sponsored","syndicate","thanks","windows","active","analytics","available","based","beautiful","blockquote","brettterpstra","built","checkout","class","complex","configurations","couple","create","created","custom","daily","dashboard","decisions","deeper","developer","developers","development","devices","documents","expensive","features","games","header","height","helping","https","image","independently","insights","integrated","integration","involving","launches","ldquo","level","loading","making","marketing","media","metrics","monthly","ndash","nofollow","noscript","often","operating","original","outside","packages","paddle","picture","planning","platforms","process","pulling","range","rdquo","receiving","relevant","restricted","rsquo","seamlessly","secret","simple","single","solid","source","specific","sponsor","sponsoring","srcset","starting","systems","tasks","title","tools","tracking","trial","upcoming","upgrade","uploads","users","wanting","weekly","where","width","world","ztbeln"]
	},{
		"title": "Titler 1.1.0",
		"url": "/2015/02/25/titler-1-dot-1-0/",
		"tags": ["markdown","markdownservices","service","titler"],
		"date": "Feb 25<span>th</span>, 2015",
		"ts": "1424899620",
		"summary": "I&rsquo;ve been tweaking the Titler Service I published last week a bit over the last few days. It&rsquo;s now an official \"project\" with its own page. I wanted to push this version out before I lose any more time to it, but if you run into any problems, be sure to drop me a line. Titler no longer has any dependencies. I replaced nokogiri with a simple regex. The original goal for this little tool had need of more complex parsing, but pulling a title tag out just doesn&rsquo;t. I also replaced the standard network methods with system calls, which means no more hassle dealing with SSL (https) urls. Option to remove SEO tags (site title, site tagline etc.) from titles To use this, add to your ~/.titler config file If a title is truncated, you can optionally include the original (full) title in a title attribute. add to ~/.titler When truncating titles, Titler will now ensure that any open punctuation pairs are closed at the end HTML entity cleanup UTF-8 support Improved error handling A bunch of more trivial improvements You can download directly below, and see the Titler project page for more info. Titler Service v1.1.0 Download Titler Service v1.1.0 An OS X System Service to add titles and affiliate tokens to urls (Markdown format) in selected text Published 02/25/15. Updated 02/25/15. Changelog Donate &bull; More info&hellip",
		"keywords": ["element","locator","resource","changelog","donate","download","improved","markdown","published","service","system","titler","updated","affiliate","attribute","before","below","bunch","calls","cleanup","closed","complex","config","dealing","dependencies","directly","doesn","download","entity","error","features","format","handling","hassle","hellip","https","improvements","little","longer","methods","network","nokogiri","official","optionally","original","pairs","parsing","problems","project","published","pulling","punctuation","regex","remove","replaced","rsquo","selected","simple","standard","support","system","tagline","title","titler","titles","tokens","trivial","truncated","truncating","tweaking","version","wanted"]
	},{
		"title": "Sketch cheatsheet for Cheaters",
		"url": "/2015/02/23/sketch-cheatsheet-for-cheaters/",
		"tags": ["cheaters","cheatsheet"],
		"date": "Feb 23<span>rd</span>, 2015",
		"ts": "1424700000",
		"summary": "If you use Cheaters, you may also be the type of person who uses Sketch. If so, you&rsquo;ll appreciate the addition of a cheatsheet for Sketch Shortcuts, based on the tables provided at Sketch Shortcuts. To add it, just put the file into your cheatsheets directory (or just the latest update if you installed via Git), and add it to your index.html: If you&rsquo;re new to Cheaters, check out the documentation and download it from the project page. I should also note that there&rsquo;s a new Xcode cheatsheet which was submitted by Thomas Bennett. If you create any custom sheets for common apps, be sure to let me know! Since you use Sketch and Cheaters, and you made it this far in the post, you probably work with CSS, too. If that&rsquo;s not the case, I can only imagine what possessed you to read this far. Either way&hellip; I also fixed a CSS issue in the Cheaters window. This should actually be a separate post for the sake of search engines because it&rsquo;s a fix I think will be handy to others, but I wouldn&rsquo;t want any extra traffic&hellip; In the latest versions of WebKit, elements occasionally wiggle all over the page during scrolling. I ran into this with Marked, on a couple of web pages, and just noticed it in Cheaters as well. Fortunately, I had figured out the issue a while ago. As far as I can tell, it happens when a CSS rule triggers the WebKit animation engine (even for 2d transforms). If it doesn&rsquo;t break anything else on your page, you can fix it with: You should still be able to apply custom and properties to more specific elements within the DOM, but having the outer element reset takes care of the issue. I hope that&rsquo;s useful to somebody&hellip",
		"keywords": ["cascading","chrome","design","fixed","google","position","safari","sheets","style","webkit","bennett","cheaters","either","fortunately","marked","shortcuts","since","sketch","thomas","webkit","xcode","animation","apply","appreciate","based","because","break","cheatsheet","cheatsheets","check","common","couple","create","custom","directory","doesn","download","element","elements","engine","engines","extra","figured","fixed","handy","happens","having","hellip","imagine","index","installed","latest","nerds","noticed","occasionally","others","outer","pages","person","position","possessed","project","properties","reset","rsquo","scrolling","search","separate","sheets","somebody","specific","submitted","tables","takes","think","traffic","transforms","triggers","useful","versions","while","wiggle","window","within","wouldn"]
	},{
		"title": "Web Excursions for February 21, 2015",
		"url": "/2015/02/21/web-excursions-for-february-21-2015/",
		"tags": ["bookmarks","plugin"],
		"date": "Feb 21<span>st</span>, 2015",
		"ts": "1424534400",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Do Button , Do Camera , and Do Note Three iOS/Android apps from IFTTT to give you one-tap access to a variety of actions. The \"Do Button\" app can connect to any of your IFTTT recipes, and the camera and notes app provide additional features specific to their respective functions. See links here for Android versions. Beam: Smart projector that fits into any light socket See the Kickstarter page for details. While the 100 Lumens on the 854x480 projector aren&rsquo;t going to make a home theater for you, the automation capabilities and potential uses make it fascinating. To me anyway. Because I&rsquo;m a dreamer. Five minutes to Markdown mastery If you haven&rsquo;t figured out Markdown yet, here&rsquo;s a concise 5-minute guide from Remarq to help out. A great resource, thanks to all the Twitter folk who pointed it out! (When you&rsquo;re ready for a more in-depth look, check out my video tutorial. And Marked, of course.) Sketch Toolbox - A super simple plugin manager for Sketch A plugin manager with search and update capabilities for Sketch plugins. I&rsquo;m actually even happier about this than I was about Alcatraz for Xcode (which is also awesome). SketchTool A CLI from the makers of Sketch that enables you include export functions in your build scripts, among other tricks. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["android","ifttt","kickstarter","alcatraz","android","backblaze","because","button","camera","check","ifttt","kickstarter","lumens","markdown","marked","remarq","sketch","sketchtool","smart","toolbox","twitter","while","xcode","access","actions","affordably","among","anyway","automation","awesome","backs","brought","build","camera","capabilities","check","cloud","computer","concise","connect","depth","details","dreamer","enables","entire","everything","excursions","export","fascinating","features","figured","functions","going","great","guide","happier","haven","light","links","makers","manager","mastery","minute","minutes","notes","partnership","plugin","plugins","pointed","potential","projector","ready","recipes","reliably","resource","respective","rsquo","scripts","search","securely","simple","socket","specific","super","thanks","theater","today","tricks","tutorial","variety","versions","video"]
	},{
		"title": "Seems like it might be time for a pledge drive...",
		"url": "/2015/02/20/seems-like-it-might-be-time-for-a-pledge-drive/",
		"tags": ["personal","support"],
		"date": "Feb 20<span>th</span>, 2015",
		"ts": "1424466000",
		"summary": "I know I&rsquo;ve been a bit slower on posting the madness from the lab lately. I&rsquo;ve been working on more and more larger projects that have two results on my blogging: I don&rsquo;t have as much time to document smaller tricks and tips to an extent where I&rsquo;m comfortable posting, and I&rsquo;m not finishing as many shorter-term projects to woo you with. I think the end results of the things I&rsquo;m working on will be of interest to many of you, but they&rsquo;re taking some time1. It&rsquo;s been a while since I mentioned ways you can support the blog and the effort that I put into the many projects that I give away for free, mostly because I feel guilty asking for such support when I&rsquo;m offering less content in the short term. However, a recent surgery and some hefty auto repair bills2 have strained my wallet, and combined with the fact that the projects I&rsquo;m working on won&rsquo;t pay off until they&rsquo;re finished, I think it&rsquo;s worth a shot. I&rsquo;m not appealing to your sympathy, though. I&rsquo;d prefer to be supported out of appreciation for what I share, not any kind of guilt. If you do appreciate the tools and tips I share here, there are a few things you can do to help. You can pledge a small monthly donation through Memberful (or PayPal if you prefer) You can make a one-time donation of any amount you choose If you&rsquo;re a Markdown user, purchasing a copy of Marked 2 would certainly be mutually beneficial My current \"indie\" life is split between commercial projects and continuing to build tools and workflows to share publicly. Your support makes the latter possible (and your love of Markdown makes the former feasible). Thanks to everyone who&rsquo;s currently subscribed or who have donated, you have no idea how much I appreciate it. I used to complain if I had to work more than 8 or 9 hours in a day at corporate jobs, or was ever asked to work a weekend. My current boss (this prick) has me working up to 18 hours a day and somehow I&rsquo;m putting up with it.&nbsp;↩ I like Nissans, but that Murano is slowly killing us. No, not slowly. Quickly. My Audi repair costs pale in comparison.&nbsp;↩",
		"keywords": ["donation","drive","paypal","pledge","however","markdown","marked","memberful","murano","nissans","paypal","quickly","thanks","amount","appealing","appreciate","appreciation","asked","asking","backlink","because","between","bills","blogging","brettterpstra","build","certainly","choose","class","comfortable","commercial","comparison","complain","content","continuing","corporate","document","donate","donated","donation","downloads","effort","endnotes","everyone","feasible","finished","finishing","fnref","footnote","footnotes","former","guilt","guilty","hefty","height","hours","https","image","indie","interest","killing","labtotebag","larger","latter","ldquo","loading","madness","makes","marked","media","mentioned","monthly","mostly","mutually","noscript","noteref","offering","original","otherstuff","picture","pledge","possible","posting","prefer","prick","projects","publicly","purchasing","putting","rdquo","recent","repair","results","reversefootnote","rsquo","share","short","shorter","since","slower","slowly","small","smaller","somehow","source","spiffy","split","srcset","strained","subscribed","support","supported","surgery","sympathy","taking","think","through","title","tools","tricks","uploads","wallet","weekend","where","while","width","workflows","working","worth"]
	},{
		"title": "Shell trick: printf rules",
		"url": "/2015/02/20/shell-trick-printf-rules/",
		"tags": ["scripting","shell","terminal"],
		"date": "Feb 20<span>th</span>, 2015",
		"ts": "1424447940",
		"summary": "This post is about a simple trick for printing a horizontal rule in the Terminal, but I would like to start by saying that the headline is not entirely an attempt at humor. I spent a long time working with the limitations of , with its annoyances and inconsistencies between shells. Then I started using more, and it&rsquo;s made string formatting and terminal output so much simpler. Check out the man page (and some more info on format strings)if you&rsquo;re not already familiar with it. As a quick example, my most frequent use of is outputting shell arrays. What would normally require a loop with is a single line with : One feature I just recently learned about is variable substitution in format strings. A token in the format string can use an asterisk (*) to accept a variable from the input as a number for the width. This is what the rule function uses: It&rsquo;s a handy snippet for using inside of other functions and scripts to separate output or call attention to an output section. assigns the result of the string interpolation to the variable \"hr\" waits for numeric input to define the width of the string, which in this case will be output as that number of spaces is replaced with the number of columns in the current terminal as reported by (passed to the ) If the command is successful (), the variable is output with Bash substitution () to replace the spaces with a The character used for the horizontal rule is pulled from the first argument (), and defaults to \"-\" if the argument is null (). It only accepts a single character if you want a single line. If you want a double line, use two characters (==), and so on. You can use any character you want, including extended ascii or unicode with some work: The message is the first argument, the optional second argument is the character to use for the rule. Lastly, here&rsquo;s a quick alias to output right-aligned text using the same trick as ",
		"keywords": ["format","function","printf","script","shell","string","berringer","bonus","check","explanation","lastly","terminal","accept","accepts","alias","allows","annoyances","another","argument","arrays","ascii","assigns","asterisk","between","breakdown","character","characters","columns","command","converted","defaults","define","double","entirely","example","extended","familiar","feature","first","format","formatting","forth","frequent","function","functions","handy","headline","horizontal","humor","hyphens","including","inconsistencies","input","inside","interpolation","learned","limitations","loaded","message","multiple","normally","numeric","optional","output","outputting","padding","passed","prefixed","printing","pulled","quick","recently","replace","replaced","reported","right","rsquo","ruler","saying","script","scripts","second","section","sections","separate","shell","shells","simple","simpler","single","snippet","spaces","spent","started","string","strings","substitution","successful","terminal","token","trick","unicode","using","variable","version","versions","waits","whipped","whitespace","width","working"]
	},{
		"title": "Codeship: powerful continuous integration and delivery [sponsor]",
		"url": "/2015/02/19/codeship-powerful-continuous-integration-and-delivery/",
		"tags": ["sponsor"],
		"date": "Feb 19<span>th</span>, 2015",
		"ts": "1424347200",
		"summary": "Thanks to Codeship for sponsoring BrettTerpstra.com this week! Codeship is a hosted service that makes it simple to set up your projects for continuous integration and delivery. It has the flexibility and reliability you need to develop and deploy your projects quickly and easily. Its simplicity will improve your productivity instantly with fully automated tests and builds with flexible notifications. A new feature, Parallel Test Pipelines, provides multiple parallel pipelines to streamline your testing process. You can have up to 10 simultaneous pipelines running, and Codeship tells me that some Parallel Test Pipelines users experienced an improvement in their test suite speed up to a full 10x. Learn more in their Parallel Test Pipelines introduction video! I got early access to Codeship with Parallel Test Pipelines to try it out. It was amazingly easy to connect a project from my GitHub account, copy in my test and build commands, and see everything run automatically immediately after a push to the repo. I&rsquo;m not working on anything so huge that I need all 10 parallel pipelines, but I tried some longer builds from other GitHub projects and was very impressed with the results. I wouldn&rsquo;t have thought I needed hosted test suites, but the integration with a development workflow is frictionless and sure to increase productivity. Update: Parallel Test Pipelines is now free for everyone to try. Anyone can work with up to 20 parallel test pipelines for 14 days to see if it improves their test suite speed. Codeship works with the most relevant languages for web development, including Ruby, Node.js, Python, and PHP. Using it is easy: just add your project and define commands for testing and deployment. When you push to your repository, Codeship will run the test and build suites and notify you with the results. Codeship can deploy directly to Heroku, making it great for Ruby on Rails projects. It also supports AWS, Modulus, and more. It integrates directly with GitHub and Bitbucket, making it a cinch to add to your workflow. You can also hook it up to notifications in tools like Slack and Hipchat. You can try it out for free right now, with 100 builds per month and up to 5 private projects. Codeship is completely free for open source projects. Also, check out the blog for ideas and best practices for your software development and testing",
		"keywords": ["github","javascript","rails","anyone","bitbucket","brettterpstra","codeship","github","heroku","hipchat","learn","modulus","parallel","pipelines","python","rails","slack","sponsorship","syndicate","thanks","using","access","account","amazingly","automated","automatically","build","builds","check","cinch","commands","completely","connect","continuous","define","delivery","deploy","deployment","develop","development","directly","easily","everyone","everything","experienced","feature","flexibility","flexible","frictionless","fully","great","hosted","ideas","impressed","improve","improvement","improves","including","increase","instantly","integrates","integration","introduction","languages","longer","makes","making","multiple","needed","notifications","parallel","pipelines","practices","private","process","productivity","project","projects","provides","quickly","relevant","reliability","repository","results","right","rsquo","running","service","simple","simplicity","simultaneous","software","source","speed","sponsoring","streamline","suite","suites","supports","tells","testing","tests","thought","tools","tried","users","video","workflow","working","works","wouldn"]
	},{
		"title": "Titler: instantly add page titles to URLS in your text",
		"url": "/2015/02/18/titler-system-service/",
		"tags": ["macos","markdown","markdownservices","service","titler"],
		"date": "Feb 18<span>th</span>, 2015",
		"ts": "1424301840",
		"summary": "Guess what? This is the 100th project (see?) I&rsquo;ve made available for download on this blog. I don&rsquo;t know what that means in the grand scheme of things, but I feel like I should celebrate. I&rsquo;ve been making a lot of new tools lately, but I&rsquo;ve been short on free time to polish and document them for sharing. I have a growing list of tools and projects that I&rsquo;m hoping to get around to posting soon. Oh look, here&rsquo;s one now. This is a System Service called Titler. It does what it says on the label: finds URLs in selected text and adds titles to them based on the page title. I specifically needed this for podcast show notes as I often just paste a url into my notes when I don&rsquo;t have time to do much else. This Service lets me take a pile of such links and turn them into Markdown links with their page title as the text. It also adds Amazon and iTunes affiliate tokens, cleans out referrer junk, and has the ability to neatly truncate titles at word breaks based on a maximum length setting. Download below, unzip, and double click the included Services ( extension) to install. Titler does require a tiny bit of setup1. You need to have the nokogiri gem in your system Ruby install. That&rsquo;s just a matter of running in Terminal. If you use a Ruby version manager, make sure you switch to the system Ruby before installing the gem. The first time it runs, it will create a file in your home directory. Edit this file to change the default behavior. Its format is identical to SearchLink, so if you use SearchLink, you can just copy the iTunes and Amazon settings over. If you don&rsquo;t want affiliate links, just delete the contents of the keys for them. The settings are all documented in the config file. Once you have those two steps done, you should be able to just select text and right click, choose a Titler service from the menu, and get your titles inserted in place. There are 3 flavors. First, the regular Titler service. It finds all urls in the text. If they&rsquo;re already inline Markdown links, it will replace the text in square brackets with the title, and the url in parenthesis with the cleaned up, affiliated url. If the link is part of a reference link, it leaves the id in square brackets alone, updates the URL, and appends the title to the end in quotes. The second one, Extract Links, will gather all the URLS in your selection and output them as a bulleted list with titles in inline Markdown format&hellip;",
		"keywords": ["adsense","locator","resource","affiliatize","amazon","changelog","donate","download","extract","first","google","guess","installing","links","markdown","published","searchlink","service","services","system","tuvbv&#39;","terminal","titler","titlerservice","updated","welcome","yosemite","ability","affiliate","affiliated","affiliatization","alone","appends","available","background","backlink","based","before","behavior","below","brackets","breaks","brettterpstra","bulleted","called","celebrate","change","changelog","choose","class","cleaned","cleans","click","clipboard","config","configured","containing","contents","couple","cover","create","default","description","directory","dlbox","document","documented","doing","donate","double","download","downloads","endnotes","entirely","extension","fathom","finding","finds","finished","first","flavor","flavors","fnref","footnote","footnotes","format","freaking","gather","gradient","grand","growing","height","hellip","highlighter","hoping","hours","https","itunes","identical","image","included","information","inline","inserted","install","installing","label","language","ldquo","leaves","length","linear","links","loading","making","manager","maximum","media","neatly","needed","nokogiri","noscript","noteref","notes","often","onclick","original","otherstuff","output","parenthesis","paste","picture","plaintext","podcast","polish","posting","process","project","projects","published","quotes","rabbit","rdquo","referrer","regular","removes","repeat","replace","results","reversefootnote","right","rouge","rsquo","running","scheme","searchlink","second","selected","selection","service","setting","settings","setup","sharing","short","source","specifically","square","srcset","steps","strong","style","switch","system","third","title","titler","titlerheader","titlericon","titles","tokens","tools","trackgoal","trouble","truncate","unzip","updated","updates","uploads","version","versions","width","workflow"]
	},{
		"title": "The details count with Tally 2",
		"url": "/2015/02/17/the-details-count-with-tally-2/",
		"tags": ["appreview","appstore","iphone"],
		"date": "Feb 17<span>th</span>, 2015",
		"ts": "1424199600",
		"summary": "I&rsquo;ve written about Tally from Agile Tortoise before, expressing my affection for its intuitive interface and utility. Tally 2 is out today, looking great and taking advantage of new iOS 8 features. Tally is simple, and infinitely useful if you &mdash; like me &mdash; have trouble remembering a number when there&rsquo;s any distractions around you. You just launch the app on your iPhone or iPad and start tapping to count anything you need to keep track of. The entire screen is the button, so you don&rsquo;t even need to be looking at your phone. You can swipe down to decrement the count. That&rsquo;s what it does. For such a simple app, though, there are some great features in the details. You can have as many \"tallies\" running as you need (an in-app purchase unlocks unlimited counters), and each tally has settings for the direction to count on tap (increment or decrement) and the number of units to count by. The totals are persistent, and you can switch between tallies as needed by swiping to the right. You can even count right in the list view. It also handles repeating tasks well with a quick reset to a defined starting value. You can turn on audio confirmation for an audible confirmation of a tap, which is nice if you&rsquo;re focusing on what you&rsquo;re counting and not on your phone. There&rsquo;s sharing support, and in-app purchases for a dark theme and the aforementioned unlimited tallies. The coolest part, though, is the integration with the Today view on iOS 8 for ubiquitous tracking of your tallies. Not having to switch to the app to add a count to something makes it frictionless. There are also a couple of new actions for the URL scheme available for integration with other tools. The handler is especially intriguing, although I haven&rsquo;t built it into anything&hellip; yet. Check out Tally 2 on the App Store. It&rsquo;s free to download, and $1.99 US will get you all the counting and totaling you could ever desire (plus the night mode)",
		"keywords": ["agile","store","tally","tortoise","agile","check","store","tally","today","tortoise","actions","advantage","affection","aforementioned","although","audible","audio","available","before","between","built","button","confirmation","coolest","count","counters","counting","couple","decrement","defined","details","direction","distractions","download","entire","especially","expressing","features","focusing","frictionless","great","handler","handles","haven","having","hellip","iphone","increment","infinitely","integration","interface","intriguing","intuitive","launch","looking","makes","mdash","needed","night","persistent","phone","purchases","quick","remembering","repeating","reset","right","rsquo","running","scheme","screen","settings","sharing","simple","starting","support","swipe","swiping","switch","taking","tallies","tally","tapping","tasks","theme","today","tools","totaling","totals","track","tracking","trouble","ubiquitous","units","unlimited","unlocks","useful","utility","value","written"]
	},{
		"title": "Records: a flexible database for Mac",
		"url": "/2015/02/17/records-a-flexible-database-for-mac/",
		"tags": ["appreview","macos"],
		"date": "Feb 17<span>th</span>, 2015",
		"ts": "1424185200",
		"summary": "Once upon a time, there was a fun personal database app for Mac called Bento (from FileMaker). It&rsquo;s been a long time since Bento was discontinued and there&rsquo;s been a several-year gap since we&rsquo;ve seen a good replacement. Push Popcorn&rsquo;s Records was released today, and it looks like a strong contender for that title. Records has a drag-and-drop editor that takes absolutely zero knowledge or prior experience to use. You can build a database form and start cataloging your information in a few minutes. You can also share templates with your workgroup and other collaborators. Records provides draggable elements for text, menus, etc., and has ready-to-use fields for images, contacts and URLs. It even has pre-filled lists for tedious items such as countries, currencies, etc.. Records doesn&rsquo;t have many export options at present, and I hope to see some interchangeable formats soon. Right now it can only export a Records-format file for sharing and backup. Records is for sale on the Mac App Store now for $49.99 US and requires OS X 10.10 or later",
		"keywords": ["database","personal","popcorn","store","bento","filemaker","popcorn","right","store","backup","build","called","cataloging","collaborators","contacts","contender","countries","currencies","database","discontinued","doesn","draggable","editor","elements","experience","export","fields","filled","format","formats","images","information","interchangeable","items","knowledge","later","lists","looks","menus","minutes","options","personal","provides","ready","released","replacement","requires","rsquo","several","share","sharing","since","strong","takes","tedious","templates","title","today","workgroup"]
	},{
		"title": "Web Excursions for February 16, 2015",
		"url": "/2015/02/16/web-excursions-for-february-16-2015/",
		"tags": ["automator","bookmarks","programming","scripting"],
		"date": "Feb 16<span>th</span>, 2015",
		"ts": "1424107920",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Hammerspoon A successor to Mjolnir, Hammerspoon is powerful, Lua-based automation for your OS X. Risky Business &ndash; MacSparky David Sparks is the only lawyer I&rsquo;ve ever enjoyed working with, and I&rsquo;ve really enjoyed it. He&rsquo;s taken the plunge and gone indie, with his MacSparky projects, the Field Guides series (including the 60 Mac Tips multimedia book we published together), and an independent law practice. Join me in wishing him the best of luck in the venture! GitHut - Programming Languages and GitHub An interesting visualization of programming languages and their respective activity on GitHub. Built using GitHub Archive (check out the links at the bottom of that page for more interesting data usages). Workflow 1.1: Deeper iOS Automation The usual in-depth and highly informative review from Federico Viticci over at MacStories. Workflow 1.1 adds a lot more to the iOS automation app than I would have expected for an incremental update. imagejs A tool for embedding JavaScript in images. While the XSS attack possibilities might be a little scary, the fact that you can usually load an image using XMLHttpRequest where security settings prevent you from loading a script opens up a lot of cool scripting/bookmarklet options. Available through Homebrew",
		"keywords": ["david","federico","javascript","macstories","sparks","viticci","archive","automation","available","built","business","cleanmymac","david","deeper","federico","field","github","githut","guides","hammerspoon","homebrew","javascript","languages","macsparky","macstories","mjolnir","programming","risky","sparks","viticci","while","workflow","xmlhttprequest","activity","attack","automation","based","bookmarklet","bottom","brought","check","depth","embedding","enjoyed","excursions","expected","highly","image","imagejs","images","including","incremental","independent","indie","informative","interesting","languages","lawyer","links","little","loading","multimedia","ndash","opens","options","partnership","plunge","possibilities","powerful","practice","prevent","programming","projects","published","respective","rsquo","scary","script","scripting","security","series","settings","speed","successor","taken","through","together","tools","usages","using","usually","venture","visualization","where","wishing","working"]
	},{
		"title": "Marked 2.4.10",
		"url": "/2015/02/14/marked-2-dot-4-10/",
		"tags": ["markdown","marked"],
		"date": "Feb 14<span>th</span>, 2015",
		"ts": "1423946520",
		"summary": "Marked 2.4.10 is out for direct customers and has been submitted to the Mac App Store for review. It fixes some bugs that were introduced when I started working on optimizing rendering speed, improves on existing features, and adds a few new ones. (If you grabbed the build 881 update yesterday, check again today for 882, which fixes one glaring bug in the initial 2.4.10 release.) The biggest change in this release is the removal of sandboxing from the direct-sale version. The Mac App Store version will continue as it has, but the direct version will no longer need to ask your permission to load files or run scripts that you haven&rsquo;t previously opened. It will make life (and customer support) easier all around. If you&rsquo;re a current Marked 2 user, running this latest version will import your current preferences from the sandbox into the standard preferences system when it&rsquo;s first run. Marked 2.4.10 adds new features such as: Support for MultiMarkdown&rsquo;s \"transclude\" syntax In addition to Marked&rsquo;s special file include syntax, you can use to include external files in your document Use in metadata at the top of the file to set a custom base directory for file paths Transclude Base ( is also recognized) affects any files included using Marked&rsquo;s native syntaxes as well Marked now offers additional contextual menu actions based on the type of element right-clicked in the document You can embed local images as data urls when copying HTML source to the clipboard You can define in preferences how you want Marked to behave when links to text files are clicked Open the file as Markdown in the current window Open the file in a new Marked window Open the file in the default editor for that type I&rsquo;ve also added an opt-in usage tracking system. When you first open the new version, it will ask if you want to send anonymous usage statistics. Agreeing to this simply sends information to the server about what versions customers are using, how many times they launch, what OS version, etc.. It submits absolutely no identifying information about you, your computer, or the files you&rsquo;re opening. I plan to expand this in the future to allow me to collect statistics on what processors are most used and other data that will help me develop a better product. Also, internal crash reporting is coming&hellip; If you haven&rsquo;t tried Marked 2 out, there&rsquo;s a free trial available. Grab it and&hellip;",
		"keywords": ["marked","multimarkdown","store","agreeing","markdown","marked","multimarkdown","store","support","transclude","actions","added","affects","again","allow","anonymous","available","based","behave","biggest","build","change","check","clicked","clipboard","collect","coming","computer","contextual","continue","copying","crash","custom","customer","customers","default","define","develop","direct","directory","document","easier","editor","element","embed","expand","external","features","files","first","fixes","glaring","grabbed","haven","hellip","identifying","images","import","improves","included","information","initial","internal","introduced","latest","launch","links","local","longer","metadata","native","offers","opened","opening","optimizing","paths","permission","preferences","previously","processors","product","recognized","release","removal","rendering","reporting","right","rsquo","running","sandbox","sandboxing","scripts","sends","server","simply","source","special","speed","standard","started","statistics","submits","submitted","support","syntax","syntaxes","system","times","today","tracking","transclude","trial","tried","usage","using","version","versions","window","working","yesterday"]
	},{
		"title": "Versatile, professional PDF editing with PDFpenPro 7 [sponsor]",
		"url": "/2015/02/12/versatile-professional-pdf-editing-with-pdfpenpro-7-sponsor/",
		"tags": ["sponsor"],
		"date": "Feb 12<span>th</span>, 2015",
		"ts": "1423742400",
		"summary": "Thanks as always to Smile for their continued support. PDFpenPro 7 is yet another leap forward for the best PDF handling software out there. PDFpenPro 7 brings new professional features to Smile&rsquo;s versatile PDF editor for OS X, including: Edit OCR text from scanned pages Export to Excel, PowerPoint, and PDF Archive (PDF/A) formats Create PDF forms with interactive signature fields Updated, modern Yosemite user interface Proof OCR text from scanned pages Context-sensitive popup-menus, which enable quick edits Load and save performance improvements Compatibility with iCloud Drive Freeform highlighting to call out drawings and diagrams And much more. Learn all about PDFpenPro and PDFpen from Smile at: http://smilesoftware.com/brett",
		"keywords": ["apple","character","document","format","icloud","optical","pdfpen","portable","recognition","store","archive","compatibility","context","create","drive","excel","export","freeform","learn","pdfpen","pdfpenpro","powerpoint","proof","smile","thanks","updated","yosemite","another","brett","brings","continued","diagrams","drawings","editor","edits","features","fields","formats","forms","found","handling","highlighting","icloud","improvements","includes","including","interactive","interface","menus","modern","pages","performance","popup","professional","quick","rsquo","scanned","sensitive","signature","smilesoftware","software","support","updates","versatile"]
	},{
		"title": "Doing Spotlight right with HoudahSpot 4.0",
		"url": "/2015/02/10/doing-spotlight-right-with-houdahspot-4-dot-0/",
		"tags": ["appreview","macos","search","spotlight"],
		"date": "Feb 10<span>th</span>, 2015",
		"ts": "1423601040",
		"summary": "Spotlight is great for finding files without digging through folders. It&rsquo;s great with tagging. It&rsquo;s even great for finding photos and emails faster than iPhoto or Mail.app can. It has its shortcomings, though. HoudahSpot has long been my tool of choice for filling the holes in Spotlight. It adds essential features such as being able to search multiple locations simultaneously, the ability to files \"similar\" to an example with adjustable criteria, and easy building and saving of advanced searches. If you&rsquo;ve ever tried to build a truly great Smart Folder in Finder, you know that the interface needed some help. HoudahSpot 4.0 came out today, and it&rsquo;s awesome. A new \"Quick Search\" allows advanced searches to be started immediately. The criteria editor is even slicker. And one of my favorite new features is \"Snippets.\" You can save a criteria or any collection of criteria with a title, and then drag them into other searches as you build them. The new Info and Details panes are easy ways to view file info, of course, but you can also click attributes in them to add them immediately to the search as \"Filters.\" One other major feature to note: Tabs. You can have multiple searches running (live) in one window. Nice. Check out HoudahSpot 4. There&rsquo;s a free trial, and it&rsquo;s $29 US if you want to keep using it. If you like being able to find your files efficiently and accurately, it&rsquo;s worth it",
		"keywords": ["finder","iphoto","check","details","filters","finder","folder","houdahspot","quick","search","smart","snippets","spotlight","ability","accurately","adjustable","advanced","allows","attributes","awesome","build","building","choice","click","collection","criteria","digging","editor","efficiently","emails","essential","example","faster","favorite","feature","features","files","filling","finding","folders","great","holes","iphoto","interface","locations","major","multiple","needed","panes","photos","rsquo","running","saving","search","searches","shortcomings","similar","simultaneously","slicker","started","tagging","through","title","today","trial","tried","truly","using","window","worth"]
	},{
		"title": "Even better MindMeister collaboration",
		"url": "/2015/02/06/even-better-mindmeister-collaboration/",
		"tags": ["brainstorming","collaboration","mindmapping","mindmeister"],
		"date": "Feb 6<span>th</span>, 2015",
		"ts": "1423259820",
		"summary": "I&rsquo;ve always recommended using MindMeister as a collaborative mind mapping/brainstorming platform. It&rsquo;s great for group brainstorming or for sharing ideas in easy-to-parse formats. It recently got even better, though. There&rsquo;s a new feature called \"Opinions\" (announcement post) available in every mind map. You can click a node and vote yay or nay on it, add comments in conversation form, and even automatically increase the weight of nodes in the map as they gain votes. This means that in addition to live brainstorming, you can present a map to a group and let them make suggestions, answer polls, and build ideas without editing the existing map. It offers an efficient way to collaborate in a mind map after the brainstorming is done. This is, for me, a huge step. I&rsquo;d never realized how much I needed this when sharing maps until I tried it. If you&rsquo;re a MindMeister user, you&rsquo;ll see the \"talk bubble\" icon in the sidebar for each node. Once a node has been voted on, you can also click the small icon that appears in the node to open a new sidebar with activity, comments, and voting information. If you haven&rsquo;t tried MindMeister yet, here&rsquo;s my affiliate link. Go check it out",
		"keywords": ["business","mindmeister","opinions","activity","affiliate","announcement","answer","appears","automatically","available","brainstorming","bubble","build","called","check","click","collaborate","collaborative","comments","conversation","editing","efficient","feature","formats","great","group","haven","ideas","increase","information","mapping","needed","nodes","offers","parse","platform","polls","realized","recently","recommended","rsquo","sharing","sidebar","small","suggestions","tried","using","voted","votes","voting","weight"]
	},{
		"title": "Web Excursions for February 06, 2015",
		"url": "/2015/02/06/web-excursions-for-february-06-2015/",
		"tags": ["bookmarks","google","learning","notes","twitter"],
		"date": "Feb 6<span>th</span>, 2015",
		"ts": "1423239420",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Why Learning to Code is So Damn Hard I started my code journey very young and this arc was spread over 30 years for me, but it&rsquo;s an accurate description of the learning curve when getting into software development. Appendix: Google&rsquo;s website crawlers Did you know you can specifically address Google crawlers with meta tags and element classes? I didn&rsquo;t. .bashrc generator Via OneThingWell, a drag and drop tool to generate your custom Bash prompt. Stupid Tricks with Promoted Tweets I love Andy Baio&rsquo;s mind sometimes. Some creative uses for a Twitter feature you&rsquo;d probably rather didn&rsquo;t exist. Edit Droplr Notes Online This is great. Too often I&rsquo;ve had to let a mistake slide in a note I pushed to Twitter, or had to create multiple notes because I didn&rsquo;t catch an error before sending. Droplr continues to be my file/link/note sharing service of choice. And in case you didn&rsquo;t know, creating a Droplr note lets you choose a type: \"Code\" gets highlighted, \"Markdown\" gets rendered, and \"Plain text\" gets left alone",
		"keywords": ["google","media","promoted","social","tweets","twitter","appendix","check","droplr","google","learning","markdown","notes","onethingwell","online","promoted","setapp","stupid","tricks","tweets","twitter","access","accurate","address","alone","bashrc","because","before","brought","catch","choice","choose","classes","continues","crawlers","create","creating","creative","curve","custom","description","development","element","error","excursions","exist","feature","generator","getting","great","highlighted","hundreds","journey","learning","mistake","monthly","multiple","notes","often","partnership","prompt","pushed","rather","rendered","rsquo","sending","service","sharing","slide","software","sometimes","specifically","spread","started","subscription","today","website","years","young"]
	},{
		"title": "Keybindings for multiple clipboards",
		"url": "/2015/02/05/keybindings-for-multiple-clipboards/",
		"tags": ["cocoa","keybindings","terminal"],
		"date": "Feb 5<span>th</span>, 2015",
		"ts": "1423168500",
		"summary": "It&rsquo;s been a while since I brought up keybindings. If you haven&rsquo;t followed my obsession with them in the past, you can catch up on all the fun in older posts and by browsing through the massive KeyBindings project I&rsquo;ve assembled. To summarize, KeyBindings on OS X can provide all kinds of text editing assistance that&rsquo;s available and consistent across every app you use. One thing I&rsquo;ve been playing with more lately is having multiple clipboards in each app. This trick uses the \"kill buffer,\" which is completely separate from the system clipboard (⌘C). It&rsquo;s what&rsquo;s used when you use &#2C6;k to delete text. It&rsquo;s more expansive in the shell or in Emacs, but it&rsquo;s still handy in any Cocoa text field. Using the default Emacs shortcuts that are available already, you can move the cursor to the beginning of a line with (Control-a), and the end of the line with . You can use to delete (or \"kill\") the text from the cursor to the end of the line. Deleting an entire line or field is as simple as . This has the same effect has typing \"End, Command-Delete\" but instead of just removing the text it places it into the kill buffer. You can then paste it with (\"yank\" from the buffer). Keep in mind that the kill buffer exists on a per-app basis, so text you kill in one app won&rsquo;t yank in another app. That being said, here&rsquo;s a handy trick that makes using it worthwhile: multiple clipboards using the \"kill ring.\" Note: Most instructions you&rsquo;ll find for this use instead of , but I never got it to work in text fields outside of the shell until I changed it to . This will set the kill ring to hold 3 items. You can change the number as needed. Next you override the default keybinding. Create (or open if you&rsquo;ve done this before) a text file at . If you&rsquo;re working with a new file, paste the entire contents below. If you have existing keybindings, just add the to the plist. Open TextEdit (restart it if it was already open) Type a line of text, then hit Write another line with different text, and repeat step 2 Do it one more time for a total of three \"kills\" On a blank line, type . This should paste the last line you killed Type again, and the pasted text should be replaced by the second line you killed One more time, and you should see the first line. Subsequent repetitions will cycle through the buffer If you&rsquo;re a Bash user, you can use a wider variety of Emacs shortcuts to&hellip;",
		"keywords": ["editor","emacs","linux","bonus","cocoa","command","control","create","defaultkeybinding","deleting","emacs","keybindings","library","nstextkillringsize","readline","terminal","textedit","using","write","across","again","allows","alphanumeric","another","arguments","assembled","available","backwards","basis","before","beginning","below","blank","bonus","brettterpstra","brought","browsing","buffer","catch","change","changed","character","class","clipboard","clipboards","command","completely","consistent","contents","cursor","cycle","default","defaults","deleted","different","editing","enabled","entire","escape","exists","expansive","field","fields","first","followed","handy","haven","having","height","hellip","highlight","highlighter","hitting","https","image","importantly","instructions","items","keybinding","keybindings","keyboard","killed","kills","kinds","language","latter","ldquo","learned","level","loading","longshadow","makes","massive","media","minus","multiple","needed","noscript","obsession","older","original","outside","override","paste","pasted","picture","places","plaintext","playing","plist","posts","prepended","previously","project","projects","rdquo","readline","removal","removing","repeat","repetitions","replaced","restart","restore","rouge","rsquo","second","separate","sequence","shell","shortcuts","simple","since","single","source","srcset","stopping","string","strong","stuff","summarize","system","terminal","thought","through","times","tiswww","title","topic","trick","typing","uploads","using","variety","where","while","whitespace","wider","width","words","working","worthwhile","write","yankandselect"]
	},{
		"title": "Letterspace - Swipe. Edit. Note. [sponsor]",
		"url": "/2015/02/05/letterspace-swipe-edit-note-sponsor/",
		"tags": ["sponsor"],
		"date": "Feb 5<span>th</span>, 2015",
		"ts": "1423137600",
		"summary": "Thanks to Letterspace, a new note-taking app for iOS and Mac, for sponsoring BrettTerpstra.com this week. I had actually recently discovered Letterspace and was quite impressed before they even signed up to sponsor the blog. I recommend taking a look! \"I finally found myself able to actually touch type on my iPhone last month. It&rsquo;s become so much easier since iPhone&rsquo;s auto-correct feature improved. Most of the time, it does the right thing even when I tap on a completely wrong button for every character in a word.\" \"But there are also times that I have to fix it myself, and the current method isn&rsquo;t great. Editing requires you to touch on the precise spot after the characters you want to edit, which takes too much fiddling. Editing text on your iPhone should be easy. This is the problem that Letterspace solves.\" Letterspace is a note-taking app with a bar above the keyboard. When you run your finger over this bar, the cursor moves. It&rsquo;s the key feature, but there&rsquo;s more! It also makes writing in Markdown exceptionally easy. When you start a new line, Letterspace suggests Markdown symbols in place of the QuickType bar. It continues lists, and offers inline highlighting of Markdown syntax. Letterspace doesn&rsquo;t use folders to organize your notes. Instead, it uses a more powerful system incorporating #hashtags and @mentions, and they&rsquo;ll sync across all of your devices with iCloud. Letterspace was just released last week. It&rsquo;s now available on your iPhone, your iPad and your Mac, all for free! (You can use in-app purchases to add color themes.)",
		"keywords": ["apple","iphone","letterspace","taking","brettterpstra","editing","letterspace","markdown","quicktype","simasanti","sittipon","sponsored","syndicate","thanks","above","across","available","before","button","character","characters","color","completely","continues","cursor","developer","devices","discovered","doesn","easier","feature","fiddling","finally","finger","folders","found","great","hashtags","highlighting","icloud","iphone","impressed","improved","inline","keyboard","lists","makes","mentions","method","moves","myself","notes","offers","organize","powerful","precise","problem","purchases","recently","recommend","released","requires","right","rsquo","signed","since","solves","sponsor","sponsoring","suggests","symbols","syntax","system","takes","taking","themes","times","touch","writes","writing","wrong"]
	},{
		"title": "Brought to you by TUAW",
		"url": "/2015/02/02/brought-to-you-by-tuaw/",
		"tags": ["personal"],
		"date": "Feb 2<span>nd</span>, 2015",
		"ts": "1422909840",
		"summary": "It seems like everyone has written a retrospective in light of AOL shuttering The Unofficial Apple Weblog except for me. Odd, considering I owe just about everything I have now to TUAW. So here&rsquo;s mine. I was in the midst of crashing my own small ad firm when I started reading TUAW. I had been a lifelong PC/Linux fan and even a Mac-hater, but when I started my new business I purchased an almost entirely Mac-based setup. I&rsquo;d used Macs in art school, and the job I left before this venture had only had a Mac available. This was Tiger-era, and it was the first time I&rsquo;d seen OS X in action. Discovering the Darwin subsystem and almost instantly realizing the power of the platform, the conversion began. TUAW was the first site that was recommended to me as I began exploring this new-to-me platform. Apple wasn&rsquo;t huge at the time. Not the way it is now. It was still the domain of designers and creative professionals. A site like TUAW which catered to both newbies and tech-heads was a perfect blend. A site dedicated to Apple and Macs mattered more then because Apple mattered less to the general public and more to a niche audience. While reading TUAW one day, I found some comments in an article that expressed a desire to post to both Twitter and Facebook at the same time. This seemed like a chance to dig into Mac automation and scripting to see what I could learn. The result was MoodBlast, though initially it was just a combination of Applescript and shell commands in the form of a QuickSilver action called MoodSwing. Back then APIs were easier and oAuth wasn&rsquo;t an issue. David Chartier, at that time a TUAW writer, noticed this project and started blogging about it on TUAW. We started corresponding. He followed it all the way up until it became MoodBlast and could update Adium, Skype, Jaiku, Pownce, Twitter, iChat, Facebook and more. He watched my madness begin as I added command line syntax, current weather, current iTunes song, and an endless list of bloated features to the little app. One day he asked me if I&rsquo;d like to write for TUAW. He was on his way out, on to writing for Ars Technica, Macworld, and more, and he&rsquo;d been asked to provide some contacts for potential new writers. I was blown away, having never thought about writing on a platform that got more than 200 hits a day (which was about what our agency blog, The Circle Six blog, now defunct) was seeing. I accepted the challenge and met Victor Agreda Jr.&hellip;",
		"keywords": ["apple","engadget","joystiq","techcrunch","verge","weblogs","adium","agreda","apple","applescript","blogsmith","bundle","caolo","chartier","christina","circle","competition","darwin","david","discovering","engadget","erica","facebook","fletcher","however","jaiku","keynote","keynotes","linux","macworld","mcnulty","moodblast","moodswing","pownce","quicksilver","sadun","sande","scott","skype","steve","techcrunch","technica","thanks","tiger","twitter","unofficial","verge","victor","voices","warren","weblog","while","wordpress","accepted","action","added","agency","albeit","allowed","almost","among","announcements","annoying","anymore","article","asked","asshole","attended","attribution","audience","automation","available","based","became","because","before","began","begin","behind","believe","beneath","blend","bloated","bloggers","blogging","blown","broadcast","bubble","budget","build","building","business","byline","called","catered","caught","certain","challenge","chance","charge","closest","coaster","collection","combination","command","commands","commenters","comments","community","connected","considering","contacts","content","continue","continued","contract","conversion","corresponding","couple","courage","crashing","creative","credibility","dearly","decade","decent","decision","dedicate","dedicated","defunct","designers","developed","developer","devices","division","domain","domination","drove","easier","editors","effort","endeavors","endless","engineers","entirely","events","eventually","everyone","everything","except","expand","exploring","expressed","factors","family","favorite","features","first","fluctuated","focus","followed","found","friends","frustrating","fueled","funneled","general","going","goldmine","great","guides","hacking","happened","hater","having","heads","heavy","helped","heroic","hours","housed","ichat","itunes","important","including","income","independent","individual","industry","instantly","investments","invites","learn","learned","learning","leaving","lifelong","light","likely","limitations","little","liveblog","liveblogged","losing","loved","madness"]
	},{
		"title": "PDFpen for iOS, version 2 [Sponsor]",
		"url": "/2015/01/29/pdfpen-for-ios-version-2-sponsor/",
		"tags": ["sponsor"],
		"date": "Jan 29<span>th</span>, 2015",
		"ts": "1422532800",
		"summary": "A big thanks &mdash; as always &mdash; to Smile for their support of BrettTerpstra.com. It&rsquo;s an honor to have the makers of some of the most useful software on all of my computers and iOS devices sponsoring my work! PDFpen for iPad & iPhone, version 2 brings new, professional-level features to Smile&rsquo;s powerful mobile PDF editing app. Don&rsquo;t worry, all of the things users have come to depend on are still there: Add text, images, and signatures to PDFs Correct text in original PDFs via editable text blocks Fill PDF forms, now including specialized signature fields I had to look that up. -bt&nbsp;↩",
		"keywords": ["character","document","format","icloud","iphone","optical","pdfpen","portable","recognition","smile","store","airdrop","bates","brettterpstra","drive","increase","pdfpen","protect","share","smile","access","annotation","automatically","backlink","bates","blocks","brett","brettterpstra","brings","class","computers","crcampaign","crcat","crsource","depend","devices","documents","editable","editing","encryption","endnotes","features","fields","fnref","footnote","footnotes","forms","height","highlighting","highlights","honor","https","icloud","iphone","image","images","including","level","loading","makers","mdash","media","mobile","navigation","nofollow","noscript","noteref","numbering","original","pages","password","pdfpen","picture","powerful","privacy","productivity","professional","protection","provides","reversefootnote","rsquo","sidebar","signature","signatures","smilesoftware","smoothly","software","source","specialized","sponsoring","srcset","store","support","thanks","title","tools","uploads","useful","users","using","version","width","wikipedia","worry","wrist","writing"]
	},{
		"title": "My pick for best iOS nvALT companion",
		"url": "/2015/01/28/my-pick-for-best-ios-nvalt-companion/",
		"tags": ["itexteditors","markdown","texteditor"],
		"date": "Jan 28<span>th</span>, 2015",
		"ts": "1422463620",
		"summary": "I&rsquo;ve been running iTextEditors (a grid comparison of available iOS text editors) for quite a while now, and am constantly asked what my favorite is in various categories. As far as long-form writing goes, I&rsquo;m still not ready to make a public declaration (and there are new ones on the horizon that look very promising). As far as picking a personal winner in the note-taking category, though, I&rsquo;m ready to declare my affections for a single editor that works perfectly in tandem with my nvALT notes collection. Its search capabilities are the best I&rsquo;ve seen. It handles title and full text matching, with a good degree of \"fuzzy\" search forgiveness. The editor has Markdown syntax highlighting and preview, an extra keyboard row for Markdown syntax, and editing features such as smart list continuation. It can sync with any Dropbox folder, so importing a couple thousand notes from nvALT was seamless, and synced very quickly. Search is faster than any of the others, even with thousands of notes. There have been some close contenders, which is the reason I&rsquo;ve always hesitated to make a declaration like this. But 1Writer has developed into a truly great companion for nvALT. I&rsquo;ll update if others reach its level, but for right now, if you&rsquo;re an nvALT user or take a lot of notes in general, I highly recommend grabbing it ($2.99 US on iTunes)",
		"keywords": ["apple","dropbox","highlighting","iphone","itunes","store","syntax","dropbox","markdown","search","writer","affections","asked","available","capabilities","categories","category","close","collection","companion","comparison","constantly","contenders","continuation","couple","declaration","declare","degree","developed","editing","editor","editors","extra","faster","favorite","features","folder","forgiveness","fuzzy","general","grabbing","great","handles","hesitated","highlighting","highly","horizon","itexteditors","itunes","importing","keyboard","level","matching","notes","nvalt","others","perfectly","personal","picking","preview","promising","public","quickly","reach","ready","recommend","right","rsquo","running","seamless","search","single","smart","synced","syntax","taking","tandem","thousand","thousands","title","truly","various","while","winner","works","writing"]
	},{
		"title": "Reiki, a fix for my convoluted Rakefiles",
		"url": "/2015/01/24/reiki-a-fix-for-my-convoluted-rakefiles/",
		"tags": ["reiki","terminal"],
		"date": "Jan 24<span>th</span>, 2015",
		"ts": "1422133200",
		"summary": "I just published project called Reiki, a shell function that I&rsquo;ve been using to make it easier to run the various (and often overly complex) Rake tasks that I use in a lot of my projects. The headline should probably have been \"a stopgap for my convoluted Rakefiles.\" To summarize, it turns: Some of my tasks and their arguments get tedious to type with square brackets and quoting requirements, and aliasing tasks got out of hand with inconsistencies and bloated \"available tasks\" lists. I also suffer from inconsistency when naming tasks, usually with conjugation of their labels and order of arguments. A little fuzzy matching goes a long way. Even among Ruby/Rake users, this is probably a non-issue, and this project won&rsquo;t be overly helpful to most of you. If you abuse Rake the way I do, though, give it a try",
		"keywords": ["function","rakefile","shell","rakefiles","reiki","abuse","aliasing","among","arguments","available","bloated","brackets","called","complex","conjugation","convoluted","easier","function","fuzzy","headline","helpful","inconsistencies","inconsistency","labels","lists","little","matching","naming","often","overly","project","projects","published","quoting","rsquo","shell","square","stopgap","suffer","summarize","tasks","tedious","turns","users","using","usually","various"]
	},{
		"title": "Web Excursions for January 20, 2015",
		"url": "/2015/01/20/web-excursions-for-january-20-2015/",
		"tags": ["bookmarks"],
		"date": "Jan 20<span>th</span>, 2015",
		"ts": "1421784000",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Bevvy \"a living catalog of cocktails, spirits and beers made for people who drink by people who drink. Take a gander, and discover your next tipple.\" Wild Cherry \"A fairy-tale inspired theme for Zsh, iTerm, & Sublime.\" I could live without the excessive emoji, but it&rsquo;s a really slick theme and I thought of you when I saw it. I hope it brings you joy. 11 tips for prototyping with Sketch From the Invision blog, some excellent tips for working efficiently in Sketch 3. Writefully Another cool tool for creating a CMS from a GitHub repositories of Markdown files. Marked 2 even makes an appearance in the demo video! Bitbooks Bitbooks turns a repo of markdown files into a \"book\" and hosts it for you. RawGit Ever since GitHub changed the way they serve raw files, they&rsquo;ve been unusable in web applications when served directly from GitHub. Here&rsquo;s a fix that serves them with proper content-type headers! Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["github","markdown","another","bevvy","bitbooks","check","cherry","github","invision","markdown","marked","mindmeister","product","rawgit","sketch","sublime","writefully","appearance","applications","beers","boosting","brainstorming","brings","brought","catalog","changed","cocktails","collaborating","collaborative","content","creating","directly","discover","drink","efficiently","emoji","excellent","excursions","fairy","files","gander","headers","hellip","hosts","iterm","inspired","living","makes","mapping","markdown","partnership","people","productivity","proper","prototyping","repositories","rsquo","serve","served","serves","since","slick","software","spirits","theme","thought","tipple","turns","unusable","video","working"]
	},{
		"title": "Coming soon: never lose your Apple remote again",
		"url": "/2015/01/20/coming-soon-never-lose-your-apple-remote-again/",
		"tags": ["atvremote"],
		"date": "Jan 20<span>th</span>, 2015",
		"ts": "1421762400",
		"summary": "It&rsquo;s coming&hellip; If you own one of the silver Apple remotes (the kind that come with the Apple TV), you know that they were carefully designed for slipping between couch cushions, hiding under pieces of paper, or sliding under small crevices. I came up with a solution, and I&rsquo;m going to sell it to you. It won&rsquo;t be cheap, these are handmade, built to last, and gorgeous. Also guaranteed to work (I haven&rsquo;t lost my remote once since the first prototype last year). My father (a mechanical engineer who also happens to be a talented carpenter with amazing attention to detail), and I have gone through months of prototyping and even longer working out larger-scale production. It is now, in my opinion, perfect. More details and an unveiling coming soon",
		"keywords": ["apple","control","macbook","remote","apple","amazing","between","built","carefully","carpenter","cheap","coming","couch","crevices","cushions","designed","detail","details","engineer","father","first","going","gorgeous","guaranteed","handmade","happens","haven","hellip","hiding","larger","longer","mechanical","paper","pieces","production","prototype","prototyping","remote","remotes","rsquo","scale","silver","since","sliding","slipping","small","solution","talented","through","under","unveiling","working"]
	},{
		"title": "Systematic 125 with Merlin Mann",
		"url": "/2015/01/17/systematic-125-with-merlin-mann/",
		"tags": ["podcast","systematic"],
		"date": "Jan 17<span>th</span>, 2015",
		"ts": "1421511480",
		"summary": "In case you missed it, Systematic was host once again to Merlin Mann this week for episode 125. I always love talking to Merlin. I was a big fan of 43 Folders, Merlin&rsquo;s first really popular project, back in the day. Merlin had already reached \"nerd legend\" status when I first had contact with him. It was in the form of a message he sent me (on GitHub, if memory serves) regarding the Blogsmith Bundle. It said, simply, \"Jesus Christ.\" It was very flattering. Merlin and I continued to cross paths on the internet, and he started mentioning the crazy stuff I was working on in public forums. Then one year I was at Macworld with TUAW and Merlin was giving a talk for the Omni Group right across from our booth. At the time I didn&rsquo;t know what he looked like (turns out he&rsquo;s quite handsome), and it had to be pointed out to me by a friend. Doc Rock, I think. I waited until the presentation was done and snuck over before the Q&A session. He was shuffling some index cards. I tapped him on the shoulder and said \"I don&rsquo;t mean to be a dick, but I wanted to introduce myself. Brett Terpstra.\" He dropped his index cards and hugged me. Photo credit to Doc Rock. I think that&rsquo;s Marina Epelman in the background, too, whom I didn&rsquo;t know at the time but she&rsquo;s also become a friend in recent years. \"A dick? Are you kidding?\" He went on to introduce me as \"the smartest man on the internet\" to the crowd of nerds gathered for the presentation. We met up a few times at that Macworld, but didn&rsquo;t manage to go out for the drinks we kept talking about that year. We did argue briefly about pit bulls, but he went immediately to \"I can tell you&rsquo;re really passionate about this&hellip;\" I feel successful in what I do these days, and I believe I owe a lot of that success to the popularity he lent me back then. You know when someone you look up to becomes a friend? When a leader becomes a peer? I&rsquo;ve had that happen a few times in my life, and this was a special one for me. Getting to know Merlin has been an honor, and he&rsquo;s as charismatic, smart and funny in person as I had imagined. Merlin&rsquo;s been on Systematic a few times now, and we have managed to sync up schedules and hang out in person a couple of times when I&rsquo;m in the bay area. I absolutely love talking to him. As I expected it would be, Systematic 125 was a blast, and I hope you all enjoy it as much as I do",
		"keywords": ["electric","merlin","network","shadow","blogsmith","brett","bundle","christ","epelman","folders","getting","github","group","jesus","macworld","marina","merlin","photo","systematic","terpstra","across","again","argue","background","becomes","before","believe","blast","booth","briefly","bulls","cards","charismatic","contact","continued","couple","crazy","credit","cross","crowd","drinks","dropped","enjoy","episode","expected","first","flattering","forums","friend","funny","gathered","giving","handsome","happen","hellip","honor","hugged","imagined","index","internet","introduce","kidding","leader","legend","looked","managed","memory","mentioning","message","missed","myself","nerds","passionate","paths","person","pointed","popular","popularity","presentation","project","public","reached","recent","right","rsquo","schedules","serves","session","shoulder","shuffling","simply","smart","smartest","snuck","special","started","status","stuff","success","successful","talking","tapped","think","times","turns","waited","wanted","working","years"]
	},{
		"title": "Inverter for Übersicht, bi-polarize your widgets",
		"url": "/2015/01/16/inverter-for-ubersicht-bi-polarize-your-widgets/",
		"tags": ["javascript","ubersicht"],
		"date": "Jan 16<span>th</span>, 2015",
		"ts": "1421451300",
		"summary": "I made an Übersicht widget to fix an Übersicht frustration. Actually, it&rsquo;s a frustration with every desktop info app I&rsquo;ve ever used: if you get it looking perfect on a dark desktop image, you can never use a light desktop image, and vice versa. I use multiple spaces and tend to distinguish them with wallpaper. I needed a way to make Übersicht work across them. I spent too long making the video considering how simple the task was, and now I&rsquo;d feel guilty if I spent much more time writing about it. As noted in the video, I do not actually know how to correctly say \"Übersicht\" out loud. Forgive me. A lot of people sent me audio recordings of how to properly pronounce \"Übersicht.\" They differed enough that my untrained ear still couldn&rsquo;t confidently pronounce the word, but I figured out a way&hellip; The widget is in the \"ubersicht widgets\" project page and up on GitHub if you&rsquo;re interested",
		"keywords": ["github","forgive","github","video","youtube","across","audio","bersicht","bottom","brettterpstra","class","confidently","considering","container","correctly","couldn","desktop","differed","distinguish","enough","figure","figured","frustration","github","guilty","height","hellip","https","image","interested","inverter","ldquo","light","looking","making","master","multiple","needed","noted","padding","people","project","projects","pronounce","properly","rdquo","recordings","rsquo","simple","spaces","spent","style","ttscoff","ubersicht","untrained","versa","video","videoid","wallpaper","watch","widget","widgets","width","writing","youtube"]
	},{
		"title": "PDFpen for iOS, version 2 [Sponsor]",
		"url": "/2015/01/15/pdfpen-for-ios-version-2-sponsor/",
		"tags": ["sponsor"],
		"date": "Jan 15<span>th</span>, 2015",
		"ts": "1421364240",
		"summary": "A big thanks &mdash; as always &mdash; to Smile for their support of BrettTerpstra.com. It&rsquo;s an honor to have the makers of some of the most useful software on all of my computers and iOS devices sponsoring my work! PDFpen for iPad & iPhone, version 2 brings new, professional-level features to Smile&rsquo;s powerful mobile PDF editing app. Don&rsquo;t worry, all of the things users have come to depend on are still there: Add text, images, and signatures to PDFs Correct text in original PDFs via editable text blocks Fill PDF forms, now including specialized signature fields I had to look that up. -bt&nbsp;↩",
		"keywords": ["character","document","format","icloud","iphone","optical","pdfpen","portable","recognition","smile","store","airdrop","bates","brettterpstra","drive","increase","pdfpen","protect","share","smile","access","annotation","automatically","backlink","bates","blocks","brett","brettterpstra","brings","class","computers","crcampaign","crcat","crsource","depend","devices","documents","editable","editing","encryption","endnotes","features","fields","fnref","footnote","footnotes","forms","height","highlighting","highlights","honor","https","icloud","iphone","image","images","including","level","loading","makers","mdash","media","mobile","navigation","nofollow","noscript","noteref","numbering","original","pages","password","pdfpen","picture","powerful","privacy","productivity","professional","protection","provides","reversefootnote","rsquo","sidebar","signature","signatures","smilesoftware","smoothly","software","source","specialized","sponsoring","srcset","store","support","thanks","title","tools","uploads","useful","users","using","version","width","wikipedia","worry","wrist","writing"]
	},{
		"title": "Ubiquitous bookmarking with Fetching.io (+30% coupon)",
		"url": "/2015/01/15/ubiquitous-bookmarking-with-fetching-dot-io-plus-30-percent-coupon/",
		"tags": ["bookmarking","deals"],
		"date": "Jan 15<span>th</span>, 2015",
		"ts": "1421330400",
		"summary": "I&rsquo;ve been talking with the folks behind Fetching about future plans for the app. I&rsquo;m excited about what they&rsquo;re planning to offer (and what they already do), and wanted to pass on a coupon for 30% off of the service (or the locally-hosted native version). Fetching uses browser plugins to save the full text of every page you visit in a database. You can then search for pages you didn&rsquo;t bother to bookmark at the time using any phrase that the page contained. It also supports tagging and its own bookmarking system for marking pages you retrieve. You can try it out free for 30 days, using either the hosted or the \"native\" version, and use the coupon for 30% off when signing up. The coupon is good until February 28, 2015, but has a limited number of uses, so grab it and run",
		"keywords": ["american","company","coupon","dunham&#39;s","eagle","famous","footwear","gilly","hicks","message","outfitters","payless","penney","service","shoes","short","sports","tatango","fetching","behind","bookmark","bookmarking","bother","browser","contained","coupon","database","either","excited","folks","hosted","limited","locally","marking","native","offer","pages","phrase","planning","plans","plugins","retrieve","rsquo","search","service","signing","supports","system","tagging","talking","using","version","visit","wanted"]
	},{
		"title": "Macminicolo turns 10",
		"url": "/2015/01/13/macminicolo-turns-10/",
		"tags": ["appreview","macmini","macos","server"],
		"date": "Jan 13<span>th</span>, 2015",
		"ts": "1421178240",
		"summary": "My favorite Mac mini colocation service, macminicolo, turned 10 today. There&rsquo;s a great timeline post on their blog that chronicles the history of the Mac mini and of macminicolo itself. They didn&rsquo;t ask me to post this, but they&rsquo;ve been long-time supporters (and sponsors) of this blog and I&rsquo;m excited to wish them continued success. I first got turned onto the mini by Erica Sadun, shortly after I started writing for TUAW. Starting at $499, it&rsquo;s been a great, low-cost solution for Mac owners since it&rsquo;s inception. The latest update to the platform may have dampened enthusiasm a bit by limiting upgrade options, but it remains a powerful machine for the price. I currently have two in service locally and one colocated. I&rsquo;ve owned six minis over the years, if memory serves. I love them. Colocating a mini (running it \"headless\" remotely) is great for a lot of \"common\" things. For example, this site and the Marked 2 website are hosted on one, and I run SSH tunnels/VPN, SFTP backups, file servers, and more. It&rsquo;s also great for always-on chores such as Slogger and other scripts. If you keep Day One running on a remote mini along with Slogger, your Dropbox/iCloud journal is always synced and ready after your \"social\" entries are collected and injected. Pro tip: if you&rsquo;re running a headless mini (on macminicolo or elsewhere), check out this blog post on HDMI dongles. Tricking the mini into thinking you&rsquo;re running a full size monitor on it improves various things, but most noticeably VNC (Remote Desktop) access. You will be grateful for the upgrade. Macminicolo will host your mini (on a high-bandwidth, superfast pipeline) starting at $35 a month, which is a great deal if you have use for the myriad options it provides. They can also sell you a fully loaded mini and additional storage space at very competitive rates. Check out the timeline post and see macminicolo.net for more info",
		"keywords": ["apple","colocation","computer","displayport","macminicolo","personal","check","colocating","desktop","dropbox","erica","macminicolo","marked","remote","sadun","slogger","starting","tricking","access","backups","bandwidth","check","chores","chronicles","collected","colocated","colocation","common","competitive","continued","dampened","dongles","elsewhere","enthusiasm","entries","example","excited","favorite","first","fully","grateful","great","headless","history","hosted","icloud","improves","injected","itself","journal","latest","limiting","loaded","locally","machine","macminicolo","memory","minis","monitor","myriad","noticeably","options","owned","owners","pipeline","platform","powerful","price","provides","rates","ready","remains","remote","remotely","rsquo","running","scripts","servers","serves","service","shortly","since","social","solution","space","sponsors","started","starting","storage","success","superfast","supporters","synced","thinking","timeline","today","tunnels","turned","upgrade","various","website","writing","years"]
	},{
		"title": "Web Excursions for January 11, 2015",
		"url": "/2015/01/11/web-excursions-for-january-11-2015/",
		"tags": ["bookmarks"],
		"date": "Jan 11<span>th</span>, 2015",
		"ts": "1421013180",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Mixtura iOS app of cocktail recipes using what you have on hand. Regulex: Regular Expression Visualizer Cool tool for converting regular expressions into diagrammatic views. Input: Fonts for Code I&rsquo;m always up for playing with new monospace coding fonts&hellip; Aqua Notes - Waterproof Notepad These came up in Systematic 125 (coming soon), and I&rsquo;m enamored with them. Write notes in the shower with a #2 pencil. h/t Merlin Mann kotfu/marked-bonus-pack The Marked Bonus pack is now living on GitHub in the care of kotfu. We&rsquo;re hoping it will stay more up-to-date as changes are required. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["alias","array","character","class","cocktails","coding","expression","iphone","regular","structure","backblaze","bonus","check","expression","fonts","github","input","marked","merlin","mixtura","notepad","notes","regular","regulex","systematic","visualizer","waterproof","write","affordably","backs","bonus","brought","changes","cloud","cocktail","coding","coming","computer","converting","diagrammatic","enamored","entire","everything","excursions","expressions","fonts","hellip","hoping","kotfu","living","marked","monospace","notes","partnership","pencil","playing","recipes","regular","reliably","required","rsquo","securely","shower","today","using","views"]
	},{
		"title": "Vitag 1.0.2",
		"url": "/2015/01/10/vitag-1-dot-0-2/",
		"tags": ["tagging","terminal","vitag"],
		"date": "Jan 10<span>th</span>, 2015",
		"ts": "1420921920",
		"summary": "Vitag has proven useful enough to me that I&rsquo;ve added a bit of polish and some new features. I do think this is going to end up being a RubyGem eventually for ease of install, but at this point still only requires a single script file to run. The main new feature is that you can add a config file at . It currently supports just one section called &lsquo;alias&rsquo;, but it&rsquo;s handy if you use a consistent tagging system the way I do. Formatting is loose; indentation is ignored, whitespace around separators ( and ) is ignored, lines starting with (after any indentation) are ignored. Anything before the is an shorcut term, anything after becomes the tag(s) applied when the shortcut is found after saving a vitag file. The above config file would allow me to change the tags on a file to and \"#ar\" would expand to \"#Archive\" before the tags were applied. An alias can also be expanded to two or more tags by separating with commas after the , e.g. would expand \"#as\" in my tag file to all three tags when applying after save. I also started working on a class in a separate file that will scan full hierarchies for all tags in use, then rank them by the number of files they&rsquo;re each used on. It&rsquo;s headed toward a tag-suggestion and cleaning set of tools, but isn&rsquo;t implemented anywhere yet. Feel free to play with it if you like",
		"keywords": ["apple","command","mavericks","utility","yosemite","archive","formatting","rubygem","vitag","above","added","alias","allow","anywhere","applied","applying","becomes","before","called","change","class","cleaning","commas","config","consistent","enough","eventually","expand","expanded","feature","features","files","found","going","handy","headed","header","hierarchies","ignored","implemented","includes","indentation","install","loose","lsquo","pairs","point","polish","project","proven","requires","rsquo","saving","script","section","separate","separating","separators","shorcut","shortcut","single","started","starting","suggestion","supports","system","tagging","think","tools","toward","updates","useful","vitag","whitespace","working"]
	},{
		"title": "WinterFest Artisanal Software Festival [sponsor]",
		"url": "/2015/01/08/winterfest-artisanal-software-festival-sponsor/",
		"tags": ["sponsor"],
		"date": "Jan 8<span>th</span>, 2015",
		"ts": "1420718400",
		"summary": "WinterFest goes for just a few more days, and it&rsquo;s an effort that I&rsquo;m proud to have sponsoring BrettTerpstra.com this week. The idea of artisanal software is one that we really need, so be sure to check out the available titles! WINTERFEST, which wraps up in the next few days, brings together a bunch of great Macintosh software craftspeople to offer terrific prices on terrific hand-crafted software, direct from the designer. No gimmicks, no bundles: just 25% off the software you need for the work you need to do. \"It&rsquo;s the season for new projects and fresh ideas. A few days a go, a note shows up in my inbox, asking whether an old lecture I have might be the foundation for some sort of book. Last weekend, I found myself with a few spare hours and wondered, &lsquo;what might that little book look like?&rsquo;\" \"I sketched a fast outline in Tinderbox. I&rsquo;d written a few blog posts on the topic, posts that I thought might be the skeleton of a first chapter, so I copied them from the Web and pasted them into Tinderbox. Next, I knew the book proposal would need to demonstrate that sources existed for the book and that I knew the field well enough that I could write it. So, I made a container for References and started rooting around in my repositories for relevant books. I dragged things from Bookends and DEVONthink and soon I had a nice list of nineteen notable books (including at least one from Take Control). A quick trip through my online wish lists and reading backlog turned up an additional seven books I&rsquo;d need to read right away.\" \"Next, I wanted to massage the writing of those weblog posts, to meld them, rearrange them, and let them grow a bit in Scrivener, a terrific tool specifically designed for this sort of structural edit (and one that works well with Tinderbox). Then, just to convince myself that this might actually be a book, I ran up a quick HTML export, copied the text into Nisus Writer Pro, applied some book formatting using the style drawer, and ran off a copy. Before the football game was well underway, I had a sketch of an outline, an initial bibliography, a reading list, and a rough cut at a sample chapter.\" These are great tools that work together. And for a few days more, you can get the tools you need at a great price",
		"keywords": ["artisanal","books","control","devonthink","nisus","scrivener","software","tinderbox","writer","before","bernstein","bookends","brettterpstra","control","devonthink","macintosh","nisus","references","scrivener","tinderbox","winterfest","winterfest","writer","applied","artisanal","asking","available","backlog","bibliography","books","brings","bunch","bundles","chapter","check","container","convince","copied","crafted","craftspeople","designed","designer","direct","dragged","drawer","effort","enough","existed","export","field","first","football","formatting","found","foundation","fresh","gimmicks","great","hours","ideas","inbox","including","initial","lecture","lists","little","lsquo","massage","myself","nineteen","notable","offer","online","outline","pasted","posts","price","prices","projects","proposal","proud","quick","reading","rearrange","relevant","repositories","right","rooting","rough","rsquo","sample","season","seven","shows","skeleton","sketch","sketched","software","sources","spare","specifically","sponsoring","started","structural","style","terrific","thought","through","titles","together","tools","topic","turned","underway","using","wanted","weblog","weekend","wondered","works","wraps","write","writes","writing","written"]
	},{
		"title": "Exporting Safari Reading List to Pinboard and/or Markdown",
		"url": "/2015/01/06/reading-list-catcher/",
		"tags": ["bookmarking","markdown","pinboard","safari"],
		"date": "Jan 6<span>th</span>, 2015",
		"ts": "1420562460",
		"summary": "I&rsquo;ve heard from a few people that this script might be useful to them. I&rsquo;ve also created an \"app\" version of it you can run, but it still takes a wee bit of command line setup. It&rsquo;s pretty simple, though, and I&rsquo;ll cover that in a minute. What the script does is parse your Safari Reading List bookmarks directly from the PLIST file that Safari stores in your support folder. Safari doesn&rsquo;t technically need to be open to do this, but it will only sync your latest bookmarks from other devices when it&rsquo;s running. The app version of this script will launch Safari automatically, but you may want to add a command to any setups directly using the script version to do so. The date of each run of the script is recorded and only newer bookmarks are pulled the next time. If posting to Pinboard, bookmarks are marked with &lsquo;toread&rsquo; as well as a &lsquo;.readinglist&rsquo; tag (a private tag you can use for sorting and cleanup). First, regardless of which version you run, you need to install the Python \"pinboard\" library, which can be done with: or if you use pip. I don&rsquo;t recall my setup having any trouble with permissions, but if you get an error, try using (or ). Then there are just a couple of config settings that are currently hardcoded in the script/workflow. To edit the script, just open it in a text editor, to edit the workflow, right click and Open In&hellip; Automator. DEFAULTEXPORTTYPE can be set to \"pb\" (Pinboard), \"md\" (Markdown list), or \"all\" (exports both) PINBOARDAPIKEY is your full Pinboard API Key. BOOKMARKSMARKDOWNFILE can be any path (including filename) for an existing Markdown file You shouldn&rsquo;t need to modify BOOKMARKS_PLIST That&rsquo;s it. Here&rsquo;s the script version, and you can grab the Automator Workflow below. Note that this is the first time I&rsquo;ve ever published a Python script and I&rsquo;m still feeling my way around building CLIs with it. I&rsquo;m open to your thoughtful criticism. ReadingListCatcher v1.0.0 Download ReadingListCatcher v1.0.0 A workflow and script for saving Safari Reading List bookmarks to Pinboard and/or Markdown Published 01/06/15. Updated 01/06/15. Changelog Donate &bull; More info&hellip",
		"keywords": ["command","editor","interface","automator","bookmarks","changelog","configuration","default","donate","download","export","first","markdown","markdown","pinboard","plist","pinboard","published","python","reading","readinglistcatcher","safari","setup","updated","workflow","automatically","below","block","bookmarks","building","cleanup","click","command","config","containing","couple","cover","created","criticism","devices","directly","doesn","editor","error","exports","feeling","filename","first","folder","hardcoded","having","heard","hellip","including","install","latest","launch","library","lsquo","marked","minute","modify","newer","parse","people","permissions","pinboard","posting","private","published","pulled","readinglist","recall","recorded","regardless","right","rsquo","running","saving","script","settings","setup","setups","shouldn","simple","sorting","stores","support","takes","technically","thoughtful","toread","trouble","useful","using","version","workflow"]
	},{
		"title": "23 tips for driving in the North",
		"url": "/2015/01/05/23-tips-for-driving-in-the-north/",
		"tags": ["personal"],
		"date": "Jan 5<span>th</span>, 2015",
		"ts": "1420501560",
		"summary": "If you&rsquo;re driving in a snow-covered state this winter, here are some basics, presented with my normal lack of scrutible levity. Don&rsquo;t drive a car with rear wheel drive. Dumbass. AWD and anti-lock brakes are \"features,\" but pretty much required gear Check your tread Check your fluids Don&rsquo;t forget your ice scraper Get a decent cell phone carrier and charge your phone before leaving home When dressing to go out, pretend you&rsquo;re already stuck in a ditch with 3&rsquo; of snow and your cell phone is dead1 Whiskey doesn&rsquo;t actually warm you up, drive sober Get decent, lined driving gloves, because driving with numb body parts is not that much better than driving drunk Buy flares, and keep them in your trunk Those little chemical hand warmers they sell at Fleet Farm, Farm & Fleet or whatever store drunk deer hunters go to where you&rsquo;re driving are really, really useful when you get stuck When feasible, use second gear when starting from a stop, and drive one gear up from where you normally would Brake early, cars braking on ice remain in motion until acted upon by other cars Assume patches of snow have ice under them Assume patches without snow are ice If you can&rsquo;t see the dashed line between lanes, use the snowbank on your right as a guide to where the road is and judge lane width from there Follow the lines in the snow, i.e. \"the road more traveled\" If your car has \"sport mode\" or \"ESP\" remember to toggle it when you need to pull out of a spin or get out of a ditch Know how to pull out of a spin or slide. You learn this by whipping shitties in parking lots as a teenager. If you&rsquo;re already an adult who doesn&rsquo;t know how to feel out an ice slide, it might be too late. When being pulled out of a ditch, turn the the steering wheel away from the hill. Basically, do the opposite of what your brain tells you Don&rsquo;t accelerate into turns or too soon after turning the wheel A clutch and e-brake are actually really handy snow-driving tools, but don&rsquo;t fuck with it if you haven&rsquo;t had some practice If any of this does not make sense, stay home Side note to my Wisconsin friends: if you&rsquo;re driving in a non-Wisconsin state, note that 25mph is not a normal speed limit. Also, slower traffic moves right. If someone comes up behind you and repeatedly flashes their brights while you&rsquo;re in the left lane, it does indeed mean you&rsquo;re being stupid&hellip;",
		"keywords": ["american","association","automobile","brake","braking","drive","driving","system","wheel","assume","brake","check","dumbass","except","fleet","thank","whiskey","wisconsin","acted","adult","backlink","basics","because","before","behind","between","brain","brake","brakes","braking","brettterpstra","brights","carrier","charge","chemical","class","clutch","comes","compartment","covered","dashed","decent","dieselsweeties","ditch","doesn","dressing","drive","driving","drunk","endnotes","feasible","features","flares","flashes","fluids","fnref","folks","footnote","footnotes","forget","friends","gloves","guide","handy","haven","heavy","height","https","hunters","image","indeed","judge","lanes","ldquo","learn","leaving","levity","limit","lined","little","loading","media","motion","moves","normal","normally","noscript","noteref","opposite","original","parking","parts","patches","phone","picture","practice","pregnancy","presented","pretend","products","pulled","rdquo","reading","remember","repeatedly","required","reversefootnote","right","rsquo","scraper","scrutible","second","sense","shitties","slide","slower","snowbank","snowdriving","sober","source","speed","sport","srcset","starting","steering","store","stuck","stupid","teenage","teenager","tells","title","toggle","tools","traffic","traveled","tread","trunk","turning","turns","under","uploads","useful","vehicle","warmers","watch","weather","whatever","wheel","where","while","whipping","width","winter"]
	},{
		"title": "sizeup: tidy filesize information in Terminal",
		"url": "/2015/01/05/sizeup-tidy-filesize-information-in-terminal/",
		"tags": ["shell","terminal","tricks"],
		"date": "Jan 5<span>th</span>, 2015",
		"ts": "1420484400",
		"summary": "That outputs all of the file and folder sizes in the current directory, sorted by size, and lists them in human-readable format. Of course, I wanted to make it a more painful endeavor. Here&rsquo;s the result. It&rsquo;s a shell function that will output the file sizes for files (not folders) and provide a total. It accepts file extensions as arguments, and there are flags for controlling sort order and directory traversal depth. Given the lack of real utility, I won&rsquo;t go into too much depth, other than to say that the and functions are reusable and pretty handy. To run in the current folder, just use . Additional options are: Here&rsquo;s the code that can be added to or d by your setup",
		"keywords": ["computer","extension","filename","accepts","added","alias","arguments","controlling","depth","directory","endeavor","extensions","files","flags","folder","folders","format","function","functions","handy","human","lists","options","output","outputs","painful","readable","reusable","rsquo","setup","shell","simple","sizes","sorted","started","traversal","utility","wanted"]
	},{
		"title": "My favorite stuff from 2014, Part 1",
		"url": "/2015/01/05/my-favorite-apps-of-2014-part-1/",
		"tags": ["macappstore"],
		"date": "Jan 5<span>th</span>, 2015",
		"ts": "1420466400",
		"summary": "It&rsquo;s that time of year again. Well, I&rsquo;m actually a little late, but it was an especially busy holiday season. This is my annual list of the apps, both old and new, that I found the most useful over the past year (2014). There are some exclusions, and there are probably some I forgot, but it&rsquo;s a pretty complete list. I&rsquo;m including some of the hardware purchases I&rsquo;ve loved this last year as well. This is part one of two. Part two will focus on utilities and dev tools. This post includes backup and sync tools, music apps, games, reading and writing tools, and productivity apps. I&rsquo;m pretty religious about backups, and it very recently paid off in a way that made me attack my strategy with renewed vigor. So we&rsquo;ll start there. Backblaze has been great on many of my machines, and I augment it with Time Machine and Arq (S3 and SFTP) backup. I also use my Transporter and BitTorrent Sync for both file sync across machines and a \"personal cloud\" backup. My backup regimen would not be complete without cloned drives, and SuperDuper! remains my tool of choice for that added layer of security and convenience. I also recommend Back-In-Time 3 if you work with Time Machine. It makes it much easier to locate specific revisions of specific files than the default \"outer space\" interface of Time Machine. I bookmark everything. I&rsquo;ve given up on most \"Read Later\" services and opted for a Pinboard-only approach, making use of tags and the built-in \"read later\" functionality. Some of the apps that have made this a more pleasant experience include: Worthy of mention is fetching, which watches your browser and records the text from every website you visit. I&rsquo;m not enamored with their planned pricing model, though, and will probably look into alternatives for this over the coming months. Despite moving away from it as a primary job description, I still have a frequent need for design tools. Choosing colors and schemes (and translating colors to appropriate code formats) is a big part of that, and my favorite tools right now are ColorSchemer Studio (great for finding schemes) and Pochade, which is great for picking, adjusting, and converting colors. Pochade recently updated for full Yosemite support and fixed a few bugs in 10.10. I&rsquo;ve also been working with Hype2 for HTML5 animations. There aren&rsquo;t many of worthy competitors left in this arena, but Hype2 has done a great job for me thus far. Macaw&hellip;",
		"keywords": ["iphone","itunes","macintosh","software","store","youtube","acorn","adobe","airfoil","aluminum","ampkit","amplifier","andrew","apple","atlas","audio","backblaze","backup","because","bittorrent","blueboard","bluetooth","bookreader","bookmarking","bookshelf","briefly","bundle","charger","choosing","clarify","class","cobook","colorschemer","composer","composing","control","curio","curtain","cybergoo","dayton","deckset","deliveries","design","designed","desktop","deviantart","digital","doxie","draft","drang","dropzone","evernote","fantastical","fantastical","first","foldingtext","fountain","gifbrewery","games","glove","gmail","griffin","highlights","honorable","hopefully","illustrator","imagealpha","imageoptim","import","jones","licecap","later","launchbar","loudspeakers","mbdzmk","macbook","macaw","machine","mailmate","mailplane","manager","markdown","marked","matthew","mindmeister","mindnode","miscellaneous","multimarkdown","multimedia","music","nonetheless","ooyecc","omnifocus","overtired","pdfpen","paprika","password","permute","photive","photoshop","pinboard","pinbox","pioneer","pochade","popclip","popclip","premium","productivity","rapid","readkit","reading","recipe","satechi","screenflow","scrivener","servetome","shall","shush","sidecar","simplify","sketch","slicereader","slogger","slugline","smile","software","soulver","soundcloud","speakers","special","spelltower","spillo","spotify","steadytune","store","streamtome","studio","studioconnect","superduper","systematic","taskpaper","textexpander","thanks","timing","tinderbox","tinderboxsix","together","tomahawk","transporter","ulysses","video","waltr","while","wordcounter","worthy","writefull","writing","yosemite","youtube","ability","accounts","acorn","across","adapter","added","adjusting","admit","adore","affordable","again","agilebits","airfoil","albeit","allows","almost","alternatives","amazing","amazon","ampkit","analog","animated","animations","annotation","annotations","annual","another","anywhere","apple","approach","areas","arena","articles","atlas","attachments","attack","audio","augment","author","available","awesome","backblaze","background","backintime","backup","backups","backupsync"]
	},{
		"title": "Sponsor: Harvest",
		"url": "/2015/01/01/sponsor-harvest/",
		"tags": ["sponsor"],
		"date": "Jan 1<span>st</span>, 2015",
		"ts": "1420113600",
		"summary": "Thanks to Harvest for sponsoring BrettTerpstra.com this week! Managing teams is hard. Imagine it&rsquo;s Monday morning and your team doesn&rsquo;t know what they&rsquo;re working on for the week. Plans change and schedules change with them. Spreadsheets weren&rsquo;t built for this. Harvest Forecast is a tool designed to plan your team&rsquo;s time. Visualize schedules in Forecast and easily adjust them as needed. Forecast keeps your team&rsquo;s expectations on the same page and helps you move projects forward. As new projects come in, you&rsquo;ll know who&rsquo;s available, and when to hire. Leave behind bloated spreadsheets and begin scheduling in Harvest Forecast with a free 30-day trial",
		"keywords": ["productivity","tracking","brettterpstra","forecast","harvest","imagine","leave","managing","monday","plans","spreadsheets","syndicate","thanks","visualize","adjust","available","begin","behind","bloated","built","change","designed","doesn","easily","expectations","helps","keeps","morning","needed","projects","rsquo","schedules","scheduling","sponsored","sponsoring","spreadsheets","teams","trial","weren","working"]
	},{
		"title": "Winterfest 2014: great apps at 25% off",
		"url": "/2014/12/29/winterfest-2014-great-apps-at-25-percent-off/",
		"tags": ["productivity"],
		"date": "Dec 29<span>th</span>, 2014",
		"ts": "1419888600",
		"summary": "There&rsquo;s a sale running right now called \"Winterfest 2014\" with some first-in-class Mac apps, each at 25% off. No bundles, no hassle, no apps you didn&rsquo;t want. Just full versions of some great artisinal software. If you&rsquo;re missing any of these apps (and especially if you&rsquo;re a writer), now&rsquo;s the time to grab them! The sale runs until January 14",
		"keywords": ["books","control","devon","devonthink","nisus","scrivener","smile","technologies","textexpander","writer","ebooks","books","control","devonthink","nisus","scrivener","textexpander","timeline","tinderbox","winterfest","writer","artisinal","brainstorming","bundles","called","class","covers","especially","first","gamut","great","hassle","missing","productivity","right","rsquo","running","software","versions","writer"]
	},{
		"title": "Vitag: batch Finder tagging from the command line",
		"url": "/2014/12/26/vitag-batch-finder-tagging-from-the-command-line/",
		"tags": ["tagging","terminal","utility","vitag"],
		"date": "Dec 26<span>th</span>, 2014",
		"ts": "1419640680",
		"summary": "Vitag is a quick script I wrote today that I think might be useful to others. I don&rsquo;t know how many people both live in Terminal and make use of Finder tags in OS X 10.9+, but if anyone does, this will make life easier. Run without arguments it grabs all files and folders in the current directory and opens your text editor with a list of them, each one followed by its current tags (if any) in square brackets. Edit what&rsquo;s in the brackets, save and close, and those changes are immediately applied. It&rsquo;s rough, I just wrote it tonight, but it seems solid thus far. I&rsquo;d love to hear from anyone who tries it out. Full info and instructions on the project page vitag v1.0.2 Download vitag v1.0.2 A CLI tool for batch editing OS X file and folder tags in your text editor Published 01/10/15. Updated 01/10/15. Changelog Donate &bull; More info&hellip",
		"keywords": ["editor","finder","changelog","donate","download","finder","published","terminal","updated","vitag","anyone","applied","arguments","batch","brackets","changes","close","directory","easier","editing","editor","files","folder","folders","followed","grabs","hellip","instructions","opens","others","people","project","quick","rough","rsquo","script","seems","solid","square","think","today","tonight","tries","useful","vitag","wrote"]
	},{
		"title": "Web Excursions for December 26, 2014 +Projects update",
		"url": "/2014/12/26/web-excursions-for-december-26-2014-plus-projects-update/",
		"tags": ["bookmarks"],
		"date": "Dec 26<span>th</span>, 2014",
		"ts": "1419602400",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. fetching.io Like HistoryHound, but currently under active development. It indexes the full text of every page you visit automatically and makes it easy to locate pages you&rsquo;ve seen but didn&rsquo;t bother bookmarking at the time. rjames86/downloadpinboard A successor to my Pinboard to Openmeta project that brings the script up to date with Yosemite and Finder tagging. Rewritten in Python by Ryan M. Text Editors in The Lord of the Rings Just for fun, a metaphorical look at the most popular text editors in the context of The Lord of the Rings. Datamancer Typewriter Keys TypeKeys - $100.00 : Datamancer.com, Modern Heirlooms with Classic Style You like mechanical keyboards? Here&rsquo;s a set of \"typewriter\" Cherry Blue keycaps, compatible with any Cherry MX board. That&rsquo;s right. A clicky typewriter for the modern era. What will these kids think of next? Day One to doing An integration between Day One and my doing project. Doing has grown immensely in the 1.0.8pre version. I still need to write it up, but you can see where it&rsquo;s at on GitHub and install it with . It&rsquo;s quite stable at this point&hellip; Now I just want to make a Slogger plugin that makes digest entries in Day One from the \"what was I doing file.\" Six Colors: Podcasts swirling, whirling, and moving Jason Snell on podcasts changing networks or heading out on their own. Sparked by Systematic and Overtired leaving 5by5, but with insight into the whole bubble of tech podcasts we live in. Things have been a bit quiet on the blog lately, but not for lack of hacking in the lab. Here&rsquo;s what&rsquo;s coming soon: \"ReadingListCatcher,\" a tool for automatically syncing your Safari Reading List from iCloud to other, more useful places (like Pinboard, Markdown, HTML lists&hellip;). \"DropboxSpotlight,\" a project that started as a way to just view the most recently changed files in your Dropbox folder to a (maybe, if things work out) secure way to do a Spotlight search on a remote machine from a smart phone or other computer, and have the located files sent to an upload service returning a link. I went to make a small change to Answered and ended up diving into a build system for bookmarklets using yo and grunt for bookmarklet development&hellip; A script for maintaining a collection of templated git hooks on your development machine and&hellip;",
		"keywords": ["android","dropbox","python","search","answered","cherry","classic","cleanmymac","colors","datamancer","doing","dropbox","dropboxspotlight","editors","favorite","finder","github","heirlooms","historyhound","jason","markdown","marked","modern","openmeta","overtired","pinboard","podcasts","python","reading","readinglistcatcher","rewritten","rings","safari","slogger","snell","sparked","spotlight","style","systematic","tools","typekeys","typewriter","yosemite","active","archiving","automatically","based","between","board","bookmarking","bookmarklet","bookmarklets","bother","brings","brought","bubble","build","change","changed","changes","changing","clicky","collection","coming","compatible","computer","context","development","digest","diving","doing","download","editors","ended","entries","excursions","fetching","files","filtering","fixes","folder","going","grown","grunt","hacking","heading","hellip","holiday","hooks","icloud","itunesconnect","immensely","indexes","insight","install","installed","integration","issues","journals","keeping","keyboards","keycaps","leaving","lists","located","machine","maintaining","makes","maybe","mechanical","metaphorical","modern","moving","networks","opens","organizing","pages","partnership","phone","pinboard","places","plugin","podcasts","point","popular","project","projects","quiet","ready","recently","remote","returning","right","rjames","rsquo","script","search","secure","selective","service","small","smart","speed","stable","started","successor","swirling","syncing","system","tagging","templated","think","tools","typewriter","under","upload","useful","using","version","visit","where","whirling","whole","write"]
	},{
		"title": "\"The Origin of John Roderick\" Systematic Special",
		"url": "/2014/12/25/the-origin-of-john-roderick-systematic-special/",
		"tags": ["podcasting","systematic"],
		"date": "Dec 25<span>th</span>, 2014",
		"ts": "1419516000",
		"summary": "Just in time for Christmas and maybe for your long drive home, we put together the epic tale that John Roderick shared on Systematic over four episodes into one, uninterrupted story. He&rsquo;s an amazing story teller, and it&rsquo;s a story that delves in to, in my opinion, the point of our existence and pursuit of dreams",
		"keywords": ["music","origin","roderick","story","christmas","enjoy","roderick","systematic","amazing","delves","dreams","drive","episodes","existence","maybe","point","pursuit","rsquo","shared","story","teller","together","uninterrupted"]
	},{
		"title": "Dropzone 3 [sponsor]",
		"url": "/2014/12/25/dropzone-3-sponsor/",
		"tags": ["developer","dropzone","sponsor"],
		"date": "Dec 25<span>th</span>, 2014",
		"ts": "1419508800",
		"summary": "I&rsquo;m honored to have Dropzone 3 from Aptonic as this week&rsquo;s sponsor. It&rsquo;s like Christmas! Dropzone is one of the first utilities installed on every one of my Macs, and the version 3 update is full of great stuff. A major update for Dropzone 3 has recently been released that brings full support for OS X Yosemite and adds new features such as the ability to activate Dropzone by dragging files directly to the top of the screen and the ability to upload videos to YouTube. There are also many bug fixes and improvements such as completely rewritten and improved Amazon S3 uploading and an enhanced developer API. Dropzone is a productivity tool that enhances drag and drop on your Mac. Drag files onto the menu item and a beautifully designed and animated grid of all your actions opens. Share with services such as AirDrop, Imgur, FTP, Amazon S3, Facebook, Twitter and many others. Move and copy files, launch applications and even develop your own actions using the powerful Ruby-based scripting API. Dropzone 3 is a huge update to the app that takes Dropzone to a whole new level. You can now add actions to your grid faster thanks to the new quick add menu or by dropping folders or apps onto the &lsquo;Add to Grid&rsquo; area. Quickly reorganise your actions using drag and drop and delete them by holding the option key. The new in-grid progress bars let you keep track of task progress. Also see how tasks are progressing at a glance in the new animated menu item. Drop Bar is another great new feature - Drag files you know you&rsquo;ll need later onto the Drop Bar area of the grid to stash them tempororily. Drag stacks on top of each other to combine them. You can even drag a stack onto another Dropzone action. In Dropzone 3, the developer API has undergone a major overhaul. You can now duplicate existing actions and tweak them to your liking. A new bundle system lets you distribute needed libraries or tools along with your action. Actions can now be auto-updated as they are improved. With a little Ruby knowledge you&rsquo;ll be thinking of your own uses in no time - check out the developer documentation",
		"keywords": ["adobe","amazon","dropbox","interface","photoshop","programming","services","actions","airdrop","amazon","aptonic","christmas","dropzone","facebook","imgur","quickly","share","twitter","yosemite","youtube","ability","action","actions","activate","animated","another","applications","based","beautifully","brings","bundle","check","completely","designed","develop","developer","directly","distribute","dragging","dropping","duplicate","enhanced","enhances","faster","feature","features","files","first","fixes","folders","glance","great","holding","honored","improved","improvements","installed","knowledge","later","launch","level","libraries","liking","little","lsquo","major","needed","opens","others","overhaul","powerful","productivity","progressing","quick","recently","released","reorganise","rewritten","rsquo","screen","scripting","services","sponsor","stack","stacks","stash","stuff","support","system","takes","tasks","tempororily","thanks","thinking","tools","track","tweak","undergone","updated","upload","uploading","using","utilities","version","videos","whole"]
	},{
		"title": "I wrapped your gift very poorly but I love you",
		"url": "/2014/12/24/i-shaved-my-beard-so-thered-be-no-question-im-not-santa-but-merry-christmas-anyway/",
		"tags": ["christmas","personal","writing"],
		"date": "Dec 24<span>th</span>, 2014",
		"ts": "1419485580",
		"summary": "I think my gifts this year are thoughtful, well-considered, and appropriate, though my wrapping job belies the fact that I&rsquo;ve never worked in a department store and apparently have not had much contact with adult scissors before. It&rsquo;s getting worse every year. I wish it was still cool to just use gift bags and tissue paper. People seemed to consider that lazy on my part, but would you rather have a festive bag with crinkly tissue paper that has tactile and audio appeal, or this gift that looks like I let my 1-year-old niece dress it? Also, are we cool with Amazon gift cards by email moving forward? I know I tried that for a while and the experiment has become a bit of a joke. I just thought that maybe instead of me giving you the wrong gift, you returning it and finding out it was cheaper than you thought, then just giving up after shopping for a while with the $20 you got out of it, you might just like to click a button and have the perfect thing delivered directly to you. Could we try it again if I send the e-card with a link to a very thoughtful option for spending it on? I&rsquo;ll add enough to the card that you can click the \"Gift wrap\" this order option if it makes you feel better. I could even deliver them in advance so you could bring it to the party and unwrap it with everyone else. I&rsquo;d still make you a nice card, though I might leave a blank spot so you can customize the message. It&rsquo;s not that I don&rsquo;t care about you as a person or am entirely blind to the quirks of your personality that I might exploit for humor in a greeting card. I&rsquo;m not a monster, I just know that I would appreciate the extensibility option if it were offered to me. No? That&rsquo;s ok, I&rsquo;ll make it personal. Although my penmanship is still at 3rd grade levels, and I think it may have declined. I can no longer replicate my signature between tries and it looks like a completely different 3rd grader signed for every purchase at the liquor store, the pharmacy, and the bank (those are the places I still have to actually sign with a pen on a piece of paper). Plausible deniability, I guess. Speaking of cards, could we all agree that they&rsquo;re a bit frivolous? I do not understand them. I love exchanging gifts, at least with thoughtful people, but the card? I believe them, and the social ceremony surrounding them, to have been the device of parents of old to make Christmas gift exchanges last longer. Have you ever been&hellip;",
		"keywords": ["christmas","personal","although","amazon","because","christmas","hallmark","kwanza","maybe","merry","people","plausible","spartachristmas","stuff","speaking","tearing","tomorrow","adult","again","agree","allowed","although","antics","anyone","apparently","appeal","appreciate","appreciation","association","audio","awkwardly","bathroom","because","before","belies","believe","between","blank","blind","bought","bring","button","cardboard","cards","carefully","celebrate","ceremoniously","ceremony","cheaper","click","closet","community","completely","consider","considered","contact","crinkly","customize","cynical","declined","deliver","delivered","deniability","department","device","different","directly","dirty","doesn","doing","dress","dressings","dynamic","either","element","email","emote","emotionally","empty","enjoy","enough","entertaining","entertainment","entirely","especially","everyone","exchanges","exchanging","expect","experiment","exploit","express","extensibility","family","festive","finally","finding","floating","follower","friends","frivolous","generations","gesture","getting","gifts","giver","giving","going","grade","grader","greeting","grumpy","guess","guilt","happen","happy","hastily","haven","having","healthy","heart","heritage","horrible","humor","inscription","inside","kinda","kitty","laugh","leave","levels","lights","liquor","little","longer","looking","looks","makes","mantle","mature","maybe","message","minutes","monster","morning","moving","multiple","needs","niece","noises","offered","officially","older","override","pandering","paper","parents","parties","party","penmanship","people","person","personal","personality","personalized","pharmacy","piece","pieces","places","plenty","point","pretend","quirks","rather","relevance","religions","religious","remember","remove","replicate","returning","rsquo","saving","scissors","seemed","sentiment","share","shopping","siblings","signature","signed","since","skilled","social","space","spawn","spending","stand","standing","store","stores","surprise"]
	},{
		"title": "Slopes 1.4 for winter sports lovers",
		"url": "/2014/12/22/slopes-1-dot-4-for-winter-sports-lovers/",
		"tags": ["appreview"],
		"date": "Dec 22<span>nd</span>, 2014",
		"ts": "1419272520",
		"summary": "This year at WWDC I ran into Curtis Herbert, who showed me an iPhone app he&rsquo;d developed called Slopes. It&rsquo;s records, analyzes, and shares stats collected during a day of snowboarding and/or skiing. Despite not being at all capable of winter sports, I was impressed enough with to write it up for TUAW. Version 1.4 was just released, and adds support for the latest iPhones and some great new features using new technologies in iOS 8. Slopes previously boasted interactive replays of your runs on a 3D map, the ability to ignore lift time, shareable images of basic metrics, integration with Google Earth, and battery management that would let your phone outlast your day on the slopes. The latest version adds a Today widget with key stats for both the current day and your last run, Health Kit integration for calculating calories burned and saving workout information, and full support for the iPhone 6 and 6+. You can grab Slopes for $4.99 US on the App Store, and get it in time for your next outing. You can find further info and a video at getslopes.com. It kind of makes me wish I were more coordinated with that kind of thing&hellip",
		"keywords": ["skiing","snowboarding","sports","winter","curtis","earth","google","health","herbert","slopes","store","today","version","ability","analyzes","basic","battery","boasted","burned","calculating","called","calories","capable","collected","coordinated","developed","enough","features","getslopes","great","hellip","iphone","iphones","ignore","images","impressed","information","integration","interactive","latest","makes","management","metrics","outing","outlast","phone","previously","released","replays","rsquo","saving","shareable","shares","showed","skiing","slopes","snowboarding","sports","stats","support","technologies","using","version","video","widget","winter","workout","write"]
	},{
		"title": "A couple of Marky fixes...",
		"url": "/2014/12/20/a-couple-of-marky-fixes-dot-dot-dot/",
		"tags": ["markdown","markdownifier","marky"],
		"date": "Dec 20<span>th</span>, 2014",
		"ts": "1419116340",
		"summary": "Marky the Markdownifier has seen an uptick in hits since Workflow came out and Federico Vitticci published a Markdownify Webpage workflow that uses it. I thought I should probably fix up a few things. There are still dozens of edge cases, but I fixed most of what&rsquo;s been reported lately. Oh yeah, and it does a pretty good job of resolving relative urls in href and src attributes to keep images and links intact",
		"keywords": ["federico","handle","markdown","markdownifier","markdownify","marky","vitticci","webpage","whitespace","workflow","array","attributes","backticks","blank","bracketed","breaks","certain","cleanup","display","dozens","emphasis","fixed","fixes","formed","frame","having","images","incorrect","intact","links","markup","output","preview","published","relative","reported","resolving","rsquo","showing","since","styling","thought","tweaks","uptick","using","webpages","within","workflow"]
	},{
		"title": "Instant productivity with iMindQ [sponsor]",
		"url": "/2014/12/18/instant-productivity-with-imindq-sponsor/",
		"tags": ["sponsor"],
		"date": "Dec 18<span>th</span>, 2014",
		"ts": "1418904000",
		"summary": "Thanks to the cross-platform productivity app iMindQ for sponsoring BrettTerpstra.com this week. To quickly summarize, iMindQ is the tool to inject instant productivity into your daily activities. With a smooth and flexible user interface, and vast array of mapping opportunities including mind maps, concept maps, flowcharts, WBS charts, organizational charts and other types of diagrams, iMindQ is the solution to clarify your thoughts, start your project plan and get the creative boost you need. iMindQ is the perfect tool for single or group brainstorming. Being a technique that closely replicates the way our minds are wired mind maps are the best way to improve creativity. Next time you are brainstorming make sure you have iMindQ in front of you, and visualize your idea developing into a mind map which contains the solution you are looking for somewhere in its subtopics. Using iMindQ in your company’s brainstorming sessions will ensure your team members understand the topics which are up for debate, participate evenly and leave the session with unified meeting notes. As soon as your group finishes the brainstorm sessions, iMindQ will help you organize your meeting notes and connect the ideas that collate with each other. As soon as you have set the goals into a sequential strategic plan, you can use iMindQ to create tasks, deadlines and resources for your action plans, and monitor the progress as the project develops. iMindQ also brings good news for project managers: you can turn your Mind Map into a Project Plan by creating a WBS from your deliverables and visually analyse the outcome using Gantt chart view. Communicating information with mind maps will ensure that the project team will understand the project plan and avoid the misunderstandings that can occur from working with different software solutions. Project managers can create a master mind map with all project related information to avoid document cluttering and never miss important information. With the next scheduled release, iMindQ 6.1 will bring new benefits for business users. Including integration with SharePoint and SharePoint Online, users will collaborate even more easily Microsoft’s most famous platform, or its in-house solution. iMindQ 6.1 adds Spanish, German, and French as supported languages so users from these countries can mind map in their native language. Following the Mac application guidelines iMindQ 6.1 will also come with integration with the native speller for&hellip;",
		"keywords": ["anychart","autocad","chart","drive","gantt","google","interface","programming","website","action","brettterpstra","coming","communicating","concepts","first","flexibility","french","gantt","german","including","inspire","mapping","microsoft","online","planning","plans","project","sharepoint","spanish","store","thanks","trial","using","action","activities","analyse","array","avoid","benefits","boost","brainstorm","brainstorming","brettterpstra","bring","brings","business","chart","charts","clarify","class","closely","cluttering","collaborate","collate","company","concept","connect","contains","countries","create","creating","creative","creativity","cross","daily","deadlines","debate","deliverables","developing","develops","device","diagrams","different","document","easily","evenly","famous","finishes","flexibility","flexible","flowcharts","front","goals","group","guidelines","height","house","https","imindq","iphone","ideas","image","imindq","important","improve","including","information","inject","inner","instant","integration","interface","language","languages","leave","loading","looking","managers","mapping","master","media","meeting","members","minds","misunderstandings","mobility","monitor","native","nofollow","noscript","notes","occur","opportunities","organizational","organize","original","outcome","picture","plans","platform","productivity","project","quickly","related","release","replicates","resources","scheduled","sequential","session","sessions","single","smooth","software","solution","solutions","somewhere","source","speller","sponsor","sponsoring","srcset","strategic","strong","subtopics","summarize","supported","tasks","technique","thoughts","title","topics","types","understand","unified","uploads","users","using","visualize","visually","width","wired","working"]
	},{
		"title": "Overtired gets punchy",
		"url": "/2014/12/13/overtired-gets-punchy/",
		"tags": ["overtired","podcast"],
		"date": "Dec 13<span>th</span>, 2014",
		"ts": "1418501640",
		"summary": "This thing happened last night. Two people, both odd in very different ways, happened to get slightly intoxicated before they came together to record a podcast. A podcast already known for its random and chaotic thought processes. This was episode 24. Avid listeners may ask what happened to episode 23. That&rsquo;s simple. We let loose a bit, and ended up with an \"explicit\" tag. It&rsquo;s no worse than the things that WallMart shoppers can be heard yelling at their kids, though. No offense to WallMart shoppers. Trying to define journalistic integrity in light of the Sony hack A recap of the \"Cat guy runs a pit bull rescue\" origin story Collecting sadness in plastic pitchers Augmenting said sadness with distilled beverages A How-To guide for condemning yourself to a horrifying afterlife just by watching television Horrifying web design that&rsquo;s obviously Obama&rsquo;s fault Gopher, your first BBS, and of course&hellip; Taylor Swift Apologies to Lisa Bettany and Pete Cashmore for not noticing that their lives had taken separate paths. That will make more sense if you go listen to Episode 24",
		"keywords": ["itunes","apologies","augmenting","bettany","cashmore","collecting","episode","gopher","horrifying","obama","swift","taylor","topics","trying","wallmart","afterlife","appreciated","before","beverages","chaotic","condemning","define","design","different","distilled","ended","episode","explicit","fault","first","greatly","guide","happened","heard","hellip","horrifying","itunes","integrity","intoxicated","journalistic","light","listen","listeners","lives","loose","night","noticing","offense","origin","paths","people","pitchers","plastic","podcast","processes","random","ratings","recap","record","rescue","rsquo","sadness","sense","separate","shoppers","simple","slightly","story","subscriptions","taken","television","thought","together","watching","worse","yelling"]
	},{
		"title": "CodeRunner 2",
		"url": "/2014/12/13/coderunner-2/",
		"tags": ["appreview","programming","tools"],
		"date": "Dec 13<span>th</span>, 2014",
		"ts": "1418488920",
		"summary": "CodeRunner 2 from Nikolai Krill is out, and it&rsquo;s pretty awesome. In case you&rsquo;re not familiar, CodeRunner is a Mac utility app that allows you to edit and test code live in a wide range of languages. If you write any kind of code and aren&rsquo;t already a CodeRunner user, you&rsquo;ll definitely want to get on board. Current users will appreciate a host of improvements: For a full list, check out the CodeRunner blog. CodeRunner 2 is $9.99 US, and there&rsquo;s a free trial available. You&rsquo;ll also find a list of all supported languages on the homepage. Before you ask, yes, I&rsquo;ve heard of Peppermint and am quite impressed with it. CodeRunner is still my default right now, and I&rsquo;m very excited about the improvements! Side note: MAS customers who own CodeRunner can choose to pay for the new version (I did), but the upgrade is free if you install the demo while you have the MAS version installed",
		"keywords": ["autocomplete","cascading","highlighting","javascript","language","scripting","sheets","store","style","syntax","textmate","before","coderunner","extensible","improved","internal","javascript","krill","memory","nikolai","peppermint","support","symbol","template","textmate","xcode","yosemite","allows","appreciate","available","awesome","board","check","choose","completions","customers","default","definitely","excited","experimentation","familiar","files","fuzzy","handling","heard","homepage","impressed","improvements","including","indentation","install","installed","language","languages","navigator","placeholders","profiling","range","required","right","rsquo","search","snippet","statistics","support","supported","syntax","tabbed","theme","trial","updates","upgrade","users","utility","version","while","write"]
	},{
		"title": "Time for an iTextEditors update",
		"url": "/2014/12/11/time-for-an-itexteditors-update/",
		"tags": ["iphone","itexteditors","texteditor"],
		"date": "Dec 11<span>th</span>, 2014",
		"ts": "1418338860",
		"summary": "iTextEditors continues to be one of the most popular destinations on this site, but it&rsquo;s getting a little bit stale. I&rsquo;ve kept it up to date with all of the submissions that come in, but I&rsquo;ve seen a dozen new text editors come through the App Store that I haven&rsquo;t had time to try out. I need a hand. If you&rsquo;re not familiar with iTextEditors, it&rsquo;s a feature comparison chart for iOS text editors that includes up-to-date App Store information for every editor it covers. I&rsquo;ll be adding new criteria to it soon, and finally finishing a mobile version, but it&rsquo;s a great overview as is1. You can click a row to highlight it, and click column headers to filter the rows. Click any editor title to jump to its App Store information. If you develop a text editor for iOS, it&rsquo;s worth adding your app. The chart gets a few hundred views every day, and sometimes thousands depending on who&rsquo;s linking to it at any given time. It&rsquo;s good exposure, and it takes five minutes of your time to be on it. If you&rsquo;re a user who has experience with any iOS text editor, whether it&rsquo;s for notes, journaling, or long-form writing, your contributions are greatly appreciated. I&rsquo;m always looking for new submissions, corrections, and updates. If you know of an editor that should be included but don&rsquo;t have all the answers, prod the developer to submit their app! Submit the info through this form. The only requirement is that the app handles plain text (no RTF, DOC, PDF, etc. editors unless they have a specific mode for text editing). Help me keep a great community resource up to date! Among others, it needs a column indicating updates for the latest iPhone/iPad dimensions, Markdown flavors, custom keyboard usage, and hopefully Bittorrent Sync support soon.&nbsp;↩",
		"keywords": ["apple","dropbox","icloud","store","among","bittorrent","click","markdown","store","adding","answers","appreciated","backlink","brettterpstra","chart","class","click","column","columns","community","comparison","continues","contributions","corrections","covers","criteria","custom","depending","destinations","develop","developer","dimensions","dozen","editing","editor","editors","endnotes","experience","exposure","familiar","feature","filter","finally","finishing","flavors","fnref","footnote","footnotes","forms","getting","great","greatly","handles","haven","headers","height","highlight","hopefully","https","hundred","iphone","itexteditors","image","included","includes","indicating","information","itexteditors","journaling","keyboard","latest","linking","little","loading","looking","media","minutes","mobile","needs","noscript","noteref","notes","original","others","overview","picture","popular","requirement","resource","reversefootnote","rsquo","sometimes","source","specific","srcset","stale","submissions","support","takes","thousands","through","title","updates","uploads","usage","version","views","width","worth","writing","wufoo"]
	},{
		"title": "In preparation for the new Systematic",
		"url": "/2014/12/11/in-preparation-for-the-new-systematic/",
		"tags": ["music","podcast","systematic"],
		"date": "Dec 11<span>th</span>, 2014",
		"ts": "1418326680",
		"summary": "The ESN.fm relaunch of Systematic is almost ready. The first episode on the new network should be live next week. There&rsquo;s a new logo. It&rsquo;s pretty. A big thanks to Jory Raphael for this one: I couldn&rsquo;t decide on a public domain track or find the right loops, so I pulled out the guitar and just finished up writing some intro/outro music. Rough mix, but I like it thus far. I&rsquo;m going to experiment with a 30 minute format. My typical interview style is a little more wandering (as any regular listener knows), but I think I can ramp up the energy and make something even more fun to listen to. I promise that if there&rsquo;s a bigger story to tell, I won&rsquo;t hesitate to go over the mark. There&rsquo;s a new Twitter account for Systematic at @SystmCast. Follow it for updates (and conversation as you see fit). Also, if you would be so kind, it would be amazing if long-time fans could go drop a rating and/or review in the new iTunes feed to help the launch get traction faster! Oh yeah, and a new Overtired should be ready tomorrow",
		"keywords": ["electric","itunes","network","overtired","shadow","twitter","overtired","raphael","rough","systematic","systmcast","twitter","account","almost","amazing","bigger","conversation","couldn","decide","domain","energy","episode","experiment","faster","finished","first","format","going","guitar","hesitate","itunes","interview","intro","knows","launch","listen","listener","little","loops","minute","music","network","outro","promise","public","pulled","rating","ready","regular","relaunch","right","rsquo","story","style","thanks","think","tomorrow","track","traction","typical","updates","wandering","writing"]
	},{
		"title": "Preview the OS X clipboard in Terminal",
		"url": "/2014/12/11/preview-the-os-x-clipboard-in-terminal/",
		"tags": ["shell","terminal"],
		"date": "Dec 11<span>th</span>, 2014",
		"ts": "1418312100",
		"summary": "I apologize for being a little slow on posting for a bit now1. Here&rsquo;s a quick one for the Shell Tricks series, though. I use with the mnemonic \"clipboard preview.\" It simply outputs the text contents of the system-wide clipboard (as opposed to the kill buffer) to your pager without affecting the command line or the contents of the clipboard. You can also pipe to to just dump the contents to the screen without executing anything. This is useful for me when I just want to verify what&rsquo;s in the clipboard before pasting, without going to a clipboard manager or dumping to a text file. It&rsquo;s especially useful when you&rsquo;re connected to a remote OS X machine and may have copied or piped content to the system pasteboard with no access to the GUI. By the way, I built a Jekyll plugin to make an index and actual landing pages for all the posts that I add \"series\" metadata to. Convenient. It&rsquo;s not just the recent surgery, it&rsquo;s that I&rsquo;ve been working more and more on \"legitimate\" applications with commercial value. While I still find plenty of time to hack away at the little freebies, I&rsquo;ve been running out of time and energy to write them up in detail. More coming soon, though, I promise.&nbsp;↩",
		"keywords": ["command","interface","jekyll","pbpaste","convenient","jekyll","shell","terminal","tricks","while","access","affecting","alias","apologize","applications","backlink","before","brettterpstra","buffer","built","check","class","clipboard","coming","command","commercial","connected","content","contents","copied","detail","double","dumping","endnotes","energy","especially","executing","fnref","footnote","footnotes","freebies","going","height","highlight","highlighter","hitting","https","image","including","index","landing","language","ldquo","legit","legitimate","little","loading","machine","makes","manager","media","metadata","mnemonic","noscript","noteref","opposed","original","outputs","pager","pages","paste","pasteboard","pasting","pbpaste","picture","piped","plaintext","plenty","plugin","posting","posts","preview","promise","quick","rdquo","recent","remote","reversefootnote","rouge","rsquo","running","screen","series","simple","simply","source","srcset","surgery","system","title","uploads","useful","value","verify","wanted","width","working","write"]
	},{
		"title": "Drobo and Transporter Holiday Deals [sponsor]",
		"url": "/2014/12/11/sponsor-drobo/",
		"tags": ["sponsor"],
		"date": "Dec 11<span>th</span>, 2014",
		"ts": "1418299200",
		"summary": "I&rsquo;d like to thank Drobo for sponsoring BrettTerpstra.com this week. I use their line of storage solutions, as well as their Transporter line of products as an integral part of my backup, storage, and sync solutions. Transporter will change the way you store, access, and protect your documents, photos and videos by allowing all your digital devices to work as one, completely private and without monthly fees. In other words, it&rsquo;s everything you love about the convenience of the cloud without any of the privacy or cost drawbacks. Transporter will automatically sync files between all your devices to create one window to your digital world, keeping all your files organized by automatically syncing your document, photo, music, and video folders across your devices. Whether you want to watch movies while on vacation or download documents on a business trip, Transporter gives you easy access to your files regardless of where you are with free desktop, iPhone® or Android™ apps. Drobo data storage products for SMBs and individual professionals combine sophisticated data protection and management features, affordable capacity, and ease-of-use. So whether you are looking for a direct attached solution for your personal use or a network solution to share with others, Drobo has you covered! Regardless of which Drobo you use, we make sure that it can be setup easily in minutes, can expand without tools by installing larger drives at any time, and that your data is always protected. Drobos are self-healing, self-managing and even self-optimizing, and will even let you know when you’re running low on capacity and need to install bigger drives. You simple insert the drives and Drobo will take care of the rest. If this sounds like your ideal solution, take advantage of these special holiday deals from the Drobo Store through December 14th, with discounted pricing on Drobo, 5D, and 5N by using the promo codes below at checkout: Use code XMASDROBO to purchase Drobo for $259 or to receive $90 off with hard drive bundles. Use code XMAS5D to purchase Drobo 5D for $599 or to receive $100 off with hard drive bundles. Use code XMAS5N to purchase Drobo 5N $449 or to receive $100 off with hard drive bundles",
		"keywords": ["attached","computer","drive","enclosure","network","personal","serial","storage","android","brettterpstra","drobo","drobos","regardless","store","transporter","xmasdrobo","access","across","advantage","affordable","allowing","attached","automatically","backup","banner","below","between","bigger","brettterpstra","bundles","business","capacity","change","checkout","class","cloud","codes","completely","convenience","covered","create","deals","desktop","devices","digital","direct","discounted","document","documents","download","drawbacks","drive","drives","drobo","drobostore","easily","everything","expand","features","files","folders","gives","healing","height","holiday","https","iphone","ideal","image","individual","install","installing","integral","keeping","larger","loading","looking","management","managing","media","minutes","monthly","movies","music","network","nofollow","noscript","optimizing","organized","original","others","personal","photo","photos","picture","pricing","privacy","private","products","professionals","promo","protect","protected","protection","receive","regardless","rsquo","running","setup","share","simple","solution","solutions","sophisticated","sounds","source","special","sponsoring","srcset","storage","store","strong","syncing","thank","through","title","tools","transporter","uploads","using","vacation","video","videos","watch","where","while","width","window","words","world"]
	},{
		"title": "Overtired: well-rested and back at it",
		"url": "/2014/12/05/overtired-well-rested-and-back-at-it/",
		"tags": ["overtired","podcast"],
		"date": "Dec 5<span>th</span>, 2014",
		"ts": "1417811880",
		"summary": "The first episode of the \"new\" Overtired on ESN is up. It&rsquo;s me and Christina Warren (@filmgirl) talking about things that people talk about, and a lot of things they don&rsquo;t. Even I find it fascinating. Check it out, and if you haven&rsquo;t already subscribed to the new feed, get on that: RSS or iTunes",
		"keywords": ["itunes","podcast","check","christina","overtired","warren","episode","fascinating","first","haven","itunes","people","rsquo","subscribed","talking"]
	},{
		"title": "Stack: The task management system built for Dev Teams [Sponsor]",
		"url": "/2014/12/04/stack-the-task-management-system-built-for-dev-teams-sponsor/",
		"tags": ["sponsor"],
		"date": "Dec 4<span>th</span>, 2014",
		"ts": "1417694400",
		"summary": "Thanks to Stack for sponsoring BrettTerpstra.com this week. Unlike other generic task management apps on the market, Stack is specifically designed for development teams and digital projects, not students, painters and writers. Our flexible and fully customizable project management system and task board is suitable for any dev project, small or large, complex or simple. Stack also features a handy consolidated task view for developers, where they can view the most critical tasks across any number of projects. Of course Stack offers all the features you’d expect from a robust task management system. Users can add tasks and drag them into completely customizable columns, set due dates and priorities, assign team members, add attachments, create tags for easy searching and make to-do lists. Comments allow users to collaborate in real time with all team members. So you can get more done by focussing on just the things that matter to you and leave all the pesky emails and scheduling up to the project managers",
		"keywords": ["backlink","bugherd","management","project","system","tracking","brettterpstra","comments","stack","syndicate","thanks","unlike","users","vsayd","across","allow","assign","attachments","blockquote","board","brettterpstra","class","collaborate","columns","completely","complex","consolidated","create","critical","customizable","dates","designed","developers","development","digital","emails","expect","features","flexible","focussing","fully","generic","handy","height","https","image","leave","lists","loading","management","managers","market","media","members","nofollow","noscript","offers","original","painters","pesky","picture","priorities","project","projects","robust","scheduling","searching","simple","small","source","specifically","sponsor","sponsored","sponsoring","srcset","stack","students","suitable","system","tasks","teams","title","uploads","users","where","width","writers","zrbvfg"]
	},{
		"title": "Marked 2.4.8",
		"url": "/2014/12/03/marked-2-dot-4-8/",
		"tags": ["markdown","marked"],
		"date": "Dec 3<span>rd</span>, 2014",
		"ts": "1417645740",
		"summary": "Marked 2 2.4.8 is out for direct customers, and in review for the Mac App Store version. It features a long list of fixes for little quirks that have come up in Yosemite (as well as 2 big ones). It also adds OPML support (import and export) and an \"Outline\" mode for viewing iThoughtsX maps, OPML documents, and other outline formats. It has options for decimal and APA style lists. You can also exclude elements from the word count and readability statistics, including any or all of block quotes, code blocks, and footnotes/citations. For people who have asked if there was a way to turn off the square brackets around footnote numbers, there is now. There&rsquo;s even an x-success parameter on the url handler commands now, so you can return focus to any other application with its own url handler. Oh, and you can have \"Validate all URLs\" run in the background on every update, only popping up a dialog if it finds errors. Oh, and&hellip; (there&rsquo;s a lot) It will show up right now for current users (see Marked->Check for Updates), and should be available (relatively) soon for MAS customers, depending on review queue times. You can grab a free trial and see it in action at the Marked 2 website",
		"keywords": ["store","check","marked","outline","store","updates","validate","yosemite","action","asked","available","background","block","blocks","brackets","citations","commands","count","customers","decimal","depending","dialog","direct","documents","elements","errors","export","features","finds","fixes","focus","footnote","footnotes","formats","handler","hellip","ithoughtsx","import","including","lists","little","numbers","options","outline","parameter","people","popping","queue","quirks","quotes","readability","relatively","return","right","rsquo","square","statistics","style","success","support","times","trial","users","version","viewing","website"]
	},{
		"title": "Typed: a new Markdown editor from Realmac",
		"url": "/2014/12/02/typed-a-new-markdown-editor-from-realmac/",
		"tags": ["appreview","editor","markdown","texteditor"],
		"date": "Dec 2<span>nd</span>, 2014",
		"ts": "1417550400",
		"summary": "Realmac, creators of Ember, Clear, and RapidWeaver, have just released a new project: A Markdown editor called \"Typed.\" It sports a beautiful take on the minimal UI that Byword pioneered back in the day. In fact, it reminds me a lot of Byword&rsquo;s first version, except that they&rsquo;ve embraced Markdown earlier on in the development process. It can also play a selection of calming music while you write, a la OmmWriter. The layout and typography are excellent, responding to screen width and adjusting automatically to the environment. Even in windowed mode, the window chrome and character counts fade away, leaving you with a 100% blank canvas to work on. On the editing feature side, it has character and word count, HTML preview, autosave, keyboard shortcuts, and smart handling of the cursor when formatting. There&rsquo;s not a lot in the way of advanced editing capabilites, yet, but I&rsquo;m told there are more planned in the future. It took Byword a while to gain the powerful-yet-simplistic interface it has now, too. Typed is priced at $24.99, but has an intro price of $19.99 right now. You can grab it on the Realmac website. There&rsquo;s a free trial available there, too",
		"keywords": ["ember","format","interface","keyboard","realmac","shortcut","software","byword","clear","ember","markdown","ommwriter","rapidweaver","realmac","typed","adjusting","advanced","automatically","autosave","available","beautiful","blank","called","calming","canvas","capabilites","character","chrome","count","counts","creators","cursor","development","earlier","editing","editor","embraced","environment","excellent","except","feature","first","formatting","handling","interface","intro","keyboard","layout","leaving","minimal","music","pioneered","planned","powerful","preview","price","priced","process","project","released","reminds","responding","right","rsquo","screen","selection","shortcuts","simplistic","smart","sports","trial","typography","version","website","while","width","window","windowed","write"]
	},{
		"title": "A Sublime deal from Wes Bos",
		"url": "/2014/12/02/a-sublime-deal-from-wes-bos/",
		"tags": ["books","deals","sublimetext","video"],
		"date": "Dec 2<span>nd</span>, 2014",
		"ts": "1417541640",
		"summary": "Wes Bos knows his Sublime Text. He authored Sublime Productivity, Sublime Text Power User, Writing Sublime Plugins, and a bunch of power user video courses. I don&rsquo;t know him personally, but I&rsquo;ve been followig his work and buying his stuff for a while. I mention this because he&rsquo;s running a Cyber Monday deal that happens to still be going today. Thankfully, because I missed it yesterday. The package includes all three of his book, 20 videos, and bonus material from Josh Earl. It&rsquo;s a $100+ value, and it&rsquo;s $44 today. If you&rsquo;re a Sublime Text fan, it&rsquo;s worth well more than the original sticker price, and this is a steal",
		"keywords": ["sublime","tutorial","cyber","monday","plugins","productivity","sublime","thankfully","writing","anyone","authored","because","bonus","bunch","buying","courses","followig","going","happens","highly","includes","knows","looking","mention","missed","original","package","personally","price","recommend","rsquo","running","steal","sticker","stuff","today","users","value","video","videos","while","worth","yesterday"]
	},{
		"title": "oTask 0.2.3",
		"url": "/2014/11/28/otask-0-dot-2-3/",
		"tags": ["omnifocus","otask","productivity"],
		"date": "Nov 28<span>th</span>, 2014",
		"ts": "1417222140",
		"summary": "I didn&rsquo;t mean to. I was absolutely working on something else. I just somehow ended up bugfixing and updating oTask for an hour. It was a vacation day, I don&rsquo;t care. Version 0.2.3 of this handy OmniFocus utility just adds a couple of command line flags, but greatly improves the accuracy of fuzzy matching and fixes a few Yosemite/Omnifocus 2 issues. Better project/context fetching methods, ignore unavailable Improved fuzzy match project/context name results -v &ndash;version support -l &ndash;list option for listing available projects and contexts -l can receive either p (project) or c (context), as well as an optional :filter on the argument (e.g. &lsquo;-l c:email&rsquo; shows all contexts containing a fuzzy match of &lsquo;email&rsquo;) -c switch can be used with the -l flag to output space-separated lists for use with shell completion The 0.2.3 code is on GitHub, the project page has been updated, and the gem has been pushed to the latest version. You can install/update with . That&rsquo;s all. As you were",
		"keywords": ["command","group","interface","changes","github","improved","omnifocus","omnifocus","version","yosemite","accuracy","argument","available","bugfixing","command","containing","context","contexts","couple","either","email","ended","fetching","filter","fixes","flags","fuzzy","greatly","handy","ignore","improves","install","issues","latest","listing","lists","lsquo","match","matching","methods","ndash","otask","optional","output","project","projects","pushed","receive","results","rsquo","separated","shell","shows","somehow","space","support","switch","unavailable","updated","updating","utility","vacation","version","working"]
	},{
		"title": "Black Friday Marked 2 sale",
		"url": "/2014/11/28/black-friday-marked-2-sale/",
		"tags": ["marked"],
		"date": "Nov 28<span>th</span>, 2014",
		"ts": "1417197840",
		"summary": "I&rsquo;m not a fan of Black Friday. You probably think I&rsquo;m a snob for saying that, and that&rsquo;s fine. I have some moral issus with rampant consumerism and unsustainable economics, as well as a fear of mothers who have come to stampeding into stores desperate for crap for their spoiled children. Plus, I don&rsquo;t like to go shopping even on quiet days. If you&rsquo;re reading this, it means you&rsquo;re not scampering through WalMart scavenging shelves of stuff that still isn&rsquo;t worth what it&rsquo;s priced at. You&rsquo;re at home wondering how pretentious I must be to write a blog post about hating Black Friday. That&rsquo;s when you realize that this is just the lead in to a shameless marketing ploy. Despite my inhibitions, it seems prudent to offer something for the holidays. So, Marked 2 is $5 off ($8.99 US) until the end of Cyber Monday, for both the App Store and the direct versions. Get a copy for yourself, and get one for a friend who doesn&rsquo;t know what to do with it. It&rsquo;s still more thoughtful than that Amazon Gift card you were planning to order. I&rsquo;m not a fan of Cyber Monday, either, for the record. It&rsquo;s the bastard child of Black Friday, raised on the spoils of undeserved wealth and fraught with its own conflicting inferiority and technical superiority complexes. Either way, I should have told you about Marked 2 earlier, but I had to find time to make that header image. It was important to the effectiveness of this campaign. Anyway, Marked 2. $8.99. From the Marked 2 website, or on the App Store. Stay safe, America",
		"keywords": ["black","christmas","cyber","deals","friday","holiday","monday","season","software","store","thanksgiving","walmart","amazon","america","anyway","black","cyber","either","friday","marked","monday","store","walmart","bastard","campaign","child","children","complexes","conflicting","consumerism","desperate","direct","doesn","earlier","economics","effectiveness","either","fraught","friend","hating","header","holidays","image","important","inferiority","inhibitions","issus","marketing","moral","mothers","offer","planning","pretentious","priced","prudent","quiet","raised","rampant","reading","realize","record","rsquo","saying","scampering","scavenging","seems","shameless","shelves","shopping","spoiled","spoils","stampeding","stores","stuff","superiority","technical","think","thoughtful","through","undeserved","unsustainable","versions","wealth","website","wondering","worth","write"]
	},{
		"title": "Sponsor: Mandrill",
		"url": "/2014/11/27/sponsor-mandrill/",
		"tags": ["sponsor"],
		"date": "Nov 27<span>th</span>, 2014",
		"ts": "1417089600",
		"summary": "Thanks to Mandrill for sponsoring BrettTerpstra.com this week! Mandrill is an email infrastructure service that started as an idea in 2010. That idea became reality in 2012, when Mandrill cannibalized a crew of MailChimp’s best engineers. Isolated from the rest of the team, they turned the idea from a skunkworks project into a product that outperforms competitor services. Growing fast and innovating faster, Mandrill is now the largest Email as a Service platform on the market, with more than 250,000 active customers. Use Mandrill to send automated one-to-one email like password resets and welcome messages, as well as marketing emails and customized newsletters. Mandrill is quick to set up, easy to use, and ridiculously stable. We made it for developers, who love documentation, integrations, high delivery rates, webhooks, and analytics. If you’re not comfortable with code and APIs, we recommend finding someone who is before getting started. Mandrill comes with a beautiful interface, flexible template options, custom tagging, and advanced tracking and reports. Mandrill is the only email infrastructure service with a mobile app that lets you monitor delivery and troubleshoot from wherever you are. It’s also powerful, scalable, and affordable. But you don’t have to take our word for it",
		"keywords": ["email","infrastructure","interface","mailchimp","mandrill","marketing","programming","brettterpstra","email","growing","isolated","mailchimp","mandrill","service","syndicate","thanks","zenqh","active","advanced","affordable","analytics","automated","beautiful","became","before","blockquote","brettterpstra","cannibalized","class","comes","comfortable","competitor","custom","customers","customized","delivery","developers","email","emails","engineers","faster","finding","flexible","getting","height","https","image","infrastructure","innovating","integrations","interface","largest","loading","mandrill","market","marketing","media","messages","mobile","monitor","newsletters","nofollow","noscript","options","original","outperforms","password","picture","platform","powerful","product","project","quick","rates","reality","recommend","reports","resets","ridiculously","scalable","service","services","skunkworks","source","sponsor","sponsored","sponsoring","srcset","stable","started","tagging","template","title","tracking","troubleshoot","turned","uploads","webhooks","welcome","wherever","width","xaquqw"]
	},{
		"title": "Web Excursions for November 25, 2014",
		"url": "/2014/11/25/web-excursions-for-november-25-2014/",
		"tags": ["bookmarks"],
		"date": "Nov 25<span>th</span>, 2014",
		"ts": "1416924000",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Gitdown A markdown preprocessor for GitHub that helps out with common and repetitive tasks such as table of contents generation, anchor references, variable transclusion, file includes, inserting file sizes, badges, dates, and more. You can even write custom helpers for it. The author, Gajus Kuizinas, offers a ton of great tools and code for JavaScript developers, too. Check out his repos on GitHub. Astral - Organize Your GitHub Stars Easily This is a great idea: a web-based interface for tagging, sorting, and viewing all of your starred GitHub repos. I currently use a set of Pinboard tags for similar purposes, which is nice because I don&rsquo;t have to deal with the repurcussions (e.g. notifications) of starring everything. I&rsquo;d love to see this integrated with a bookmarking tool of some kind&hellip; Naminum, the ultimate company name, startup name and website name on the web This actually offers some really good company name/domain ideas, and can check availability with a click of a suggestion. Gives Hover&rsquo;s name tool a run for its money. Viewport Sized Typography Yes, Chris wrote this in 2012, but I&rsquo;m just now finding time to play with it. The and sizing meaurements in CSS allow elements to size based on viewport dimensions. Played with it a bit and it&rsquo;s really cool in Chrome and Safari. I should probably start testing stuff in Firefox again soon&hellip; How to Generate Good Ideas: Methods to Try, Questions to Ask and Apps to Use A piece by Belle Cooper on coming up with and following through with new ideas. I&rsquo;m never at a loss for ideas (there are times I wish I were), but filtering them and executing the right ones is a challenge for everybody. In a not-at-all sort of way, but funny nonetheless.&nbsp;↩",
		"keywords": ["cascading","firefox","github","javascript","jquery","sheets","style","astral","belle","bellebcooper","bonus","check","chris","chrome","cooper","easily","firefox","gajus","github","gitdown","gives","hover","ideas","javascript","kickstarter","kuizinas","methods","naminum","organize","pinboard","played","questions","safari","setapp","sized","stars","typography","viewport","access","again","allow","anchor","astralapp","author","availability","backlink","badges","based","because","bookmarking","brilliant","brought","challenge","check","class","click","coming","common","company","contents","custom","dates","dedicated","developers","dimensions","domain","elements","endnotes","everybody","everything","excursions","executing","filtering","finding","fnref","footnote","footnotes","funny","gajus","generation","gitdown","github","great","hashkey","hashtag","hellip","helpers","helps","highlighter","https","hundreds","ideas","includes","inserting","integrated","interface","keyboard","kickstarter","language","markdown","meaurements","money","monthly","naminum","nonetheless","noteref","notifications","offers","partnership","piece","plaintext","preprocessor","projects","references","repetitive","repos","repositories","repurcussions","reversefootnote","right","rouge","rsquo","setapp","similar","sized","sizes","sizing","sorting","starred","starring","startup","stuff","subscription","suggestion","table","tagging","tasks","testing","through","times","today","tools","transclusion","tricks","twitter","typography","ultimate","variable","viewing","viewport","website","world","write","wrote","zapier"]
	},{
		"title": "Systematic and Overtired are moving!",
		"url": "/2014/11/24/systematic-and-overtired-are-moving/",
		"tags": ["overtired","podcast","systematic"],
		"date": "Nov 24<span>th</span>, 2014",
		"ts": "1416846120",
		"summary": "I&rsquo;m headed to surgery in a few minutes here, but wanted to be part of the big announcement. Systematic and Overtired have found new homes at the Electric Shadow Network. There are new feeds, but the episode numbering will continue, as will the quality of content that Christina and I strive to create. Get more info at the ESN blog (because I haven&rsquo;t been allowed to eat since midnight and I can&rsquo;t think anymore)",
		"keywords": ["christina","electric","network","podcasting","shadow","warren","christina","electric","network","overtired","shadow","systematic","allowed","announcement","anymore","because","content","continue","create","episode","feeds","found","haven","headed","homes","midnight","minutes","numbering","quality","rsquo","since","strive","surgery","think","wanted"]
	},{
		"title": "GitHub TOC Service 0.2.0",
		"url": "/2014/11/22/github-toc-service-0-dot-2-0/",
		"tags": ["github","markdown","scripting","service","tagging"],
		"date": "Nov 22<span>nd</span>, 2014",
		"ts": "1416675600",
		"summary": "I just uploaded the GitHub TOC Service version 0.2.0. Mostly because I needed a break from testing the next version of Marked, but also because it had a few bugs that needed fixing. &hellip;a script that works from the command line or as a Service. You can pipe Markdown to it, run it on a file, or select it and change it in place with the Service. You just put a tag in your document where you want the Table of Contents to go, and then run it. Any headers found after the point where the tag is will be indexed and linked Remembers depth and header style (stored in HTML comment) for repeat runs update an existing Table of Contents without having to specify settings again, just select and run CLI arguments override \"recorded\" settings (no_mmd will erase mmd in tags) If there&rsquo;s more than one h1, it recognizes them as sections Fixes for github header id generation formatting Defaults to 2 levels instead of 1 if no depth is specified Fixed outputting to a second file without needing redirection on the command line The CLI version is updated, and the Service can be downloaded below (double click to install on OS XMountain Lion or higher). GitHub TOC Service v0.2.0 Download GitHub TOC Service v0.2.0 A Service for generating tables of contents for GitHub readmes (and other Markdown files). Published 07/01/14. Updated 11/07/14. Changelog Donate &bull; More info&hellip; As a side note, here&rsquo;s another take on the process using only and to pull GitHub READMEs down and parse out a Table of Contents",
		"keywords": ["command","github","gollum","interface","markdown","readme","changelog","contents","defaults","donate","download","fixed","fixes","github","markdown","marked","mostly","multimarkdown","published","readme","readmes","remembers","service","table","updated","xmountain","again","another","arguments","because","below","break","change","click","command","comment","contents","creates","depth","document","documents","double","downloaded","erase","files","fixed","fixing","format","formatting","found","generating","generation","github","having","header","headers","hellip","higher","indexed","install","level","levels","linked","needed","needing","original","outputting","override","parse","point","process","readmes","recognizes","recorded","redirection","repeat","rsquo","scratches","script","second","sections","settings","specify","stored","style","tables","testing","updated","uploaded","using","version","where","working","works"]
	},{
		"title": "The WALTR winners",
		"url": "/2014/11/21/the-waltr-winners/",
		"tags": ["giveaway","iphone","macos"],
		"date": "Nov 21<span>st</span>, 2014",
		"ts": "1416596400",
		"summary": "If you missed it, you can catch my review here. Don&rsquo;t forget that it&rsquo;s only $14.95 for a little longer, then the price is going up to $29.95. If you have videos or audio in any non-iTunes format, grab a free trial and see how simple it is to get them on your iPhone in all the native players",
		"keywords": ["digital","itunes","media","blake","congratulations","david","elliott","harder","hyndman","mueller","waltr","walters","audio","catch","forget","format","giveaway","going","iphone","itunes","little","longer","missed","native","players","price","rsquo","simple","trial","videos","winners"]
	},{
		"title": "The Transporter private cloud [Sponsor]",
		"url": "/2014/11/20/the-transporter-private-cloud-sponsor/",
		"tags": ["sponsor"],
		"date": "Nov 20<span>th</span>, 2014",
		"ts": "1416484800",
		"summary": "A big thanks to Transporter for sponsoring BrettTerpstra.com this week. I&rsquo;ve been a happy Transporter user for quite a while! Check the end of the post for 10% off any Transporter purchase. The Transporter private cloud gives you the same great sharing and access capabilities of cloud services like Dropbox, but does it with private appliances that you own and control with no monthly fees.  It comes in two models – one with an internal drive and one that uses an external USB drive – starting at just $99. No recurring monthly fees means you can access and share all your stuff without worrying about capacity limits, bandwidth limits, or whether your friends have Pro accounts. You own and control the device, so you never have to wonder who has access or where your data is stored. Easiest offsite backup around. Simply add a second Transporter at another location like the office and they will automatically sync your files in real time. Once you install the device, you simply create an account and install the free apps for Mac, Windows, iOS and Android. You get a Transporter folder right in Finder or Explorer that works just like Dropbox. It couldn’t be any easier. Best of all, they keep adding features to make the product better and better. In addition to mobile camera auto-uploads, they just announced unlimited file versioning and undelete capabilities to make it a legitimate tool for collaboration. BrettTerpstra.com readers can get 10% off any Transporter purchase in the US and EU stores! Use the code in the US store, and in the EU store",
		"keywords": ["android","drobo","dropbox","mobile","transporter","windows","android","brettterpstra","check","dropbox","easiest","explorer","family","finder","simply","terpstra","transporter","windows","access","account","accounts","adding","advantages","announced","another","appliances","automatically","backup","bandwidth","brettterpstra","camera","capabilities","capacity","class","cloud","collaboration","comes","control","couldn","create","device","drive","easier","external","features","files","filetransporter","folder","friends","gives","great","happy","height","highlighter","https","image","install","internal","language","legitimate","limits","loading","location","media","mobile","models","monthly","myshopify","nofollow","noscript","office","offsite","original","picture","plaintext","private","product","readers","recurring","right","rouge","rsquo","second","services","share","sharing","simply","source","sponsoring","srcset","starting","store","stored","stores","strong","stuff","thanks","title","transporter","undelete","unlimited","uploads","versioning","where","while","width","wonder","works","worrying"]
	},{
		"title": "WALTR: amphetamines for your video collection (+giveaway)",
		"url": "/2014/11/18/waltr-amphetamines-for-your-video-collection-plus-giveaway/",
		"tags": ["appreview","iphone","video"],
		"date": "Nov 18<span>th</span>, 2014",
		"ts": "1416340800",
		"summary": "Softorino, the developers who brought you iBetterCharge (mentioned here a little bit ago), have just released a supercharged tool for putting your video collection on your iOS devices. It&rsquo;s called WALTR, and if you collect videos in any iTunes-incompatible formats, you&rsquo;ll love it. WALTR can upload videos in MKV, AVI, MP4, FLAC, and more formats (the promo claims \"any format ever created,\" but I don&rsquo;t have time to test that&hellip;) directly to your iPhone or iPad. You get native playback in all of your video apps, with no special software or converters required. You just plug your iOS device into USB and drag videos (or audio, too) onto WALTR&rsquo;s dropzone. It crunches them and uploads them to your device in one step. You don&rsquo;t even need to open iTunes. Honestly, I don&rsquo;t collect a lot of video files. When I watch movies, they&rsquo;re usually streaming, or I just download them in iTunes-supported formats. I had to go out of my way to test WALTR, but the results were pretty astounding. Here&rsquo;s a video from the developers showing an MKV version of Monty Python and The Holy Grail uploading to an iPhone 6 in under 60 seconds. The video is instantly available in Apple&rsquo;s \"Videos\" app. Impressive. You can download WALTR for free and try it out. A lifetime license is going to cost $29.95 US. There&rsquo;s a special launch price for one week, though, and you can pick it up for $14.95 US right now. I also happen to have five codes to give away, so if this is something you&rsquo;ve been wanting, enter a name and email below. The giveaway is open to everyone (the app is non-App Store, so you can use it even in places without MAS access). The Giveaway Robot will draw five random winners on Friday, November 21st, at 12pm Central. That way, if you don&rsquo;t win, you&rsquo;ll still have a chance to grab it at the intro price. See? I&rsquo;m always looking out for you. Sorry, this giveaway has ended. That was so many posts in one day. I should get a medal. Or a cookie",
		"keywords": ["apple","itunes","apple","central","friday","giveaway","grail","honestly","impressive","monty","python","robot","softorino","sorry","store","videos","waltr","access","astounding","audio","available","below","brought","called","chance","claims","codes","collect","collection","converters","cookie","created","crunches","developers","device","devices","directly","download","dropzone","email","ended","enter","everyone","files","format","formats","giveaway","going","happen","hellip","ibettercharge","iphone","itunes","incompatible","instantly","intro","launch","license","lifetime","little","looking","medal","mentioned","movies","native","places","playback","posts","price","promo","putting","random","released","required","results","right","rsquo","seconds","showing","software","special","streaming","supercharged","supported","under","upload","uploading","uploads","usually","version","video","videos","wanting","watch","winners"]
	},{
		"title": "On BitTorrent Sync security",
		"url": "/2014/11/18/on-bittorrent-sync-security/",
		"tags": ["cloud","security"],
		"date": "Nov 18<span>th</span>, 2014",
		"ts": "1416322800",
		"summary": "Hackito Ergo Sum published a security analysis on Sunday, and it&rsquo;s highly critical of the overall security of BitTorrent Sync. Hackito included this caveat: This is not a professional assessment but a community effort to analyze a solution used by the public. This is a quick response to some critics on this Hackito Session results, this is not a commercial report. I&rsquo;m a big Sync fan, and part of why I was drawn to it was the peace of mind I found in \"owning my cloud.\" I contacted Kevin Fu of BitTorrent to get their response. I&rsquo;m not a security expert by any stretch of the imagination, but the statement from Sync reflected my own reactions to some of the weak spots pointed out in the Hackito analysis. In short, the scariest parts of the report (to me) focus on the security and exposure of folder hashes. However, these hashes aren&rsquo;t private keys, they&rsquo;re essentially just identifiers for a folder. You can&rsquo;t be granted access without the secret key, and those are securely generated with options for one-time use, time limits, etc.. Looking over Hackitos analysis, it does appear that network addresses are leaked from local ports and through link.getsync.com which would offer attackers a target, but I&rsquo;ll leave it up to commenters to help me figure out the level of danger there. The website link.getsync.com does not see, or know about any local IPs / ports. It only sees the public IP of the machine – that’s no different from any other web site on the Internet. The tracker is aware of local IPs and ports, but: (1) taking advantage of that is difficult since these IPs can only be accessed over the local network; and (2) to gain this knowledge, one has to guess a Folder Hash, which is a 160 bit number – it is impossible to do so. Ultimately, the security of any peer-to-peer sync solution is in the hands of the user. I&rsquo;ll be the first to admit that I don&rsquo;t have enough security expertise to assess all of the potential dangers presented. I&rsquo;m personally satisfied with the response from Sync for now. I&rsquo;ll worry about my own network security first. BitTorrent Sync remains the most secure and private way to to move data between two or more devices; and for good reason - we’ve built it that way. Rigorous third-party security audits have been conducted to verify the product’s security architecture, validated by the attached report. But we take questions about Sync’s security very seriously&hellip;",
		"keywords": ["bittorrent","cryptography","public","bittorrent","compromising","folder","hackito","hackitos","hashes","however","internet","kevin","links","looking","rigorous","session","sunday","access","accessed","address","addresses","admit","advantage","analyze","appear","approval","architecture","assess","assessment","attached","attacked","attacker","attackers","audit","audits","automatically","aware","basic","before","between","bittorrent","bittorrentsync","blockquote","brettterpstra","browsers","built","cannot","cause","caveat","certificate","channel","claims","class","client","cloud","commenters","commercial","communication","community","comparing","completely","concern","conducted","configuration","connectivity","contacted","contain","contains","critical","critics","cryptographically","cryptography","danger","dangers","decrypting","default","dependent","devices","different","difficult","direct","discover","discovery","earlier","effort","element","encrypted","encryption","enough","essentially","established","exchange","experience","expert","expertise","explicit","exposure","features","figure","findings","fingerprint","firewall","first","focus","folder","found","friendly","generated","getsync","granted","guess","guessed","hackito","hackitoergosum","hands","hashes","height","highly","https","identifiers","image","imagination","impact","implementation","implemented","impossible","included","including","infrastructure","inviting","involved","itself","knowledge","ldquo","leaked","leave","level","limits","links","loading","local","machine","machines","media","mentioned","modern","modify","needs","network","noscript","offer","official","options","original","overall","owning","parts","party","passwords","peace","peers","personally","physical","picture","pointed","points","ports","potential","presented","privacy","private","product","professional","proper","protocol","public","published","questions","quick","rdquo","reactions","reflected","remains","report","required","response","results","reviewed","reviewing","rsquo","satisfied","scariest","secret","secure","securely","security","seriously","server","session","sharing","short","since","solution"]
	},{
		"title": "Solve command line mysteries with 'type'",
		"url": "/2014/11/18/solve-command-line-mysteries-with-type/",
		"tags": ["terminal"],
		"date": "Nov 18<span>th</span>, 2014",
		"ts": "1416319200",
		"summary": "I have dozens of aliases and functions available in any shell in any terminal on any of my machines. If I add Homebrew installs and PATH priorities, it can be a lot to keep track of. You probably know about the command. It returns the path to the binary which would be executed by a given command. If that command is an alias or function &mdash; or even binaries located outside of a default scope &mdash; it won&rsquo;t return anything. The alternative is the shell builtin . When you use , it will tell you whether it&rsquo;s an alias, a function, a file, or a hashed binary. For functions and aliases, it will also display the actual script or show you what command it&rsquo;s aliased to. That means that not only will explain that an alias is overriding a default binary, it will also show you the equivalent of at the same time. You can even use the option to show every possible destination of that command. Next time you&rsquo;re trying to remember what&rsquo;s aliased to what, what a function does, or why a command is giving unexpected results, turn to ",
		"keywords": ["commands","shell","homebrew","alias","aliased","aliases","available","binaries","binary","builtin","command","default","destination","display","dozens","executed","explain","function","functions","giving","hashed","installs","located","machines","mdash","options","outside","overriding","possible","priorities","remember","results","return","returns","rsquo","scope","script","shell","terminal","track","trying","unexpected"]
	},{
		"title": "Web Excursions for November 17, 2014",
		"url": "/2014/11/17/web-excursions-for-november-17-2014/",
		"tags": ["bookmarks","doing"],
		"date": "Nov 17<span>th</span>, 2014",
		"ts": "1416250800",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Choose to Start Doing, aka, Tracking Your Work Time Well, that&rsquo;s pretty cool. It uses choose with doing to provide a graphical interface of sorts&hellip; Crumbles Crumbles are kinda like reaction GIFs with a way bigger vocabulary&hellip; and all you have to do to make one is type. Happy Cyborg A bot that learns your personality and auto-responds to tweets. Could be useful for tech support accounts, at least&hellip; Sketch to App Store - Generate App Store images for all iPhone sizes from Sketch A handy tool for App Store developers who use Sketch. Flashlight &ndash; Spotlight&rsquo;s missing plugin system Holy cow. A plugin system for Yosemite Spotlight that adds all kinds of Alfred-esque capabilities. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["apple","crumbles","sketch","spotlight","store","alfred","check","choose","crumbles","cyborg","doing","flashlight","happy","mindmeister","sketch","spotlight","store","tracking","yosemite","accounts","bigger","boosting","brainstorming","brought","capabilities","choose","collaborating","collaborative","developers","doing","esque","excursions","graphical","handy","hellip","iphone","images","interface","kinda","kinds","learns","mapping","missing","ndash","partnership","personality","plugin","productivity","reaction","responds","rsquo","sizes","software","sorts","support","system","tweets","useful","vocabulary"]
	},{
		"title": "Invoking PopClip on an existing selection",
		"url": "/2014/11/17/invoking-popclip-on-an-existing-selection/",
		"tags": ["bettertouchtool","keyboard","popclip"],
		"date": "Nov 17<span>th</span>, 2014",
		"ts": "1416232800",
		"summary": "I love PopClip, and have done quite a bit of hacking around with it. Once you get used to it and come to expect it popping up, the only annoyance is that all your handy tools aren&rsquo;t there when you make a keyboard selection, or when you accidentally dismiss the popup before you choose the extension to run. Easily fixed, fortunately. PopClip provides a simple AppleScript command, , so you can script the popup with a single-line script: (Or, for giggles, in JavaScript on Yosemite.) Then all you need is an easy way to trigger that command. I use BetterTouchTool to expand all kinds of functionality on my Mac, so it&rsquo;s my natural choice. I simply save the command as an AppleScript file (), and then use the action. I have it triggered by a 2-finger swipe down from the top of my trackpad. You could also easily bind it to a keyboard shortcut in BetterTouchTool1. With this, any time I have text selected by any means, I can just swipe down on my trackpad with two fingers, starting with my fingers above the top edge, and get the PopClip menu for the current selection. The sequence below shows me selecting a paragraph using one of my KeyBindings, and then invoking PopClip with the two finger swipe. You can also use FastScripts with a keyboard shortcut. I haven&rsquo;t had much luck making it work with launchers (LaunchBar, Alfred, etc.), but I&rsquo;m sure there are ways.&nbsp;↩",
		"keywords": ["applescript","interface","alfred","applescript","bettertouchtool","easily","fastscripts","javascript","keybindings","launchbar","popclip","yosemite","above","accidentally","action","annoyance","appear","backlink","before","below","boastr","brettterpstra","choice","choose","class","command","dismiss","easily","endnotes","expand","expect","extension","fastscripts","finger","fingers","fixed","fnref","footnote","footnotes","fortunately","functionality","giggles","hacking","handy","haven","height","highlight","highlighter","https","invoking","kbshortcut","keybindings","keyboard","kinds","language","launchers","loading","making","media","natural","noscript","noteref","original","paragraph","picture","pilotmoon","plaintext","popclip","popclip&#39;","popclipinvoke","popping","popup","provides","reversefootnote","rouge","rsquo","script","selected","selecting","selection","sequence","shortcut","shows","simple","simply","single","source","srcset","starting","sweater","swipe","title","tools","topic","trackpad","trigger","triggered","uploads","using","width"]
	},{
		"title": "Safer command line paste in iTerm 2",
		"url": "/2014/11/14/safer-command-line-paste-in-iterm-2/",
		"tags": ["keyboard","shell","terminal"],
		"date": "Nov 14<span>th</span>, 2014",
		"ts": "1415996460",
		"summary": "If you&rsquo;ve ever copied a shell command from somewhere and accidentally included a trailing newline, you know that hitting paste in your terminal can run the command before you have a chance to edit it. There are a few ways around this, but here&rsquo;s a quick tip for iTerm 2 users. In Preferences -> Keys -> Global Shortcut Keys, add a new shortcut assigned to Control-Command-V (or Command-Option-V, or whatever makes sense and doesn&rsquo;t override existing shortcuts&hellip;). Set the action to \"Run Coprocess\" and enter as the command. When you trigger this, it will take whatever is in the clipboard and remove all the newlines from it, ensuring that it won&rsquo;t execute when pasted. Now, when you want to paste something directly to the command prompt, use this new shortcut instead of ⌘V for extra peace of mind",
		"keywords": ["carriage","character","newline","return","command","control","coprocess","global","preferences","shortcut","accidentally","action","assigned","before","chance","class","clipboard","command","copied","directly","doesn","ensuring","enter","execute","extra","hellip","highlighter","hitting","iterm","included","iterm","language","ldquo","makes","newline","newlines","override","paste","pasted","pbpaste","peace","plaintext","prompt","quick","rdquo","remove","rouge","rsquo","sense","shell","shortcut","shortcuts","somewhere","terminal","trailing","trigger","users","whatever"]
	},{
		"title": "Sponsor: TextExpander touch",
		"url": "/2014/11/13/sponsor-textexpander-3/",
		"tags": ["sponsor","textexpander"],
		"date": "Nov 13<span>th</span>, 2014",
		"ts": "1415880000",
		"summary": "I&rsquo;m pleased to have TextExpander touch from Smile as this week&rsquo;s sponsor. Seriously, if you&rsquo;re not using TextExpander on your iOS device (and your Mac) yet, you&rsquo;re missing out. Whether it&rsquo;s a simple email signature or several paragraphs of a standard response, you&rsquo;ll love how easy it is to use TextExpander to avoid typing the same thing over and over. With the new TextExpander touch 3 on iOS 8, there&rsquo;s a TextExpander custom keyboard so that you can expand abbreviations in all your apps on your iPhone, iPad, or iPod touch. Use your snippets in Mail, Safari, Messages, and more. Plus, over 60 apps offer enhanced TextExpander support, including Byword, Day One, Drafts, Fantastical, Launch Center Pro, OmniFocus, OmniOutliner, and more",
		"keywords": ["azerty","iphone","store","textexpander","byword","center","david","drafts","fantastical","launch","messages","omnifocus","omnioutliner","safari","seriously","smile","sparks","store","textexpander","abbreviations","available","avoid","custom","device","effort","email","enhanced","expand","expanding","great","iphone","including","keyboard","missing","offer","paragraphs","pleased","response","rsquo","saves","several","short","signature","simple","snippets","sponsor","standard","support","touch","typing","using","video"]
	},{
		"title": "The \"Shell Tricks\" video course",
		"url": "/2014/11/12/the-shell-tricks-video-course/",
		"tags": ["scripting","shell","terminal","video"],
		"date": "Nov 12<span>th</span>, 2014",
		"ts": "1415816280",
		"summary": "It&rsquo;s $11.99 for the full course, and covers tricks for working with files and directories on the command line, clever git tricks, web design tools, and more fun on the command line. If you&rsquo;re intrigued by some of my command-line posts but would prefer to have someone who&rsquo;s good at explaining things explain things, check the OS X Shell Tricks video course out",
		"keywords": ["command","github","interface","check","irelan","mijingo","shell","tricks","check","clever","command","covers","design","directories","explain","explaining","files","intrigued","posts","prefer","rsquo","shell","tools","tricks","turned","video","working"]
	},{
		"title": "SearchLink 2.2.0. Awesome.",
		"url": "/2014/11/10/searchlink-2-dot-2-0-awesome/",
		"tags": ["markdown","searchlink","writing"],
		"date": "Nov 10<span>th</span>, 2014",
		"ts": "1415638860",
		"summary": "I&rsquo;m officially announcing SearchLink 2.2.0 today. It&rsquo;s still free (for now), and I&rsquo;m really excited about this update. The documentation has been updated and the changelog is immense. If you&rsquo;re new to SearchLink, it&rsquo;s a way to search for links on the fly without switching to your web browser. It can search for apps on iTunes and the Mac App Store, run Google searches and spell checks, find music by albums and artists, and automatically add your affilliate tokens to Amazon and iTunes link results. And more&hellip; I simplified the syntax and added new configuration options, including the ability to validate search results. You can even set options per-search with short flags. There are more search options, better defaults, and some new syntax that won&rsquo;t get in your way if you never need it. Whether you&rsquo;re new to SearchLink or upgrading, be sure to take a look at the revised documentation. Almost all of the changes are backward-compatible, but it&rsquo;s worth knowing about the new syntax and options. Here&rsquo;s the changelog in its raw form, and the download link is at the end. 2.2.0 Changelog quotes no longer required around additional search terms if search terms in parenthesis start with a \"+\", they&rsquo;re appended to the link text for the search, otherwise they replace it A tilde (~) at the end of a single-string search with no bracket syntax checks the clipboard for a url and wraps the selected text with it if found can be used with the syntax at the end to create a reference with the selected text as the title ignores and strips (link only) and syntax !example.com searches become site-specific web searches for single-line searches, text in parenthesis is searched (as additional search terms) but not included in the link text in single line searches without format, text surrounded in quotes becomes the link text is the same as !spell search replaces selection with most relative spelling correction works on entire blocks of text you can use a colon in a bracketed search, and if it&rsquo;s alone on a line it will create a reference link definition if an identical link results in future searches, it will re-use the id of the generated reference definition if the resulting link already exists, any defined reference id will be replaced with the existing definition&rsquo;s id the reference definition will be moved to the end of the document&hellip;",
		"keywords": ["google","locator","resource","search","almost","amazon","changelog","donate","download","error","google","headers","markdown","multiple","output","published","stdout","searchlink","shortcuts","simpler","store","updated","ability","accepts","added","adding","afari","affilliate","albums","alone","announcing","appearance","appended","applications","argument","artists","automatically","available","backward","becomes","block","blocks","bookmarks","bracket","bracketed","breaks","browser","cancels","certain","changed","changelog","changes","checks","chrome","clipboard","collected","colon","command","comment","compatible","config","configuration","configure","configured","continues","correction","country","create","custom","debug","default","defaults","defined","definition","definitions","deprecated","detects","disable","document","download","duplicate","easier","editor","encoded","engine","entire","error","errors","example","excited","exists","fallback","fenced","files","first","flags","footnotes","forced","forces","format","formatting","found","generated","global","grouped","groups","headers","hellip","highlighted","highlighting","history","itunes","identical","ignored","ignores","immense","improvements","included","including","indented","inline","input","jumps","knowing","leaving","links","longer","looking","lowercases","lowercasing","match","metadata","moved","multi","music","newlines","numbers","offending","officially","ookmarks","options","output","outputs","overridden","overwrite","overwriting","parenthesis","passed","pattern","position","potentially","prefix","processing","properly","quotes","random","relative","removed","repeats","replace","replaced","replacement","replacements","replaces","reports","required","restored","resulting","results","returned","rsquo","running","safari","search","searched","searches","searching","searchlink","selected","selection","selections","separated","service","short","showing","simplified","simply","single","space","specific","spell","spelling","starting","string","strips","surrounded","surrounding","switched","switching","syntax","terms","tilde","title","titles"]
	},{
		"title": "iThoughtsX and Marked 2, together at last",
		"url": "/2014/11/09/ithoughtsx-and-marked-2-together-at-last/",
		"tags": ["marked","mindmapping","writing"],
		"date": "Nov 9<span>th</span>, 2014",
		"ts": "1415561400",
		"summary": "I&rsquo;ve mentioned previously that I&rsquo;ve been using mind maps frequently when writing. It&rsquo;s an excellent way to structure and flesh out a piece of any length. Create sections, add topics, and even start fleshing out paragraphs using notes. I export the mind map to various formats and continue writing in an editor. To that end, I&rsquo;m excited to announce an integration that I guarantee will make the process more effective (and fun) for people who want to write in this manner. iThoughtsX is currently my favorite mind mapping tool on OS X. Marked 2 is, obviously, my favorite way to preview Markdown. Now they work together. You can simply drag an iThoughtsX map file to Marked, and it will start previewing an outline of your map as you work. Every time you save your map in iThoughts, you&rsquo;ll see the changes in the resulting Markdown document, previewed in whatever theme you&rsquo;re working with. This integration is live now in the current versions of both apps. To use it, you need to enable \"Generate Markdown Preview\" under the advanced preferences of iThoughtsX. Your outline is generated clockwise around the center node. Here&rsquo;s a video from Craig Scott, the developer of iThoughts, showing the required settings and the integration in action. Future improvements will likely include the option to mirror the collapsed state of nodes and other fine tuning, but it&rsquo;s already a very useful tool. I&rsquo;m really excited about this, and hope to bring more integrations to Marked soon. The TextBundle format opens up a lot of possibilities! Check out iThoughtsX and Marked 2 on the Mac App Store. There are also free trials available of both iThoughtsX and Marked 2 from their respective websites. Before I go, I&rsquo;d like to acknowlege a severe bug in Marked 2 on Yosemite which occurs after an export. If you&rsquo;ve run into this bug, know that I&rsquo;m working to fix it and release an update as quickly as possible",
		"keywords": ["apple","store","before","check","craig","create","markdown","marked","preview","scott","store","textbundle","yosemite","acknowlege","action","advanced","announce","available","bring","center","changes","clockwise","collapsed","continue","developer","document","editor","effective","excellent","excited","export","favorite","flesh","fleshing","format","formats","generated","guarantee","ithoughts","ithoughtsx","improvements","integration","integrations","length","likely","mapping","mentioned","mirror","nodes","notes","occurs","opens","outline","paragraphs","people","piece","possibilities","possible","preferences","preview","previewed","previewing","previously","process","quickly","release","required","respective","resulting","rsquo","sections","settings","severe","showing","simply","structure","theme","together","topics","trials","tuning","under","useful","using","various","versions","video","websites","whatever","working","write","writing"]
	},{
		"title": "Automating OS X Automator scripting",
		"url": "/2014/11/06/automating-os-x-automator-scripting/",
		"tags": ["automator","scripting"],
		"date": "Nov 6<span>th</span>, 2014",
		"ts": "1415314560",
		"summary": "I write a lot of Services using Automator these days. They usually consist of one \"Run Shell Script\" action and possibly a few other Automator tasks. Editing a script in the Automator text fields is a horrible experience, so I end up doing a lot of copy-switch-pasting between my editor and Automator. This script lets me make the process simple. You can find the script in this gist. It&rsquo;s pretty simple to use. If you run the script with the path to a file as the only argument, it will parse the file and return the configuration string for the \"Run Shell Script\" action. If there is more than one \"Run Shell Script\" action in the workflow, it will return a list of UUIDs you can copy and paste from. You can put it anywhere in the file, and there can be multiple instances if the same script updates multiple Automator Workflows. You can also use instead of , depending on the comment syntax for the language your script is in. When you run the contents of your script through (with no arguments), it will find the \"Workflow:\" lines and update the specified workflows/actions. You can test immediately without opening Automator. From the command line, this would look like . Side note: The script includes a version of the Ruby class with very minor modifications (to output non-indented PLISTs). This means you don&rsquo;t need to install any gems to run it. I have this set up as a Sublime Text build system, which is simply a matter of saving a file called in your folder with contents like this, edited to reflect your paths. When working on a script in Sublime, just choose \"Automator Workflow\" as your build system, and hit ⌘B whenever you want to update the workflow",
		"keywords": ["automation","automator","automator","editing","plists","packages","script","services","shell","sublime","uuids","workflow","workflows","action","actions","anywhere","argument","arguments","automator","between","brettterpstra","build","called","choose","class","command","comment","configuration","consist","contents","depending","doing","edited","editor","experience","external","fields","filepath","folder","github","height","highlight","highlighter","horrible","https","image","includes","indented","install","language","ldquo","loading","media","minor","modifications","multiple","noscript","opening","original","output","parse","paste","pasting","paths","picture","plaintext","plist","possibly","process","rdquo","reflect","relates","return","rouge","rsquo","saving","script","simple","simply","source","srcset","string","sublime","switch","syntax","system","tasks","through","title","ttscoff","updates","uploads","using","usually","version","whenever","width","workflow","workflows","working","write"]
	},{
		"title": "Sponsor: EaseUS Data Recovery Wizard",
		"url": "/2014/11/06/sponsor-easeus-data-recovery-wizard/",
		"tags": ["sponsor"],
		"date": "Nov 6<span>th</span>, 2014",
		"ts": "1415275200",
		"summary": "I&rsquo;d like to thank EaseUS Data Recovery Wizard for sponsoring BrettTerpstra.com this week. Have you ever suffered from data loss due to deleting, formatting, partition loss, partition inaccessibility, virus attack or other unknown reasons? The precious family photos and videos, the paper or report you&rsquo;ve been working on forever just disappeared! This happens to people everyday. If it happens to you, don&rsquo;t panic. First, stop doing anything else on your computer to avoid more damage. Then, use data recovery software like EaseUS Data Recovery Wizard to really get the job done right. There are six categories in which to scan, including Graphics, Audio, Document, Video, Email and Other. If you know what kind of files you lost, like photos, movies, music, etc., you can select the file types to start recovering. By choosing specific types of files, the scan speed will be greatly accelerated. If you can&rsquo;t open the partitions, or the partitions are formatted, you will have to select a location where the scan should start. The location can be your Desktop, Windows Libraries, and Hard Drives (C, D, E, F). The first scan will be a quick one, and it will list all the files that were simply deleted from the Recycle Bin. If the files you need cannot be found from the first scan, or the recovered files cannot be opened correctly, the program will pop up with the option to deep scan. After the deep scanning finishes, you can preview and recover the files you need. Now you don&rsquo;t have to pay a ton of money to IT consultants for data recovery, just do it yourself at home with EaseUS Data Recovery Wizard. There&rsquo;s no more need to panic when you lose data, but above all, backing up important files before anything bad happens is the best way to protect yourself from data loss",
		"keywords": ["easeus","windows","recovery","audio","brettterpstra","desktop","document","drives","easeus","email","first","graphics","libraries","recovery","recycle","syndicate","video","windows","wizard","above","accelerated","attack","avoid","backing","before","cannot","categories","choosing","computer","consultants","correctly","damage","deleted","deleting","disappeared","doing","everyday","family","files","finishes","first","forever","formatted","formatting","found","greatly","happens","important","inaccessibility","including","location","money","movies","music","opened","panic","paper","partition","partitions","people","photos","precious","preview","program","protect","quick","reasons","recover","recovered","recovering","recovery","report","right","rsquo","scanning","simply","software","specific","speed","sponsored","sponsoring","suffered","thank","types","unknown","videos","virus","where","working"]
	},{
		"title": "Bytes: file size conversion Service",
		"url": "/2014/11/03/bytes-file-size-conversion/",
		"tags": ["scripting","service"],
		"date": "Nov 3<span>rd</span>, 2014",
		"ts": "1415023200",
		"summary": "This will probably be part of SearchLink someday, but I decided to stop adding features and get that shipped as soon as possible (just have to rewrite most of the documentation). So here&rsquo;s this piece of it as a Service and a CLI. It&rsquo;s a conversion tool for file sizes. You can use it a few ways. First, just pass a number representing bytes to it. It will find the human-readable representation of it, ranging from Kilobytes to Yottabytes. Example: This is the same as the \"to human\" argument, unless the number already has a size name in it (245mb), in which case it would just return the input. If you add \"to machine\" to a number like that, you&rsquo;ll get the byte equivalent back: The script works with STDIN pipes or command line arguments, the former making it better for use in a Service. It will also look for its recongized syntaxes surrounded by parentheses in a larger block of text, so you can use it just like SearchLink: The file had a size of (24mb to machine), which converted to (25165824 to human) (that&rsquo;s (24mb in kb) in Kilobytes). The file had a size of 25165824, which converted to 24.00MB (that&rsquo;s 24576.00KB in Kilobytes). I don&rsquo;t know how many people will ever have a use for this, but I liked the regex enough that I figured I should share it1. Download the System Service below, or grab the command-line script on GitHub. To use the script, just make it executable and put it in your path. To use the Service, unzip and double click it to install, then select text containing its syntax and right click. Bytes Service v1 Download Bytes Service v1 Convert file sizes between machine and human-readable formats Published 11/03/14. Updated 11/03/14. Changelog Donate &bull; More info&hellip; The actual genesis of this was prepping for a recording of Random Trek where Data says he has 800 quadrillion bytes of memory capacity. I was curious what that translated to&hellip; (it&rsquo;s 88.82 petabytes)&nbsp;↩",
		"keywords": ["bytes","conversion","bytes","changelog","convert","donate","download","example","first","github","human","kilobytes","measure","piped","published","random","stdin","searchlink","service","system","tuvbv&#39;","updated","yottabytes","adding","alpha","argument","arguments","background","backlink","becomes","below","between","block","blockquote","brettterpstra","bytes","capacity","changelog","class","click","command","containing","conversion","converted","cover","curious","decided","description","dlbox","donate","double","download","downloads","endnotes","enough","episode","executable","fathom","features","figured","fnref","footnote","footnotes","formats","former","genesis","github","gradient","height","hellip","highlight","highlighter","https","human","image","information","input","install","language","larger","ldquo","liked","linear","loading","machine","making","media","memory","multiplier","noscript","noteref","onclick","original","parentheses","people","petabytes","picture","piece","pipes","plaintext","possible","prepping","published","quadrillion","randomtrek","ranging","rdquo","readable","recongized","recording","regex","repeat","representation","representing","return","reversefootnote","rewrite","right","rouge","rsquo","rtrek","script","share","shipped","sizes","someday","source","specify","srcset","style","surrounded","syntax","syntaxes","title","trackgoal","translated","ttscoff","unzip","updated","uploads","where","width","works"]
	},{
		"title": "Web Excursions for November 01, 2014",
		"url": "/2014/11/01/web-excursions-for-november-01-2014/",
		"tags": ["bookmarks"],
		"date": "Nov 1<span>st</span>, 2014",
		"ts": "1414876860",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Versal/word2markdown A 9-step script that uses HTML tidy, Pandoc, and a few Node modules to do the best job I&rsquo;ve seen of converting DOCX files to Markdown. It requires that you have Microsoft Word installed, but images are exported, tables preserved, and other nice details come through. FichteFoll/CSScheme Creating custom themes for text editors doesn&rsquo;t get much easier than this. Use Sass/SCSS, Stylus, or CSS to define your scopes and attributes, then turn it into a Theme for Sublime or TextMate (or any tmtheme-compatible editor). TapCellar An app from the mind of MacDrifter for beer nerds. Browse 30,000 beers and journal them (with images) as you try them. You can \"grade\" them, then filter, sort, and save custom views. I only wish we had more good beers available in my little town. Use Automator variables anywhere in a workflow I&rsquo;ve been finding Automator infinitely frustrating lately, but I found this little gem while looking for something else. Tested on Mavericks, still works there. I&rsquo;m not sure about Yosemite yet. SFTP, FTP and S3 in the Sublime Text sidebar (with ExpanDrive) I love ExpanDrive for working with just about every kind of remote filesystem I ever run into (I especially like mounting Dropbox as a network drive on systems where I don&rsquo;t need my whole Dropbox installed). This tip for using mounted directories in Sublime Text works well (as well as any remote editing solution can). The background update lets you edit without waiting for the transfer on every save. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["markdown","microsoft","sublime","automator","backblaze","browse","csscheme","check","creating","dropbox","expandrive","fichtefoll","macdrifter","markdown","mavericks","microsoft","pandoc","stylus","sublime","tapcellar","tested","textmate","theme","versal","yosemite","affordably","anywhere","attributes","available","background","backs","beers","brought","cloud","compatible","computer","converting","custom","define","details","directories","doesn","drive","easier","editing","editor","editors","entire","especially","everything","excursions","exported","files","filesystem","filter","finding","found","frustrating","grade","images","infinitely","installed","journal","little","looking","markdown","modules","mounted","mounting","nerds","network","partnership","preserved","reliably","remote","requires","rsquo","scopes","script","securely","sidebar","solution","systems","tables","themes","through","tmtheme","today","using","variables","views","waiting","where","while","whole","workflow","working","works"]
	},{
		"title": "The MatchData object in Ruby gsub blocks",
		"url": "/2014/10/28/the-matchdata-object-in-ruby-gsub-blocks/",
		"tags": ["programming","regex","scripting"],
		"date": "Oct 28<span>th</span>, 2014",
		"ts": "1414531740",
		"summary": "This post is absolutely only of interest to Ruby programmers. Just to save you some time. I use regular expressions in Ruby a lot. One of the features I&rsquo;ve come to use frequently is the block syntax for calls. Whereas the other syntaxes for really only provide back referencing for capture groups in replacements, the block syntax allows much more flexibility. You have access to the variables for capture groups, but you also have the full power of the Regexp class available to the captures within the block. Just in case anybody else doesn&rsquo;t know, here&rsquo;s the scoop&hellip; Typically, (the global version of ) is used as a pattern/replacement method with simple , back references to make use of capture groups in the pattern (regular expression). You can also pass a hash as the second argument, and do literal string replacement based on secondary matching. These are essential tools for quick string manipulations. As you move on to parsing larger quantities of text, you usually want to do something further with the matches, whether it&rsquo;s additional logic or just more complex manipulations than simple syntax provides. That&rsquo;s where the block format is perfect. Within that block, I always expected \"match\" to carry the full set of MatchData methods with it, but it&rsquo;s just the full string of the overall match. You do have access to the operators, which you can use for referencing capture groups (,,&hellip;) in the match. However, you also have access to , which provides a object for the current iteration with all of the capture group&rsquo;s methods such as , and , the original string (), etc.. You can even get the \"pre\" and \"post\" parts of the original string for checking context within a broader search expression. I won&rsquo;t go into a detailed example, but here&rsquo;s sample usage; You can actually leave off the block param () entirely. The \"match\" variable in this case is the equivalent of . You could also use . The object provides direct access to capture group strings when addressed as an array (), 0 being the full matched string. Store the object for each iteration in a variable at the top of the block. If you call any Regexp methods within the block, will be modified. For short runs, you can put the block format in a single line with bracket syntax and ternary operators. Here&rsquo;s an overdrawn example to illustrate a simple one-liner: Loads of fun. Of course this is only useful for string&hellip;",
		"keywords": ["blocks","expression","regular","&#39;cheshire","&#39;cheshire&#39;","&#39;cat&#39;","&#39;grin&#39;","can&#39;t","cheshire","hatter","however","loads","matchdata","regexp","store","string","stringscanner","typically","we&#39;re","within","access","aceghns","addressed","allows","alpha","among","among","anybody","argument","array","available","based","before","block","bracket","brettterpstra","broader","calls","can&#39;t","capture","captures","carry","certain","changes","checking","class","complex","context","detailed","direct","doesn","downcase","entirely","eseht","essential","example","expected","expression","expressions","features","flexibility","format","gilnpuzz","global","group","groups","hatter","haven","height","hellip","highlight","highlighter","https","interest","iteration","language","larger","ldquo","leave","length","libdoc","limit","liner","literal","loading","logic","looks","manipulation","manipulations","match","matched","matches","matching","media","method","methods","modified","names","noscript","object","offset","operators","original","overall","overdrawn","people","param","parsing","parts","pattern","people","picture","plaintext","point","processing","programmers","provides","punct","puzzling","quantities","quick","rdquo","references","referencing","regular","replacement","replacements","reverse","rouge","rsquo","sample","scoop","search","second","secondary","short","simple","single","slightest","source","split","srcset","stdlib","string","strings","strscan","studying","syntax","syntaxes","ternary","title","tools","upcase","uploads","usage","useful","usually","variable","variables","version","we&#39;re","where","width","within","wouldn&#39;t","wouldn&#39;t"]
	},{
		"title": "Web Excursions for October 27, 2014",
		"url": "/2014/10/27/web-excursions-for-october-27-2014/",
		"tags": ["bookmarks"],
		"date": "Oct 27<span>th</span>, 2014",
		"ts": "1414414800",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Marksy Ostensibly it&rsquo;s a Chrome plugin that translates between various \"humane\" markup formats (Markdown, Textile, MediaWiki, etc.). It&rsquo;s Pandoc on steroids. The cool part, though, is that it has an API that you can incorporate into all kinds of tools (e.g. the Sublime Text package). Tiny Robot Software Cool little utility for Yosemite that pipes input from the command line to a visual selection and returns output to STDOUT. Also see AppGrid, a speedy window layout manager from the same developer. iStats A command-line tool for displaying the CPU temperature, fan speeds and battery information on your Mac, all at once or separately (great for GeekTool, Übersicht, etc.). Laplock I like this idea. Have your Apple laptop set off an alarm and alert you via SMS or Yo when disconnected from a power source while locked. nvalt-prime \"An nvALT Preview Theme on Steroids.\" Really cool usage of nvALT&rsquo;s custom template capabilities, enabling GFM Markdown, GitHub checkboxes, Font Awesome icons, code highlighting, and \"User Story\" detection and formatting for agile folks",
		"keywords": ["apple","geektool","github","markdown","mediawiki","appgrid","apple","awesome","chrome","cleanmymac","convert","geektool","github","laplock","markdown","marksy","mediawiki","ostensibly","pandoc","preview","robot","stdout","software","steroids","story","sublime","textile","theme","yosemite","absolute","agile","alarm","alert","appgrid","battery","bawigga","bersicht","between","border","brought","capabilities","checkboxes","choose","chris","command","custom","detection","developer","disconnected","display","displaying","enabling","excursions","folks","formats","formatting","github","great","height","hidden","highlighting","https","humane","istats","icons","impactradius","incorporate","information","input","johnmacfarlane","kinds","laplock","laptop","layout","ldquo","learn","little","locked","macpaw","manager","marksy","markup","nvalt","nvalt","output","package","pandoc","partnership","pipes","plugin","position","prime","rdquo","returns","rsquo","selection","separately","source","speed","speeds","speedy","steroids","style","temperature","template","thomscode","tinyrobotsoftware","tools","translates","usage","utility","various","visibility","visual","while","width","window"]
	},{
		"title": "Bitlyize 1.5",
		"url": "/2014/10/25/bitlyize-1-dot-5/",
		"tags": ["bitly","macos","service"],
		"date": "Oct 25<span>th</span>, 2014",
		"ts": "1414284660",
		"summary": "I&rsquo;ve been working on multiple \"free time\" projects for a while, mostly updates to existing projects. The changelogs have gotten long enough that writing them up has been an imposing task. I have a doing update that turns it into a very capable time tracking/reporting tool, a major update to SearchLink that simplifies syntax and makes it even more flexible, big updates for Marked, and more little things than I can remember without consulting my \"what was I doing\" log. I figured I&rsquo;d start the ball rolling with a simple one. Bitlyize is a System Service that converts all links in the selected text to bit.ly links using an authenticated account. I&rsquo;ve updated it in a few ways for version 1.5. It generates Amazon affiliate links for any detected Amazon links It does a smarter job of creating iTunes affiliate links It functions better as a command line utility It works as a library that can be included in other Ruby scripts If it receives a single url that&rsquo;s already shortened (with Bitly), it expands it to the original url I&rsquo;ll add a project for it soon and include documentation for the library API and command line options. For now, there are two Services available in the zip file below: Bitlyize, and Bitlyize to Clipboard. The former modifies selected text in place, the latter leaves the original text and puts the results in the clipboard (especially handy for quickly shortening a link in a URL field and pasting it into an email). Some manual configuration is required. You need a bit.ly API key, and if you want automatic affiliate links, you&rsquo;ll need to include information for iTunes and/or Amazon affiliate accounts. There&rsquo;s support for custom Bitly domains as well. To edit, open the Service in Automator and look for the variables at the top of the Run Shell Script action. It&rsquo;s not the most convenient configuration method, but Services don&rsquo;t offer a lot of options. I&rsquo;m exploring Yosemite extensions right now, and I think this would make a decent one once I start creating them. It would make configuration and usage easier, I hope. The source code is available here, and you can use it as a CLI or include it as a library (for what it&rsquo;s worth). Documentation coming soon. Bitlyize Service v2.0.0 Download Bitlyize Service v2.0.0 An OS X Service for quickly creating bit.ly short urls Published 04/30/14. Updated 12/24/23. Changelog Donate &bull; More info&hellip",
		"keywords": ["amazon","clipboard","itunes","service","system","amazon","automator","bitly","bitlyize","changelog","clipboard","donate","download","marked","published","script","searchlink","service","services","shell","system","updated","yosemite","account","accounts","action","affiliate","authenticated","automatic","available","below","capable","changelogs","clipboard","coming","command","configuration","consulting","convenient","converts","creating","custom","decent","detected","doing","domains","easier","email","enough","especially","expands","exploring","extensions","field","figured","flexible","former","functions","generates","gotten","handy","hellip","itunes","imposing","included","information","latter","leaves","library","links","little","major","makes","manual","method","modifies","mostly","multiple","offer","options","original","pasting","project","projects","quickly","receives","remember","reporting","required","results","right","rolling","rsquo","scripts","selected","short","shortened","shortening","simple","simplifies","single","smarter","source","support","syntax","think","tracking","turns","updated","updates","usage","using","utility","variables","version","while","working","works","worth","writing"]
	},{
		"title": "Recap: Oct 22nd, 2014",
		"url": "/2014/10/22/recap-oct-22nd-2014/",
		"tags": ["recap"],
		"date": "Oct 22<span>nd</span>, 2014",
		"ts": "1414022400",
		"summary": "Marked 2 and Yosemite (Oct 21st) News on the latest version of Marked, now compatible with Yosemite. Direct purchase available now, App Store update pending approval! App Review Tuesdays (Oct 21st) My thoughts on one simple way to improve the lives of developers in Apple&rsquo;s App Stores. BitTorrent Sync vs. The Cloud (Oct 22nd) This is why is use BitTorrent Sync for, well, sync. John Roderick dot dot dot Be sure to check out the 4th and final(?) Systematic with John Roderick. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["markdown","marked","roderick","store","apple","bittorrent","cloud","direct","marked","recaps","roderick","store","stores","systematic","tuesdays","yosemite","approval","available","check","compatible","curated","developers","digest","format","improve","interest","latest","lives","pending","posts","quick","rsquo","simple","specifically","subscribe","summary","thoughts","updates","version","weekly"]
	},{
		"title": "BitTorrent Sync vs. The Cloud",
		"url": "/2014/10/22/bittorrent-sync-vs-the-cloud/",
		"tags": ["cloud"],
		"date": "Oct 22<span>nd</span>, 2014",
		"ts": "1413997200",
		"summary": "BitTorrent has released the details of a comprehensive speed test they conducted to compare Sync to cloud-based services (Dropbox, OneDrive, Google Drive). The results are impressive. Using a 1.36GB video file, they tested the time to sync between two MacBook Pros on the same network. Sync performed up to 16x faster than the cloud, transferring the video file in 41 seconds between the machines. There are plenty of caveats to note (see the full post from BitTorrent), but the test is replicable and well-planned. If you use the cloud for syncing between machines, Sync is clearly the winner. If you&rsquo;re using cloud services for sharing files and remote storage, there are more factors to consider. Sync is a peer-to-peer platform, optimized for direct connections between machines without the need to upload to the cloud, then download to the other machine. Even considering Dropbox&rsquo;s LAN sync, though, Sync trumped it with 16x the speed. Personally, I use Sync between my two local Mac minis, my MacBook Air, and my colocated Mac mini. The remote mini serves as a \"cloud\" that I own, and functions as a backup. With Sync&rsquo;s archive support, it&rsquo;s a Dropbox replacement for most of my needs. I still use Dropbox, primarily for its broad compatibility with the iOS apps I use, but Sync is definitely the fastest way for me to keep identical data on multiple machines, including an iOS app for access on the go. I also use Transporter, and have experimented with ownCloud. With Transporter&rsquo;s recently-added support for versioning, it&rsquo;s a strong contender, especially if you want cloud functionality without trusting your data to a third party. When it comes to transfer speed, though, Sync is still the winner. For more information on the test, head to the BitTorrent blog, and if you haven&rsquo;t tried Sync yet, check it out",
		"keywords": ["apple","cloud","drive","dropbox","google","network","storage","bittorrent","drive","dropbox","google","macbook","onedrive","personally","transporter","using","access","added","archive","backup","based","between","broad","caveats","check","clearly","cloud","colocated","comes","compare","compatibility","comprehensive","conducted","connections","consider","considering","contender","definitely","details","direct","download","especially","experimented","factors","faster","fastest","files","functionality","functions","haven","identical","impressive","including","information","local","machine","machines","minis","multiple","needs","network","optimized","owncloud","party","performed","planned","platform","plenty","primarily","recently","released","remote","replacement","replicable","results","rsquo","seconds","serves","services","sharing","speed","storage","strong","support","syncing","tested","third","transferring","tried","trumped","trusting","upload","using","versioning","video","winner"]
	},{
		"title": "App Review Tuesdays",
		"url": "/2014/10/21/app-review-tuesdays/",
		"tags": ["appstore"],
		"date": "Oct 21<span>st</span>, 2014",
		"ts": "1413922080",
		"summary": "*Updated: * I didn&rsquo;t know about it when I thought of this, but there&rsquo;s a relatively large initiative already started by Luc Vandal called #RateFriday. I don&rsquo;t care which day you choose to do your civic App Store duty, I&rsquo;m just happy you&rsquo;re doing it. Here&rsquo;s a thought, albeit a slightly cheesy one: let&rsquo;s institute App Review Tuesdays. It&rsquo;s like Casual Friday, but it will make the App Stores better places instead of just revealing your poor understanding of Business Casual. App Store reviews matter to App developers, especially those who have apps priced over $2.99. An honest review is helpful to other potential buyers, and a few (valid) good reviews can make a big difference. The problem I see most often is that people use reviews as a customer support forum, leaving bad reviews based on bugs that could have been easily addressed by going straight to the developer. By leaving a one-star review on an app you&rsquo;re otherwise satisfied with, you&rsquo;re affecting the developers rankings while simultaneously preventing them from contacting you to help you out. It&rsquo;s a lose-lose. On the flip side, if you attempt to contact a developer and don&rsquo;t receive a response, or get a response that only makes things worse, a review stating such can be helpful. I&rsquo;ve never met a good developer or company that would let that happen, so negative reviews help weed out the truly bad or scammy devs. The best way to help your favorite developers out in the App Store is to leave positive reviews wherever they&rsquo;re deserved. A rating is great, and a thoughtful review is even better. When it comes to $20+ apps, interested customers are going to read a few reviews and make a decision pretty quickly. Give them something worthwhile to read. Also note that apps you might have reviewed before may deserve updates. The App Stores separate review counts by versions, so as updates and fixes come out, you might want to revise your ratings and reviews. So here&rsquo;s what I&rsquo;m thinking. Set a repeating reminder in your favorite task management app or in your calendar to spend 5 minutes on Tuesdays dropping in a review for your latest favorite app (or apps). For me, this should probably happen weekly, given the rate at which I accumulate and test out apps. It might be bi-monthly or monthly for \"normal\" people. If App Review day rolls around and you&rsquo;re not sure what to drop a rating on, just open&hellip;",
		"keywords": ["casual","friday","iphone","itunes","store","business","casual","finder","friday","opened","ratefriday","space","spotlight","store","stores","tuesdays","updated","vandal","accumulate","addressed","affecting","albeit","arrange","based","before","brettterpstra","buyers","calendar","called","cheesy","choose","civic","class","comes","company","contact","contacting","counts","customer","customers","decision","deserve","deserved","developer","developers","difference","doing","dropping","easily","edovia","especially","favorite","fixes","forum","friday","going","great","happen","happy","height","helpful","honest","https","image","initiative","institute","interested","latest","ldquo","leave","leaving","loading","makes","management","media","minutes","monthly","negative","normal","noscript","often","original","people","picture","places","positive","potential","preventing","priced","problem","quickly","rankings","rating","ratings","rdquo","receive","relatively","reminder","repeating","response","revealing","reviewed","reviews","revise","rolls","rsquo","satisfied","scammy","search","separate","simultaneously","slightly","source","spend","srcset","started","stating","straight","support","thinking","thought","thoughtful","thumbs","title","truly","understanding","updates","uploads","using","valid","versions","weekly","wherever","while","width","worse","worthwhile"]
	},{
		"title": "Marked 2 and Yosemite",
		"url": "/2014/10/21/marked-2-and-yosemite/",
		"tags": ["macappstore","marked"],
		"date": "Oct 21<span>st</span>, 2014",
		"ts": "1413911820",
		"summary": "Marked 2 has been fixed up for Yosemite. The working version is available immediately for non-Mac App Store customers through download and automatic update. MAS users will have to wait for the App Store stamp of approval to be granted, and based on recent turnaround times that may be a week or more. It&rsquo;s coming, though. There are a few other tweaks, improvements and minor features. The next project is adding full RTF support with element conversion, which will mean being able to open converted files in Word and other applications and apply styles and themes. That&rsquo;s nearly done! Don&rsquo;t forget, Marked 2 is 30% off for the rest of October. Use the coupon GOGONANOWRIMO at checkout, or get it on the Mac App Store. All the info you need is at marked2app.com",
		"keywords": ["markdown","store","gogonanowrimo","marked","store","yosemite","adding","applications","apply","approval","automatic","available","based","checkout","coming","conversion","converted","coupon","customers","download","element","features","files","fixed","forget","granted","improvements","marked","minor","nearly","project","recent","rsquo","stamp","styles","support","themes","through","times","turnaround","tweaks","users","version","working"]
	},{
		"title": "Web Excursions for October 20, 2014",
		"url": "/2014/10/20/web-excursions-for-october-20-2014/",
		"tags": ["bookmarks"],
		"date": "Oct 20<span>th</span>, 2014",
		"ts": "1413828960",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Drafts 4 Keyboard Scripts A great overview of the new Drafts 4 keyboard extension capabilities. Keyboardio While I want an Ergodox, I don&rsquo;t think I have the energy (or steady hands) to make it worthwhile. This looks like something I might be able to sink my teeth into. Or at least tap on contentedly. Extensibility and Automation Changes in OS X Yosemite Great overview of new possibilities in Yosemite. sudo gem install geektool_kit &ndash; robKitson.net A new toolkit for GeekTool users who want to script in Ruby. Evernote - Packages - Package Control A Sublime Text package for Evernote users, complete with Markdown capabilities",
		"keywords": ["apple","evernote","extensibility","geektool","markdown","automation","changes","check","control","drafts","ergodox","evernote","extensibility","geektool","great","keyboard","keyboardio","markdown","package","packages","scripts","setapp","sublime","while","yosemite","access","brought","capabilities","contentedly","energy","excursions","extension","geektool","great","hands","hundreds","install","keyboard","looks","monthly","ndash","overview","package","partnership","possibilities","robkitson","rsquo","script","steady","subscription","teeth","think","today","toolkit","users","worthwhile"]
	},{
		"title": "Drafts 4 Keyboard Extensions",
		"url": "/2014/10/15/drafts-4-keyboard-extensions/",
		"tags": ["appreview","iphone","javascript","keyboard"],
		"date": "Oct 15<span>th</span>, 2014",
		"ts": "1413406800",
		"summary": "Drafts 4 is out as a Universal app. I&rsquo;ll leave it to the experts to offer the full review, and just mention that there&rsquo;s a very cool new feature in it: JavaScript-based text modification actions. You can use JavaScript to modify text selections and entire documents, and encapsulate them in modules that you can add to the custom keyboard row. Check out the existing Keyboard Extensions for ideas. I&rsquo;m excited about this because it&rsquo;s going to be relatively easy to port the tricks I built for my old WordPress plugin, Markdown QuickTags. I&rsquo;m working on a few right now, and will publish them as I finish them. Check out the Agile Tortoise site for more info, and grab Drafts 4 for iPhone and iPad in the App Store for $4.99 US",
		"keywords": ["apple","iphone","javascript","lastpass","markdown","store","wordpress","agile","check","drafts","extensions","javascript","keyboard","markdown","quicktags","store","tortoise","universal","wordpress","actions","based","because","built","custom","documents","encapsulate","entire","excited","experts","feature","finish","going","iphone","ideas","keyboard","leave","mention","modify","modules","offer","plugin","publish","relatively","right","rsquo","selections","tricks","working"]
	},{
		"title": "On creation without consumption",
		"url": "/2014/10/13/on-creation-without-consumption/",
		"tags": ["learning","personal"],
		"date": "Oct 13<span>th</span>, 2014",
		"ts": "1413228600",
		"summary": "I do two podcasts on 5by5 (Systematic and Overtired), but I&rsquo;ve admitted many times that I rarely listen to podcasts. I&rsquo;m often asked why (and how) that is, and I&rsquo;d like to share the results of some self-examination. In short, my brain isn&rsquo;t wired for consumption. I&rsquo;m happiest creating. It&rsquo;s difficult for me to concentrate on what others are saying once I begin to have ideas of my own. You could say my mind wanders, but I don&rsquo;t think that&rsquo;s an accurate word to use. It&rsquo;s not a meandering path, but a determined course of exploration. My entire life I&rsquo;ve been \"bad\" at school. I can&rsquo;t sit through lectures, and I can&rsquo;t concentrate on reading assignments. I can read, and I can comprehend, but it takes great effort to focus on what is being said and to block out my own thought patterns. I learn by doing, and I only learn things that are of interest or immediately applicable to me. In my elementary years I was placed in a school that catered to this. It was based on Ralph Waldo Emerson&rsquo;s ideas, and followed Henry David Thoreau&rsquo;s methods. I was encouraged to develop the curriculum and answer my own questions. I returned to public schools in 5th grade, and never really made the transition. For the same reasons I&rsquo;d been \"excused\" from standardized education for a few years, coming back to it was a horrible experience for me. Despite this, I maintained a B average all through secondary and higher education. I rarely did homework, and I never did reading assignments. I managed to absorb enough contextual information in any given course to make intelligent deductions on exams. I scored quite well on my ACT test in my Junior year of high school. Well enough to spend most of that year and my senior year in PSEO (Post Secondary Education Option). That meant that I was attending classes at the local college instead of at the high school. I did much better in an environment that rewarded creative thought, but there were still a lot of concepts my mind was unwilling to learn. I only passed microeconomics because the curve was skewed. Computers and programming have always been of interest to me, but only on the creation side. I can&rsquo;t play video games for lack of interest. I read about 10% of what comes through my RSS feeds, and then usually just skim articles. I&rsquo;d rather be writing than reading. I could never even play D&D with my nerd friends because I got bored&hellip;",
		"keywords": ["creation","creativity","disability","invention","learning","thinking","benjamin","computers","david","discovery","education","emerson","github","henry","junior","overtired","ralph","secondary","systematic","thoreau","waldo","ability","absorb","absorbing","accepted","accurate","admire","admitted","allowing","amazing","analytic","answer","appealed","applicable","appreciate","articles","asked","assignments","attending","average","background","based","because","before","begin","beginning","believe","block","bored","brain","brainstorming","bubble","build","built","catered","chain","change","classes","college","collegiate","comes","coming","comprehend","concentrate","concepts","consider","considering","consumer","contacted","content","contextual","conversation","convert","couple","create","creating","creation","creative","curriculum","curve","debate","deductions","destroy","details","determined","develop","dialectic","dialogue","differently","difficult","disability","discoveries","discovery","doing","eavesdropping","education","effort","eight","elementary","encouraged","endeavors","enough","entire","environment","everything","evolving","examination","exams","excited","excused","experience","exploration","feeds","feverishly","filmmaking","first","focus","followed","found","friends","frustrating","games","gotten","grade","great","growth","happiest","higher","homework","horrible","however","human","hungry","ideal","ideas","inabilities","inability","incapable","influx","information","inject","innovation","input","intelligence","intelligent","interest","interested","invent","inventions","knowing","knowledge","latches","learn","learned","learning","leave","lectures","letting","light","listen","living","local","maintained","managed","meandering","meant","members","methods","microeconomics","movie","movies","music","myself","night","normal","often","others","outlets","output","outside","passed","patterns","people","pertinent","pieces","placed","platform","playing","podcast","podcasts","point","possible","problem","problems","process","productive","programming","public","pursuing","quantify","questions","quickly","rarely","rather","reading","realities"]
	},{
		"title": "The AeroPress Timer 2 winners",
		"url": "/2014/10/13/the-aeropress-timer-2-winners/",
		"tags": ["appstore","giveaway","iphone"],
		"date": "Oct 13<span>th</span>, 2014",
		"ts": "1413221460",
		"summary": "If you like your AeroPress and haven&rsquo;t tried out AeroPress Timer 2 on your iPhone, get the basic program for free on the App Store",
		"keywords": ["aeropress","coffee","store","aeropress","congratulations","deamer","jerry","johnson","jonathan","michael","scott","store","timer","xander","basic","giveaway","haven","iphone","program","rsquo","tried","winners"]
	},{
		"title": "Stuff I do when I'm not here",
		"url": "/2014/10/10/stuff-i-do-when-im-not-here/",
		"tags": ["podcast"],
		"date": "Oct 10<span>th</span>, 2014",
		"ts": "1412954040",
		"summary": "I haven&rsquo;t been announcing my podcasts and appearances the way I used to. I really should, there have been a lot of fun things happening. First, I was on Philip Mozolak and Christopher Radliff&rsquo;s podcast Preservation State along with Jason Snell. It was a fun conversation. I don&rsquo;t even remember how I met Philip now, but he&rsquo;s a great guy and I enjoy our conversations. And our Super Stickman Golf 2 games. Next, I chatted with Ryan Irelan from Mijingo for his CMS Chronicles series. We talked, of course, about Jekyll and some of the crazy things I do with it. You can find the episode here. Systematic has been a blast lately. Following the first three parts of the John Roderick saga (which will be continuing next week), I&rsquo;ve had some great guests. Director, actor, and writer David Wain came back and we got a chance to talk more about his career story. I think the storytelling episodes are appealing enough to me that the Systematic format may be moving in that direction. I&rsquo;m open to input on that. I also had a great time talking once again with Dr. Pam Peeke about technology addiction, Mike Rohde about Sketchnoting, and online dating coach Virginia Roberts about relationships in the digital world. Overtired, the show I do with Christina Warren, is growing and developing. It&rsquo;s very random, and that&rsquo;s why I&rsquo;m enjoying it. I&rsquo;m not sure where it&rsquo;s headed yet, but it&rsquo;s a fun ride if you haven&rsquo;t already checked it out. I also owe everybody a post on my thoughts about creating podcasts while not listening to podcasts. I talk about it a little bit on the most recent Overtired, which should be up today. I&rsquo;m still figuring it out myself, but have made a resolution to start listening to more of the smart people doing smart things out there",
		"keywords": ["irelan","jason","mijingo","overtired","podcasting","preservation","snell","systematic","christina","christopher","chronicles","david","director","first","irelan","jason","jekyll","mijingo","mozolak","overtired","peeke","philip","preservation","radliff","roberts","roderick","rohde","sketchnoting","snell","stickman","super","systematic","virginia","warren","actor","addiction","again","announcing","appealing","appearances","blast","career","chance","chatted","checked","coach","continuing","conversation","conversations","crazy","creating","dating","developing","digital","direction","doing","enjoy","enjoying","enough","episode","episodes","everybody","figuring","first","format","games","great","growing","guests","happening","haven","headed","input","listening","little","moving","myself","online","parts","people","podcast","podcasts","random","recent","relationships","remember","resolution","rsquo","series","smart","story","storytelling","talked","talking","technology","think","thoughts","today","where","while","world","writer"]
	},{
		"title": "Web Excursions for October 09, 2014",
		"url": "/2014/10/09/web-excursions-for-october-09-2014/",
		"tags": ["bookmarks"],
		"date": "Oct 9<span>th</span>, 2014",
		"ts": "1412859600",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. LaunchBar multiple selections I don&rsquo;t know if other LaunchBar users have been as slow to pick up the new \"staging\" feature in LB 6 as I have, but once it becomes habit, it&rsquo;s awesome. colourcode - find your colour scheme A cool tool for rapid color scheme creation. It can export PNG, CSS, Sass, and LESS files. SweetAlert If you&rsquo;re a front end web developer, alert boxes and confirmation dialogs are an important tool. This is a fast, good-looking way to ditch without much effort. jQuery Adaptive Backgrounds A jQuery plugin for extracting dominant colors from images and applying it to its parent. Pretty cool effect. terminal.sexy - Terminal Color Scheme Designer I love these things. Pinswift Update for iOS 8 Great review from Gabe Weatherhead of my current favorite iOS Pinboard app. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["bookmarks","jquery","adaptive","backgrounds","check","color","designer","great","launchbar","mindmeister","pinboard","pinswift","scheme","sweetalert","terminal","weatherhead","alert","applying","awesome","becomes","boosting","boxes","brainstorming","brought","collaborating","collaborative","color","colors","colour","colourcode","confirmation","creation","developer","dialogs","ditch","effort","excursions","export","extracting","favorite","feature","files","front","habit","images","important","jquery","looking","mapping","multiple","parent","partnership","plugin","productivity","rapid","rsquo","scheme","selections","software","staging","terminal","users"]
	},{
		"title": "Sponsor: TextExpander touch",
		"url": "/2014/10/09/sponsor-textexpander-touch/",
		"tags": ["sponsor","textexpander"],
		"date": "Oct 9<span>th</span>, 2014",
		"ts": "1412852400",
		"summary": "Thanks to Smile for their continued support! I&rsquo;m thrilled to have my TextExpander snippets available everywhere in iOS 8. Whether it&rsquo;s a simple email signature or several paragraphs of a standard response, you&rsquo;ll love how easy it is to use TextExpander to avoid typing the same thing over and over. With the new TextExpander touch 3 on iOS 8, there&rsquo;s a TextExpander custom keyboard so that you can expand abbreviations in all your apps on your iPhone, iPad, or iPod touch. Over 60 apps offer enhanced TextExpander support, including Byword, Day One, Drafts, Fantastical, Launch Center Pro, OmniFocus, OmniOutliner, and more",
		"keywords": ["smile","textexpander","byword","center","david","drafts","fantastical","launch","omnifocus","omnioutliner","smile","sparks","store","textexpander","thanks","abbreviations","available","avoid","continued","custom","effort","email","enhanced","everywhere","expand","expanding","great","iphone","including","keyboard","offer","paragraphs","response","rsquo","saves","several","short","signature","simple","snippets","standard","support","thrilled","touch","typing","video"]
	},{
		"title": "Recap: Oct 08th, 2014",
		"url": "/2014/10/08/recap-oct-08th-2014/",
		"tags": ["recap"],
		"date": "Oct 8<span>th</span>, 2014",
		"ts": "1412809200",
		"summary": "A bit of a slow week as I recover from my recent illness, but here are the highlights! Sponsor: PopClip (Oct 2nd) Thanks to Pilotmoon and one of my favorite utilities, PopClip, for supporting BrettTerpstra.com this week! 30% off Marked 2 for NaNoWriMo (and giveaway) (Oct 3rd) Marked 2 is 30% off all through October (Mac App Store and direct with the coupon GOGONANOWRIMO). Get it while it&rsquo;s hot! AeroPress Timer 2 giveaway (Oct 8th) The best dedicated iOS app for the AeroPress afficionado is now at version 2, and I have five codes to give away that will get you your choice of expansion packs! Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["marked","pilotmoon","popclip","aeropress","brettterpstra","gogonanowrimo","marked","nanowrimo","pilotmoon","popclip","recaps","sponsor","store","thanks","timer","afficionado","choice","codes","coupon","curated","dedicated","digest","direct","expansion","favorite","format","giveaway","highlights","illness","interest","packs","posts","quick","recent","recover","rsquo","specifically","subscribe","summary","supporting","through","updates","utilities","version","weekly","while"]
	},{
		"title": "AeroPress Timer 2 giveaway",
		"url": "/2014/10/08/aeropress-timer-2-giveaway/",
		"tags": ["appreview","coffee","giveaway","iphone"],
		"date": "Oct 8<span>th</span>, 2014",
		"ts": "1412791200",
		"summary": "I reviewed AeroPress Timer last year, and have been using it ever since. Version 2 is out now, and it&rsquo;s definitely worth a look. The main app is now free, and it gives you a great idea what it can do. You get recipes, step-by-step timers, and a great cup of coffee out of your AeroPress. You can extend the app with In App Purchases now, too. The Championship Pack boasts nine recipes from the 2014 AeroPress World Championship Circuit, and the Roaster pack gives you seven additional recipes from the world&rsquo;s best roasters. The packs are $1.99 US each, but enter a name and email below to win a code that will get you your choice for free! I have five codes to hand out, and the drawing will take place on Monday, October 13th at noon CST. Check out AeroPress Timer 2 on the App Store for more info! Sorry, this giveaway has ended",
		"keywords": ["aeropress","iphone","itunes","aeropress","championship","check","circuit","monday","purchases","roaster","sorry","store","timer","version","world","below","boasts","choice","codes","coffee","definitely","drawing","email","ended","enter","extend","giveaway","gives","great","packs","recipes","reviewed","roasters","rsquo","seven","since","timers","using","world","worth"]
	},{
		"title": "The Marked 2 giveaway winners",
		"url": "/2014/10/08/the-marked-2-giveaway-winners/",
		"tags": ["giveaway","macos","marked"],
		"date": "Oct 8<span>th</span>, 2014",
		"ts": "1412788200",
		"summary": "Congrats! Don&rsquo;t forget that Marked 2 is 30% off all this month (both on the App Store and direct sales). If you&rsquo;re purchasing directly, just use the coupon GOGONANOWRIMO at marked2app.com to get the discount. Purchase directly from the Mac App Store and the discount is automatic. Happy writing",
		"keywords": ["markdown","marked","bourque","compton","congrats","fernando","gogonanowrimo","happy","lucifr","marked","mayorga","nicole","store","automatic","coupon","direct","directly","discount","drawing","ended","forget","gaosong","giveaway","lucky","marked","purchasing","rsquo","sales","writing"]
	},{
		"title": "30% off Marked 2 for NaNoWriMo (and giveaway)",
		"url": "/2014/10/03/30-percent-off-marked-2-for-namowrimo/",
		"tags": ["marked"],
		"date": "Oct 3<span>rd</span>, 2014",
		"ts": "1412360640",
		"summary": "I&rsquo;ve built Marked 2 to be a tool for professional writers. More than just a Markdown previewer, it boasts features for improving your writing and keeping track of advanced statistics. Marked works with Scrivener and Ulysses 3 too, showing you compiled versions of your complete document as you work, and seeing changes instantly as you make them. To celebrate the upcoming NaNoWriMo, writers can get Marked 2 at $9.99 US (almost 30% off) off this month using the coupon GOGONANOWRIMO when purchasing from the website. It&rsquo;s good all month. If you prefer to purchase the App Store version (same features), the price will be marked down for everybody there as well. There&rsquo;s a new version of Marked 2 in review with fixes for YAML header handling, Scrivener UTF-8/16 encoding issues, Custom Processor additional arguments, PDF output and more. There&rsquo;s another one in the hopper after that with new features! All of these will be free upgrades available over the next couple of weeks. If you want to try Marked 2 out free for a week, you can download a copy at marked2app.com. I&rsquo;m also giving away five copies ($13.99 value) to lucky writers. Just submit your name and email below to enter. Winners will be drawn on Wednesday, October 8th at noon CST. Sorry, this giveaway has ended",
		"keywords": ["markdown","nanowrimo","scrivener","store","ulysses","writing","custom","gogonanowrimo","markdown","marked","nanowrimo","processor","scrivener","sorry","store","ulysses","wednesday","winners","advanced","almost","another","arguments","available","below","boasts","built","celebrate","changes","compiled","copies","couple","coupon","document","download","email","encoding","ended","enter","everybody","features","fixes","giveaway","giving","handling","header","hopper","improving","instantly","issues","keeping","lucky","marked","output","prefer","previewer","price","professional","purchasing","rsquo","seeing","showing","statistics","track","upcoming","upgrades","using","value","version","versions","website","weeks","works","writers","writing"]
	},{
		"title": "Sponsor: PopClip",
		"url": "/2014/10/02/sponsor-popclip/",
		"tags": ["sponsor"],
		"date": "Oct 2<span>nd</span>, 2014",
		"ts": "1412247600",
		"summary": "I&rsquo;m happy to have PopClip from Pilotmoon as a sponsor this week. PopClip has become one of my favorite utilties on my Mac, and I feel lost without it. PopClip is a Mac utility for working with selected text. It appears whenever you highlight text using your mouse, offering immediate access to tools and transformations relevant to the selection. What kind of tools? Anything you can think of, from the simplest actions like copy and paste, web search and spelling correction to workflow-boosting integrations with popular apps, web services, and your own custom scripts. PopClip comes with a set of built in actions that make it useful out of the box. From there, you can choose from over 100 ready-made official extensions, as well as ingenious creations from certain talented developers. And with a little scripting skill, you can you can make your own extensions, implementing almost any idea you can come up with. PopClip is $4.99 on the Mac App Store and you can download a free trial on the developer&rsquo;s website",
		"keywords": ["extension","pilotmoon","popclip","store","pilotmoon","popclip","sponsored","store","syndicate","access","actions","almost","appears","boosting","built","certain","choose","comes","correction","creations","custom","developer","developers","download","extensions","favorite","happy","highlight","immediate","implementing","ingenious","integrations","little","mouse","offering","official","paste","popular","ready","relevant","rsquo","scripting","scripts","search","selected","selection","services","simplest","skill","spelling","sponsor","talented","think","tools","transformations","trial","useful","using","utility","utilties","website","whenever","workflow","working"]
	},{
		"title": "Answered: save your StackExchange discoveries",
		"url": "/2014/10/01/answered-save-your-stackexchange-discoveries/",
		"tags": ["answered","bookmarklet","markdown"],
		"date": "Oct 1<span>st</span>, 2014",
		"ts": "1412197200",
		"summary": "I&rsquo;ve been sick and out of commission this week, but I have a couple of finished projects to share as I find the energy. This first one is called \"Answered,\" a bookmarklet for saving StackExchange answers to your favorite note/organization app. StackExchange, especially StackOverflow, is where I find answers to the vast majority of my coding questions these days. The problem is that I find myself searching for the same answer again later. If I bookmarked every answer I found, I&rsquo;d have a mess of links. The solution for me is to keep nvALT notes in Markdown with the solution (see QuickQuestion). Answered will load on any StackExchange page. You&rsquo;ll see an orange tab at the top of your browser window. Hovering over that tab will let you decide whether the note will be returned in an overlay so you can copy it, or straight to nvALT. Once loaded, you can click any answer on the page and it will be converted to Markdown (including comments and source links) and returned. If you&rsquo;re using the overlay results, you&rsquo;ll also see options for sending to Marked or nvALT. I&rsquo;ll probably add more output options soon. Using this mode allows you to add notes and inline tags to the note before saving it. A single click on the overlay will select all the text, clicking again will let you edit. Here&rsquo;s a video that shows it in action. Just drag the link below to your bookmarks bar. Answered works in Chrome, Safari, and Firefox",
		"keywords": ["bookmark","exchange","firefox","markdown","network","notational","overflow","quickquestion","safari","stack","velocity","answered","chrome","firefox","hovering","install","markdown","marked","quickquestion","safari","stackexchange","stackoverflow","using","action","again","allows","answer","answers","before","below","bookmarked","bookmarklet","bookmarks","browser","called","click","clicking","coding","comments","commission","converted","couple","decide","energy","especially","favorite","finished","first","found","including","inline","later","links","loaded","myself","notes","nvalt","options","orange","organization","output","overlay","problem","projects","questions","results","returned","rsquo","saving","searching","sending","share","shows","single","solution","source","straight","using","video","where","window","works"]
	},{
		"title": "Web Excursions for September 25, 2014",
		"url": "/2014/09/25/web-excursions-for-september-25-2014/",
		"tags": ["bookmarks"],
		"date": "Sep 25<span>th</span>, 2014",
		"ts": "1411656720",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. This round came up fast. I know I just did an excursions post three days ago, but I think you&rsquo;ll live. I have some cool stuff of my own coming soon, including a big Marked update with another one soon after (waiting for App Store review stinks). Enjoy the links, I&rsquo;ll share the latest fun as soon as things quiet down a bit. Duo - A next-generation package manager for the front-end. This looks hot. I haven&rsquo;t tried it out yet, but it does away with some of the less convenient parts of Component or Browserify. Smart. The Ultimate Guide To iPhone Resolutions Handy chart for all of the disparate pixel sizes available on the iPhone now. Dimensions A tool for designers to measure screen dimensions. It&rsquo;s not xScope, but it does its job nicely within the browser. Only available for Chrome right now. UICloud - User Interface Design Search Engine A massive-looking database of all the UI designs found around the web. A one-stop inspiration shop&hellip; ddmnet/wgrep Another HTML/JSON parser written in Node. CSS selectors, including :contains(), which is really handy. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["design","interface","iphone","store","another","backblaze","browserify","check","chrome","design","dimensions","engine","enjoy","guide","handy","interface","marked","resolutions","search","smart","store","uicloud","ultimate","affordably","another","available","backs","brought","browser","chart","cloud","coming","computer","contains","convenient","database","ddmnet","designers","designs","dimensions","disparate","entire","everything","excursions","found","front","generation","handy","haven","hellip","iphone","including","inspiration","latest","links","looking","looks","manager","massive","measure","nicely","package","parser","partnership","parts","pixel","quiet","reliably","right","round","rsquo","screen","securely","selectors","share","sizes","stinks","stuff","think","today","tried","waiting","wgrep","within","written","xscope"]
	},{
		"title": "Sponsor: mySleepButton",
		"url": "/2014/09/25/sponsor-mysleepbutton/",
		"tags": ["sponsor"],
		"date": "Sep 25<span>th</span>, 2014",
		"ts": "1411642800",
		"summary": "I&rsquo;m honored to be sponsored by mySleepButton this week. It&rsquo;s an iPhone app that helps you fall asleep using some cutting-edge techniques. Check it out! What keeps you from falling asleep in bed? Being preoccupied with important concerns. This effectively tells your brain&rsquo;s sleep switch, \"Back off! Keep me awake!\" My preferred anti-insomnia iOS app, mySleepButton, is designed to trigger your internal \"sleep switch\" by getting you to do the cognitive shuffle. That is to imagine a series of unrelated persons, places, things and scenes, as if you were falling asleep. All you need to do is press the app&rsquo;s \"Put Me to Sleep\" button and imagine each disparate, carefully selected item spoken to you. For example: Pluto, lake, mountain biking, painting a portrait, vegetables&hellip; As you entertain these sundry images, you simply can&rsquo;t be thinking about your concerns. This stress-free, imaginative state of mind can fool your sleep switch into putting you to sleep, because micro-dreams and loose thinking are potent sleep signals. Other sleep apps are comparatively unimaginative. They encourage you to be passive, with white noise, music, relaxation, or meditation. But then your mind comes back to its concerns. mySleepButton is the brain child of Dr. Luc Beaudoin, cognitive scientist at Simon Fraser University (Canada) and head of CogSci Apps. Sleep researchers at three different universities will conduct independent studies on this over the next several months",
		"keywords": ["apple","beaudoin","cognitive","fraser","science","simon","university","beaudoin","canada","check","cogsci","fraser","pluto","shuffle","simon","sleep","sponsored","syndicate","thoughts","university","asleep","awake","because","biking","brain","button","carefully","child","cognitive","comes","comparatively","concerns","conduct","cutting","designed","different","disparate","drawing","dreams","effectively","encourage","entertain","example","falling","getting","hellip","helps","honored","iphone","images","imaginative","imagine","important","independent","insomnia","internal","items","keeps","loose","meditation","micro","mountain","music","mysleepbutton","noise","painting","passive","places","portrait","potent","preferred","preoccupied","press","putting","relaxation","researchers","rsquo","scenes","scientist","selected","series","several","shuffle","signals","simply","sleep","spoken","sponsored","streams","stress","studies","sundry","switch","techniques","tells","thinking","trigger","unimaginative","universities","unrelated","using","vegetables","white"]
	},{
		"title": "Recap: Sep 24th, 2014",
		"url": "/2014/09/24/recap-sep-24th-2014/",
		"tags": ["recap"],
		"date": "Sep 24<span>th</span>, 2014",
		"ts": "1411599600",
		"summary": "I&rsquo;ve been working hard on a hundred things this week (well, 14), so I&rsquo;ve been heads down. Somehow, I still managed to get some stuff up that I&rsquo;m happy about, and wait until you see what I&rsquo;ve been doing with my free time (and sleepless nights)&hellip; Sponsor: Hack Reactor (Sep 18th) First, a big thanks to Hack Reactor for sponsoring this week. If you&rsquo;re looking for an immersive learning experience in the JavaScript field, check it out! Counters•, a new tally app for iPhone (Sep 18th) A beautiful iPhone app. If you ever need to count more than you can fit in your head or over too long a period to keep track of, this app is perfect. How I Mind Map (Sep 18th) This was my big accomplishment for the week. I think this post has been in the works for almost six months. I finally buckled down and got a solid overview of my mind mapping process recorded for posterity. I hope you find it useful! The Lab T-shirts 2.0 (Sep 19th) They&rsquo;re not the cheapest t-shirts on the block, but you can show your support and make a fashion statement at the same time. I don&rsquo;t know how much of a statement grey shirts are, but the logo came out pretty cool. Get one, and help make sure the goal is met so we can get them printed! Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["iphone","javascript","macintosh","shirt","counters","first","javascript","reactor","recaps","somehow","sponsor","accomplishment","almost","beautiful","block","brettterpstra","buckled","categories","cheapest","check","class","count","counters","curated","digest","doing","experience","fashion","field","finally","format","happy","heads","height","hellip","https","hundred","iphone","image","images","immersive","iphone","lmbner","learning","loading","looking","managed","mapping","media","nights","noscript","original","overview","picture","posterity","posts","printed","process","projects","quick","reactor","recap","recorded","rsquo","shirts","sleepless","solid","source","specifically","sponsor","sponsoring","srcset","statement","stuff","subscribe","summary","support","tally","teespring","thanks","thelabv","think","title","track","updates","useful","weekly","width","working","works"]
	},{
		"title": "Web Excursions for September 22, 2014",
		"url": "/2014/09/22/web-excursions-for-september-22-2014/",
		"tags": ["bookmarks"],
		"date": "Sep 22<span>nd</span>, 2014",
		"ts": "1411395240",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. EricChiang/pup This CLI is awesome for parsing HTML on the command line. Crawling, scraping, and grabbing elements and their contents is a breeze. Example: . Binaries available on the releases page. Via OneThingWell. jq CLI parsing/query tool for JSON. Great for handling JSON responses in command line scripts. GroupMap Group brainstorming tools. Looks like an excellent solution for brainstorming before, during, and after meetings. Includes real time collaboration, reporting, mind mapping, and custom templates. ViewFlux - Feedback, Prototyping & Collaboration for Designers I&rsquo;ve been testing this out and it&rsquo;s a great tool for anyone who needs to share designs and receive feedback. You can generate clickable prototypes, add annotations, and it includes versioning and archiving. The Lab V2 - Teespring Had to slip this in because I really want to meet the goal and get these new t-shirts printed. Available in women&rsquo;s sizes, as hoodies, and as tank tops, too",
		"keywords": ["command","github","groupmap","interface","available","binaries","cleanmymac","collaboration","crawling","designers","ericchiang","example","feedback","great","group","groupmap","includes","looks","onethingwell","prototyping","teespring","viewflux","annotations","anyone","archiving","available","awesome","because","before","brainstorming","breeze","brought","clickable","collaboration","command","contents","custom","designs","elements","excellent","excursions","feedback","grabbing","great","handling","hoodies","includes","mapping","meetings","needs","parsing","partnership","printed","prototypes","query","receive","releases","reporting","responses","rsquo","scraping","scripts","share","shirts","sizes","solution","speed","templates","testing","tools","versioning","women"]
	},{
		"title": "The PicGIF Giveaway winners",
		"url": "/2014/09/20/the-picgif-giveaway-winners/",
		"tags": ["giveaway","macos"],
		"date": "Sep 20<span>th</span>, 2014",
		"ts": "1411235580",
		"summary": "The Giveaway Robot should have already been in touch with you. If you missed the message, let me know. If you didn&rsquo;t win but want a great way to turn video into animated gifs, check out PicGIF",
		"keywords": ["format","graphics","image","interchange","video","aaron","barry","brett","congratulations","dusty","fields","giveaway","lampros","mandaris","picgif","robot","animated","check","giveaway","great","message","missed","rsquo","touch","video","winners"]
	},{
		"title": "The Lab T-shirts 2.0",
		"url": "/2014/09/19/the-lab-t-shirts-2-dot-0/",
		"tags": ["apparel"],
		"date": "Sep 19<span>th</span>, 2014",
		"ts": "1411140960",
		"summary": "I had so much fun seeing the response to the last round of t-shirts that I decided to try another. I&rsquo;m using Teespring again, and you can find the campaign at teespring.com/thelabv2. I went for a more understated design with no text this time. I figured it&rsquo;s not really an advertisement, it&rsquo;s just a way to show support for me (and the blog). Because the logo has a slight tinge of color to it and is dark, this round only looks good on white and grey. If there&rsquo;s any demand, I can do a light on dark version that will work with more colors. The shirt is available in men&rsquo;s and women&rsquo;s sizing, as well as tank top and hoodie styles. I chose premium materials, so they&rsquo;re a little more expensive but should be something you (or I) would actually want to wear. There needs to be 50 orders for the round to get printed. If you missed out on the last round or want to show your support again, go reserve one",
		"keywords": ["advertising","clothing","crowd","funding","marketing","shirt","because","teespring","advertisement","again","another","available","campaign","chose","color","colors","decided","demand","design","expensive","figured","hoodie","light","little","looks","materials","missed","needs","orders","premium","printed","reserve","response","round","rsquo","seeing","shirt","shirts","sizing","slight","styles","support","teespring","thelabv","tinge","understated","using","version","white","women"]
	},{
		"title": "How I Mind Map",
		"url": "/2014/09/18/how-i-mind-map/",
		"tags": ["brainstorming","mindmapping","productivity","writing"],
		"date": "Sep 18<span>th</span>, 2014",
		"ts": "1411059600",
		"summary": "I&rsquo;ve been working on a mind mapping post for some time now. It started as a Macworld piece, but I took too long&hellip; When I need to get an idea out of my head, or I need to take that idea and flesh it out, I turn to mind maps. Some people scratch notes, others create outlines, but mind mappers like myself find that the format of a mind map is the most conducive to brainstorming. Outlining is rigid and always makes me feel like things need to be in order. I can use outliners such as Tree effectively, but I find any outliner to be an impediment to the initial brainstorming process. I like mind maps because they let me think non-linearly and because they allow ideas to \"grow\" in an organic fashion (see Tony Buzan and his \"radiant thinking\" ideas). Using applications to mind map instead of pencils and paper lets me do this without friction and creates projects that are easy to organize, even if I wait until the end to bother. With a mind map, scattered thoughts begin to solidify before my eyes. A topic will inspire another topic, and I can start adding ideas and clarifying them as fast as I can think them. While I&rsquo;m expanding one node, I&rsquo;ll often randomly think of something related to the project but unrelated to the area on which I&rsquo;m focusing, and I can just tack those on to other topics until I&rsquo;m ready to focus on them. It&rsquo;s a great way to remember everything that crosses my mind while I&rsquo;m thinking about a project. Mind maps are also an excellent overview of my thought process. I can shift pieces around and easily see what parts need fleshing out or reorganization. I can sort and categorize topics as I build, instantly shift a string of ideas into a new parent topic, move main topics around, even branch off another map on the side to capture irrelevant thoughts for later. If a parent topic gets overburdened with children, it only takes seconds to come up with relationships and split the idea up or add subcategories. These are the primary terms I&rsquo;ll be using throughout this post. Map A single Main Topic and its children. A mind map document may contain more than one Main Topic, but I&rsquo;ll be referring to each of those individually as a distinct Map. Main Topic The central concept or subject of the map. In a radial mind map, this idea is at the center. In a top-down map, it&rsquo;s the topic at the top. Everything branches from here. Node/Topic Every item on the map that isn&rsquo;t&hellip;",
		"keywords": ["ithoughts","mindmeister","mindnode","notes","taking","toketaware","adjustments","annotations","another","barring","boundary","brainstorm","buzan","callouts","center","child","color","composer","curio","drafts","either","evernote","everything","export","exporting","first","fluid","geistesblitz","icons","images","journey","language","links","macworld","mapping","markdown","markup","mindmanager","mindmeister","mindnode","mindjet","multimarkdown","notes","notesy","outline","outlining","paper","parent","perhaps","polish","polishing","powerpoint","presentation","process","processor","relationship","relationships","repeated","reviewing","roadmaps","scrivener","sibling","sometimes","sorting","sweatingcommas","taskpaper","thanks","topic","tweaking","typing","using","while","wikipedia","within","writing","wunder","wunderimage","ability","above","abstract","achieve","across","action","actions","added","adding","additions","adjust","adjustments","aesthetic","aftershock","against","ahead","alignment","allow","allowing","allows","almost","annotation","annotations","another","anyone","appearance","apple","applications","apply","arrange","arrows","assigning","associate","associated","association","associations","attach","attached","attaching","attachment","attachments","automated","automatic","automatically","available","avoids","backlink","based","basic","basics","beauty","because","becomes","before","began","begin","beginning","begins","belong","belongs","benefit","between","beyond","blank","blazing","bloat","bother","bottom","boundaries","boundary","brain","brainstorm","brainstorming","branch","branches","branching","breadcrumb","breaking","brettterpstra","browser","browsing","bubbles","build","built","callout","callouts","capability","capture","categories","categorize","category","center","central","chapter","chapters","child","children","choice","clarify","clarifying","clarity","class","clear","clicking","clockwise","closely","closer","coding","collaboration","color","colored","coloring","colors","comes","comfortable","common","companion","composer","computer","concept","concepts","concerns","concrete","conducive","confident","confusion","connected","connecting","considerations"]
	},{
		"title": "Counters•, a new tally app for iPhone",
		"url": "/2014/09/18/counters-a-new-tally-app-for-iphone/",
		"tags": ["appreview","iphone"],
		"date": "Sep 18<span>th</span>, 2014",
		"ts": "1411051380",
		"summary": "Counters• is an app for counting things. Any things. It lets you set up unlimited color-coded tallies, each with their own settings, and quickly access them to increment, decrement, or reset their counts. I have a soft spot for Tally from Agile Tortoise, but Counters• is a beautiful alternative. The detailed design is both gorgeous and usable. Each counter can have its own up, down and reset increments. If you need to up the count by five with each tap, its an easy task. You can set the color for a counter for easy visual recognition in the list view as well. When a counter is loaded, it takes the full screen, so you can count without looking at your phone. You can have the app click with each tally, speak the totals to you, or remain silent. You can even have it vibrate on tap so you know its working when you&rsquo;re not looking at it. Reminders are a handy feature, too, allowing you to make sure you keep track of events that happen at intervals. You can also attach a badge showing specific totals to the home screen icon for keeping track of important tallies. Counters• is an elegant solution to keeping track of anything you need to count. Did I mention it&rsquo;s also really good looking? Check it out in the App Store, where you can pick up a copy for $1.99 US",
		"keywords": ["appstore","itunes","tally","agile","center","check","counters","launch","reminders","store","tally","tortoise","access","allowing","apple","attach","badge","beautiful","brettterpstra","callback","class","click","coded","color","count","counters","countersapp","counting","counts","decrement","design","detailed","elegant","events","feature","gorgeous","handy","happen","height","https","image","important","increment","increments","integrate","intervals","itunes","keeping","loaded","loading","looking","makes","media","mention","noscript","original","phone","picture","quick","quickly","recognition","reset","rsquo","screen","screenshot","settings","showing","silent","single","solution","source","speak","specific","srcset","takes","tallies","tally","title","totals","track","unlimited","uploads","usable","vibrate","visual","where","width","working"]
	},{
		"title": "Sponsor: Hack Reactor",
		"url": "/2014/09/18/sponsor-hack-reactor/",
		"tags": ["sponsor"],
		"date": "Sep 18<span>th</span>, 2014",
		"ts": "1411038000",
		"summary": "Thanks to Hack Reactor for sponsoring BrettTerpstra.com this week. Hack Reactor is a 12-week immersive JavaScript-focused coding school located in San Francisco and touted by many as the “Harvard” of its kind. After a successful first Hack Reactor Remote Beta, they have recently announced two new cohorts of their online course. Apply for your chance to join the Hack Reactor community and become an Engineer. Their team of exceptional instructors & staff work with a two-fold mission to empower people and transform education through rapid-iteration teaching. Throughout the program, Hack Reactor Engineers gain the skills and confidence they need to build amazing products allowing graduates to become tech influencers who write books, win hackathons, speak at conferences, and of course, get jobs at top tech companies. With classes beginning October 27th & December 8th and recommended application deadlines of September 29th and November 10th, respectively, apply today and take their exceptional Remote Beta program from wherever you are",
		"keywords": ["francisco","javascript","learning","apply","brettterpstra","engineer","engineers","francisco","harvard","javascript","reactor","remote","sponsored","syndicate","thanks","throughout","allowing","amazing","announced","apply","beginning","blockquote","books","brett","brettterpstra","build","campaign","chance","class","classes","coding","cohorts","community","companies","conferences","confidence","deadlines","education","exceptional","first","focused","graduates","hackathons","hackreactor","height","https","image","immersive","influencers","inpost","instructors","iteration","lmbner","loading","located","media","medium","mission","nbjcut","nofollow","noscript","online","original","people","picture","products","program","rapid","recently","recommended","respectively","school","skills","source","speak","sponsoring","srcset","staff","successful","syndicate","syndicateads","teaching","terpstra","through","title","today","touted","transform","udrijo","uploads","wherever","width","write"]
	},{
		"title": "Web Excursions for September 17, 2014",
		"url": "/2014/09/17/web-excursions-for-september-17-2014/",
		"tags": ["bookmarks"],
		"date": "Sep 17<span>th</span>, 2014",
		"ts": "1410958800",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. GIF YouTube Make Animated GIFs from Youtube. Butterick&rsquo;s Practical Typography A great overview and detail of typography in general, built using Pollen. This book is partly an experiment in taking the web seriously as a book-publishing medium. I have a role to play in making the experiment work. And so do you. Glench/fuzzyset.js A JavaScript library ported from a Python fuzzy string matching library. Determines likely mispellings and does approximate string matching in pure JS. Via Alex Chan. Whoosh A lightweight mass mailer (Mac app) using the Amazon Simple Email Service. Import a mailing list in CSV or Tab-Delimited format from a file, or direct from a remote URL, and send out emails for a fraction of the cost of other services. Strut - An HTML5 Presentation Editor An HTML5 presentation deck editor that works with Impress.js, Bespoke.js, and Handouts",
		"keywords": ["javascript","typography","youtube","amazon","animated","bespoke","butterick","check","delimited","determines","editor","email","glench","handouts","import","impress","javascript","pollen","practical","presentation","python","service","setapp","simple","strut","support","typography","whoosh","youtube","youtube","access","approximate","author","brought","built","detail","direct","editor","emails","excursions","experiment","format","fraction","fuzzy","fuzzyset","general","great","hundreds","library","lightweight","likely","mailer","mailing","making","matching","medium","mispellings","monthly","overview","partly","partnership","ported","presentation","publishing","remote","rsquo","seriously","services","string","subscription","taking","today","typography","using","works"]
	},{
		"title": "PicGIF Giveaway",
		"url": "/2014/09/16/picgif-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Sep 16<span>th</span>, 2014",
		"ts": "1410876000",
		"summary": "There are a few good Mac apps for creating animated gifs from movies and images. I don&rsquo;t need to do this very often, but I happen to really like PicGIF for it. PicGIF can import hundreds of image formats, including other GIFs, and all common video formats. You can trim down to any section of a movie with easy in/out marker tools, and then add text and image overlays. You can also create slideshows from multiple images easily. Fine tune your gifs with size/cropping, frame delay, special effects/color settings and more. You can drag frames around to modify the order, too. PicGIF automatically optimizes the output to reduce the total size of longer GIFs (which can get huge if you don&rsquo;t). It even includes sharing tools that you can hook into multiple social services. You can download a limited trial from PearlMountain, but I also have 5 free copies to give away ($19.99 value). Just enter a name and email address below for a chance at a free full license. Winners will be randomly drawn on Saturday, September 20th. Sorry, this giveaway has ended",
		"keywords": ["format","formats","graphics","image","interchange","pearlmountain","video","pearlmountain","picgif","saturday","sorry","winners","address","animated","automatically","below","chance","color","common","copies","create","creating","cropping","download","easily","effects","email","ended","enter","formats","frame","frames","giveaway","happen","hundreds","image","images","import","includes","including","license","limited","longer","marker","modify","movie","movies","multiple","often","optimizes","output","overlays","randomly","rsquo","section","services","settings","sharing","slideshows","social","special","tools","trial","value","video"]
	},{
		"title": "Web Excursions for September 12, 2014",
		"url": "/2014/09/12/web-excursions-for-september-12-2014/",
		"tags": ["bookmarks"],
		"date": "Sep 12<span>th</span>, 2014",
		"ts": "1410559080",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Macworld Layoffs Michael Tsai collected comments from around the Internet on the Macworld layoffs. All together it makes a pretty good eulogy. The iOS \"@@\" Shortcut As A TextExpander For Emails Such a smart idea. Press Pass This is a great resource for devs (and anyone needing PR). \"a live directory of journalists organized by beat, outlet, & region.\" slap-editor/slap A nifty, mouse-capable, command line editor. If you don&rsquo;t feel like learning Vim or Emacs, this looks like a great way to quickly make edits to a file on the command line. Mjolnir Hydra, the Lua-based tool for hacking your OS X setup, is now Mjolnir. Check it out and support it! Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["apple","emacs","macworld","mjolnir","check","emacs","emails","hydra","internet","layoffs","macworld","michael","mindmeister","mjolnir","press","shortcut","textexpander","anyone","based","boosting","brainstorming","brought","capable","collaborating","collaborative","collected","command","comments","directory","editor","edits","eulogy","excursions","great","hacking","journalists","layoffs","learning","looks","makes","mapping","mouse","needing","nifty","organized","outlet","partnership","productivity","quickly","region","resource","rsquo","setup","smart","software","support","together"]
	},{
		"title": "Sponsor: PDFpen Scan+",
		"url": "/2014/09/11/sponsor-pdfpen-scan-plus/",
		"tags": ["sponsor"],
		"date": "Sep 11<span>th</span>, 2014",
		"ts": "1410433200",
		"summary": "Thanks to PDFpen Scan+ from Smile for sponsoring BrettTerpstra.com this week! PDFpen Scan+ allows you to scan documents on the go from your iPhone or iPad. And it&rsquo;s not just a scanner, it&rsquo;s a complete OCR (Optical Character Recognition) solution with fast batch scanning and post-process image editing. Quickly, easily, and precisely crop your scans before turning them into searchable, editable documents, all in the palm of your hand. After conversion with OCR, you can preview the results and copy the text for use anywhere. You can share your scanned PDF &mdash; with embedded OCR text &mdash; by email or to your favorite cloud service. With the new PDFpen Scan+ 1.4, you can even automatically upload scans to Dropbox, or to PDFpen&rsquo;s iCloud storage. PDFpen Scan+ is universal. It works on both your iPhone and your iPad, and it&rsquo;s available on the App Store",
		"keywords": ["character","dropbox","icloud","iphone","optical","pdfpen","recognition","smile","store","brettterpstra","character","dropbox","optical","pdfpen","quickly","recognition","smile","store","thanks","allows","anywhere","automatically","available","batch","before","cloud","conversion","documents","easily","editable","editing","email","embedded","favorite","icloud","iphone","image","mdash","precisely","preview","process","results","rsquo","scanned","scanner","scanning","scans","searchable","service","share","solution","sponsoring","storage","turning","universal","upload","works"]
	},{
		"title": "Recap: Sep 10th, 2014",
		"url": "/2014/09/10/recap-sep-10th-2014/",
		"tags": ["recap"],
		"date": "Sep 10<span>th</span>, 2014",
		"ts": "1410390000",
		"summary": "Sponsor: MindMeister (Sep 4th) Thanks to MindMeister, my favorite collaborative mind mapping solution, for sponsoring BrettTerpstra.com this week! More custom ringtones, just for you (Sep 4th) Because it never hurts to have extra ringtones, right? Marked 2.4.1 released (Sep 9th) Marked 2.4 (now 2.4.4) is out, with lots of improvements and bugfixes. Check it out. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["mindmeister","ringtone","because","brettterpstra","check","marked","mindmeister","recaps","sponsor","thanks","bugfixes","collaborative","curated","custom","digest","extra","favorite","format","hurts","improvements","interest","mapping","posts","quick","released","right","ringtones","rsquo","solution","specifically","sponsoring","subscribe","summary","updates","weekly"]
	},{
		"title": "Marked 2.4.1 released",
		"url": "/2014/09/09/marked-2-dot-4-1-released/",
		"tags": ["macappstore","marked"],
		"date": "Sep 9<span>th</span>, 2014",
		"ts": "1410274260",
		"summary": "Marked 2.4.1 is out on the Mac App Store and available for download for direct customers. For non-MAS customers, automatic update will still be broken, but this is the last time! Once you have this version, automatic updates will begin working with the next release! Here&rsquo;s the full changelog, but the highlights are: Allow print headers and footers to be specified per-document using MMD metadata Allow HTML comments () around all metadata for compatibility with other processors Render Leanpub \"X>\" blocks (error, info, exercise, etc.) Previews created with the URL handler () can now have a window and id passed to create a transient window that can be updated by successive calls Streaming preview (more on this soon) Markdown Export - export Markdown results after processing includes and running any preprocessor And of course, the new TextBundle format is supported, and there&rsquo;s a suprise included that you&rsquo;ll learn more about in the next week. Download here, and enjoy",
		"keywords": ["markdown","store","textbundle","allow","discount","download","export","fixes","leanpub","markdown","marked","multi","previews","scrivener","store","streaming","textbundle","automatic","available","begin","blocks","broken","calls","changelog","column","comments","compatibility","create","created","customers","default","detection","direct","document","download","enjoy","error","exercise","export","footers","format","handler","headers","highlights","image","included","includes","latest","learn","metadata","newlines","others","passed","permission","preprocessor","preview","print","processing","processors","release","requests","results","rsquo","running","successive","supported","suprise","theme","trailing","transient","updated","updates","using","version","window","working"]
	},{
		"title": "The Antetype winners!",
		"url": "/2014/09/09/the-antetype-winners/",
		"tags": ["giveaway","macos"],
		"date": "Sep 9<span>th</span>, 2014",
		"ts": "1410271380",
		"summary": "If you didn&rsquo;t win but part of your job is building prototypes for websites, you&rsquo;ll want to check out Antetype anyway. Take it for a spin and see its responsive design tools in action",
		"keywords": ["antetype","design","interface","prototype","responsive","antetype","guzman","mitchell","wieland","action","anyway","building","check","design","lemaire","lucky","prototypes","responsive","rsquo","tools","websites","winners"]
	},{
		"title": "Web Excursions for September 06, 2014",
		"url": "/2014/09/06/web-excursions-for-september-06-2014/",
		"tags": ["bookmarks"],
		"date": "Sep 6<span>th</span>, 2014",
		"ts": "1410011460",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Clicktunes - Enhance your every day music experience! This seems like a really good idea. It watches your average mouse/keyboard movement and changes your Spotify playlist based on how fast you&rsquo;re working. I haven&rsquo;t tried it long enough to get a real feel for how much it helps, but I like the idea so far. Chartist - Simple responsive charts \"Simple Responsive Charts.\" A JS library for creating some great-looking charts with full separation of design and functionality (and Sass). This could be great in Übersicht&hellip; furbo.org - The Terminal A \"Siracusian\" compendium of Terminal tricks on OSX. Here&rsquo;s a Markdown version if you (like me) want to save this in nvALT for future reference. PerfBar A JavaScript tool that puts a \"performance bar\" at the bottom of a page showing load times, DOM element counts, and other useful information for testing. ggordan/GutterColor This is a very cool plugin that puts a colored dot in the gutter indicating the value of any detected CSS color specification. Works with Sass files, too, among others. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["cascading","chart","document","github","javascript","model","object","sheets","style","backblaze","chartist","charts","check","clicktunes","enhance","guttercolor","javascript","markdown","perfbar","responsive","simple","siracusian","spotify","terminal","works","affordably","among","average","backblaze","backs","based","bersicht","bottom","brought","changes","chartist","charts","clicktunes","cloud","color","colored","compendium","computer","counts","creating","design","detected","element","enough","entire","everything","excursions","experience","files","functionality","furbo","ggordan","gionkunz","github","great","gutter","haven","heckyesmarkdown","hellip","helps","https","indicating","information","keyboard","lafikl","ldquo","library","looking","mouse","movement","music","nvalt","others","partnership","perfbar","performance","playlist","plugin","preview","rdquo","reliably","responsive","rsquo","secure","securely","seems","separation","showframe","showing","specification","terminal","testing","times","today","tracesof","tricks","tried","uebersicht","useful","value","version","watches","working"]
	},{
		"title": "More custom ringtones, just for you",
		"url": "/2014/09/04/more-custom-ringtones-just-for-you/",
		"tags": ["music"],
		"date": "Sep 4<span>th</span>, 2014",
		"ts": "1409870880",
		"summary": "Because my wife is out of town and I&rsquo;m bored, I have taken it upon myself to provide four more ringtones, in addition to the six I&rsquo;ve already put out there. As was the case before, the new batch is based on some of the best songs ever, assuming you share my musical proclivities. If you don&rsquo;t, you can always make your own",
		"keywords": ["apple","garageband","iphone","itunes","ringtone","because","assuming","based","batch","before","bored","musical","myself","proclivities","ringtones","rsquo","share","songs","taken"]
	},{
		"title": "Sponsor: MindMeister",
		"url": "/2014/09/04/sponsor-mindmeister/",
		"tags": ["sponsor"],
		"date": "Sep 4<span>th</span>, 2014",
		"ts": "1409828400",
		"summary": "Thanks to MindMeister for sponsoring BrettTerpstra.com this week. I&rsquo;m a huge fan. I consider it one of the best solutions for mind mapping, and the absolute winner for collaborative brainstorming. Unlike traditional mind mapping tools, MindMeister allows for real-time mind mapping sessions between an unlimited number of users. This makes it a fantastic collaboration and planning tool for colleagues, friends and students and enables distributed teams to efficiently visualize and exchange ideas. Maps can even be shared with non-users, published to the web and embedded on blogs and websites. There are quite a few mind mapping tools out there, but what really sets MindMeister apart is its strong focus on intuitiveness. With all unnecessary clutter removed from its UI, users can concentrate on the creative process, capturing their thoughts in a frictionless brainstorming experience. After the initial \"braindump,\" ideas can be moved around to create a proper structure, and all kinds of additional information can be added in the form of notes, links, files, or images. Application possibilities of MindMeister are almost endless. Businesses use the tool for project and meeting management, collaboration with clients, and strategic planning. Similarly, MindMeister is being used by thousands of teachers, students, and entire academic institutions to further creativity and collaboration in education. The tool enables students to take more efficient notes as well as manage and memorize large amounts of information. Being cloud-based, MindMeister runs inside a standard web browser, which means users can access it from any desktop or laptop without having to install anything. There are native mobile apps for iOS and Android which complement the browser solution and allow users to create, edit, and present their maps on the go. With MindMeister&rsquo;s popular Geistesblitz feature users can even capture brainstorms without ever opening the app at all - a text message from their phone, tweet, email, or voice message via Google Glass is enough. MindMeister not only fosters creativity but also improves collaboration and productivity among teams. Start a free trial today to see for yourself",
		"keywords": ["android","browser","collaboration","glass","google","mindmeister","android","brettterpstra","businesses","geistesblitz","glass","google","mindmeister","thanks","unlike","absolute","academic","access","added","allow","allows","almost","among","amounts","apart","based","between","blogs","braindump","brainstorming","brainstorms","browser","capture","capturing","clients","cloud","clutter","collaboration","collaborative","colleagues","complement","concentrate","consider","create","creative","creativity","desktop","distributed","education","efficient","efficiently","email","embedded","enables","endless","enough","entire","exchange","experience","fantastic","feature","files","focus","fosters","frictionless","friends","having","ideas","images","improves","information","initial","inside","install","institutions","intuitiveness","kinds","laptop","leading","links","makes","management","mapping","market","meeting","memorize","message","mobile","moved","native","notes","online","opening","phone","planning","popular","possibilities","process","productivity","project","proper","published","removed","rsquo","sessions","shared","software","solution","solutions","sponsoring","standard","strategic","strong","structure","students","teachers","teams","thoughts","thousands","today","tools","traditional","trial","unlimited","unnecessary","users","visualize","voice","websites","winner"]
	},{
		"title": "iBetterCharge: remember to charge your iDevices",
		"url": "/2014/09/03/ibettercharge-remember-to-charge-your-idevices/",
		"tags": ["appreview","macos","utility"],
		"date": "Sep 3<span>rd</span>, 2014",
		"ts": "1409760480",
		"summary": "I frequently forget about charging my iPhone and iPad until I&rsquo;m headed out the door (or already in the car). I could add repeating reminders to OmniFocus or Calendars or something, but Softorino has a far better solution: iBetterCharge. This free utility will track the battery levels of your devices over your wifi network. When a battery gets down to a percentage you set, it will pop up a notification and optionally play a sound and animate the menu bar icon. It can also notify you when your battery reaches 100%. The setup is pretty magical. You just have to enable \"Sync over Wifi\" for your device in iTunes, connect it once over USB, and iBetterCharge will start tracking it. You can choose to ignore specific devices on the network, if needed. After that, you&rsquo;ll never again pull out your iPad to read in bed only to find it has about 5 minutes of life left in it. As I said, iBetterCharge is free, and I can attest to its effectiveness. If you&rsquo;ve ever suffered from charge-forgetfulness, check it out. There&rsquo;s a video demonstration on YouTube, as well",
		"keywords": ["iphone","itunes","calendars","omnifocus","softorino","youtube","again","animate","attest","battery","charge","charging","check","choose","connect","demonstration","device","devices","effectiveness","forget","forgetfulness","headed","ibettercharge","iphone","itunes","ignore","levels","magical","minutes","needed","network","notification","optionally","reaches","reminders","repeating","rsquo","setup","solution","sound","specific","suffered","track","tracking","utility","video"]
	},{
		"title": "Antetype giveaway!",
		"url": "/2014/09/02/antetype-giveaway/",
		"tags": ["appreview","giveaway","macos","webdesign"],
		"date": "Sep 2<span>nd</span>, 2014",
		"ts": "1409677200",
		"summary": "If you design for the web, you&rsquo;ve probably used an array of tools for wireframing and prototyping. If you haven&rsquo;t tried the latest version of Antetype, though, you should take it for a spin. With a full widget library and special features for responsive design, it makes putting together a clickable prototype easy. There are even free viewers available for Mac and iOS for sharing your prototypes without requiring everyone to have a license for Antetype. I tried Antetype long, long ago, but the latest version really impressed me. I tend to prototype in HTML, but there are often requirements within a project that stipulate wireframes first. This is a great way to do it. Antetype is offering BrettTerpstra.com readers five free copies, valued at $189.99 each. To register for the giveaway, just enter your information below. Privacy guaranteed. The drawing will take place on Monday, September 8th at 12pm CST. Sorry, this giveaway has ended",
		"keywords": ["antetype","design","iphone","prototype","antetype","brettterpstra","monday","privacy","sorry","array","available","below","clickable","copies","design","drawing","ended","enter","everyone","features","first","giveaway","great","guaranteed","haven","impressed","information","latest","library","license","makes","offering","often","project","prototype","prototypes","prototyping","putting","readers","register","requiring","responsive","rsquo","sharing","special","stipulate","together","tools","tried","valued","version","viewers","widget","wireframes","wireframing","within"]
	},{
		"title": "New Perspective Icons for OmniFocus 2",
		"url": "/2014/09/02/new-perspective-icons-for-omnifocus-2/",
		"tags": ["design","macos","omnifocus","productivity"],
		"date": "Sep 2<span>nd</span>, 2014",
		"ts": "1409665080",
		"summary": "I mentioned it on Twitter, but I think it deserves a highlight here. Icons & Coffee have recently released Perspective Icons 2. It&rsquo;s a set of icons designed especially for OmniFocus 2. They make your Perspectives look awesome. The icons come in an array of color themes, including (my favorite) a cold blue monochrome version. They can be as colorful or as sleek as you like. The line styles and weights are all specifically geared to fit in with the default icons and overall look of OmniFocus 2&rsquo;s redesign. Check them out at Icons & Coffee. You can still get them at the intro price of $9.99 US for a limited time",
		"keywords": ["coffee","group","icons","omnifocus","store","check","coffee","icons","omnifocus","perspective","perspectives","twitter","array","awesome","color","colorful","default","deserves","designed","especially","favorite","geared","highlight","icons","including","intro","limited","mentioned","monochrome","overall","price","recently","redesign","released","rsquo","sleek","specifically","styles","themes","think","version","weights"]
	},{
		"title": "The Ulysses winners",
		"url": "/2014/09/01/the-ulysses-winners/",
		"tags": ["giveaway","markdown"],
		"date": "Sep 1<span>st</span>, 2014",
		"ts": "1409624760",
		"summary": "Check out the app if you didn&rsquo;t win, it&rsquo;s a great tool for all kinds of writing. It works better than ever with Marked, too, thanks to the new TextBundle support in both",
		"keywords": ["markdown","soulmen","textbundle","ulysses","ainge","check","congratulations","guillaume","marked","patrick","plattner","textbundle","ulysses","great","kinds","lucky","rsquo","support","thanks","winners","works","writing"]
	},{
		"title": "Web Excursions for August 29, 2014",
		"url": "/2014/08/29/web-excursions-for-august-29-2014/",
		"tags": ["bookmarks"],
		"date": "Aug 29<span>th</span>, 2014",
		"ts": "1409329860",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Somebody Having a stranger verbally deliver your message to someone would be all kinds of creepy fun. I could see some serious personal safety issues arising, so just be careful what information you give to unknown people. TermsFeed - Privacy Policy Generator A handy tool to have for anyone publishing websites or mobile applications. pidlug/recollfs This is exactly what spl originally did, but I changed my mind at the last minute. It&rsquo;s a cool idea that takes the result of a search and creates a folder with symbolic links to the file results. I was using it to make CLI Smart Folders&hellip; might revive that. insanum/sncli Nice! Simplenote from the command line. Via OneThingWell (where else?). Scratch A simple Sublime Text package for creating \"scratch\" files for code snippets and notes. You could potentially hook this up with nvALT for quickly saving snippets to your notes folder&hellip; with some modification it could even indent the code for Markdown purposes",
		"keywords": ["command","interface","markdown","miranda","simplenote","cleanmymac","folders","generator","having","markdown","onethingwell","policy","privacy","scratch","simplenote","smart","somebody","sublime","termsfeed","anyone","applications","arising","brought","careful","changed","command","creates","creating","creepy","deliver","excursions","files","folder","handy","hellip","indent","information","insanum","issues","kinds","links","message","minute","mobile","notes","nvalt","originally","package","partnership","people","personal","pidlug","potentially","publishing","quickly","recollfs","results","revive","rsquo","safety","saving","scratch","search","serious","simple","sncli","snippets","speed","stranger","symbolic","takes","tools","unknown","using","verbally","websites","where"]
	},{
		"title": "Sponsor: Tinderbox",
		"url": "/2014/08/28/sponsor-tinderbox/",
		"tags": ["sponsor"],
		"date": "Aug 28<span>th</span>, 2014",
		"ts": "1409223600",
		"summary": "Thanks to Tinderbox for sponsoring  BrettTerpstra.com this week. Be sure to save $50 using this link! Tinderbox is a tool for notes &ndash; a personal content assistant that helps you visualize, organize, and discover hidden relationships in your work. Lots of tools give you one way to look at your notes, but Tinderbox gives you superb maps, flexible outlines, tree charts, and more.  Better yet, Tinderbox lets you make documents that help organize themselves, with agents that gather notes of special interest, lists that keep themselves sorted, rules that automatically enforce constraints, and inheritance to save repetitive typing.  Tinderbox Six is out now, and offers a lot of new tools and plenty of fresh polish.  Whether you&rsquo;re plotting your next novel or planning a new syllabus, managing a department or launching a political campaign, or simply getting stuff done: if you’re working with complex ideas over a span of months or years, Tinderbox can help. \"An elegant and powerful Mac-based system I&rsquo;ve used for info-management since making the Mac switch six years ago\" &ndash; James Fallows This week only, BrettTerpstra.com readers can save $50 on Tinderbox Six. Go check it out",
		"keywords": ["apple","eastgate","systems","tinderbox","brettterpstra","fallows","james","specials","terpstra","thanks","tinderbox","agents","assistant","automatically","based","blockquote","brettterpstra","campaign","charts","check","class","complex","constraints","content","department","discover","documents","eastgate","elegant","enforce","flexible","fresh","gather","getting","gives","height","helps","hidden","https","ideas","image","inheritance","interest","launching","ldquo","lists","loading","making","management","managing","media","ndash","nofollow","noscript","notes","novel","offers","organize","original","outlines","personal","picture","planning","plenty","plotting","polish","political","powerful","rdquo","readers","relationships","repetitive","rsquo","rules","simply","since","sorted","source","special","sponsor","sponsoring","srcset","stuff","superb","switch","syllabus","system","themselves","tinderbox","title","tools","typing","updates","uploads","using","visualize","width","working","years"]
	},{
		"title": "Recap: Aug 27th, 2014",
		"url": "/2014/08/27/recap-aug-27th-2014/",
		"tags": ["recap"],
		"date": "Aug 27<span>th</span>, 2014",
		"ts": "1409180400",
		"summary": "Sponsor: Dropzone 3 (Aug 21st) A big thanks to one of my favorite productivity tools, Dropzone, for sponsoring BrettTerpstra.com this week! A Spillo bookmarklet (Aug 22nd) If you use Pinboard, you should check out Spillo. If you use Spillo, you should check out this bookmarklet. Übersicht hacking (Aug 22nd) GeekTool for even geekier geeks. Announcing the Textbundle format (and Ulysses 3 giveaway) (Aug 26th) This is what I&rsquo;m most excited about right now (aside from the next version of Marked, which is going to be awesome). A new standard that I&rsquo;ve been working on with the Soulmen. Check it out, and be sure to sign up for the Ulysses giveaway before Monday! Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["board","brettterpstra","bulletin","geektool","markdown","soulmen","spillo","textbundle","ulysses","announcing","brettterpstra","check","dropzone","geektool","marked","monday","pinboard","recaps","soulmen","spillo","sponsor","textbundle","ulysses","announcing","aside","awesome","before","bersicht","bookmarklet","brettterpstra","categories","check","class","curated","digest","dropzone","excited","favorite","format","geekier","geeks","giveaway","going","hacking","height","https","image","images","interest","loading","media","noscript","original","picture","posts","productivity","quick","recap","right","rsquo","source","specifically","spillo","sponsor","sponsoring","srcset","standard","subscribe","summary","textbundle","thanks","title","tools","ubersicht","ulysses","updates","version","weekly","width","working"]
	},{
		"title": "Announcing the Textbundle format (and Ulysses 3 giveaway)",
		"url": "/2014/08/26/announcing-the-textbundle-format-and-ulysses-3-giveaway/",
		"tags": ["markdown","textbundle"],
		"date": "Aug 26<span>th</span>, 2014",
		"ts": "1409063220",
		"summary": "I&rsquo;ve been working with the Soulmen, creators of Ulysses, to create a new standard for the transport of plain text between applications. It&rsquo;s called Textbundle, and I&rsquo;m really excited about the possibilities here. I hope to see as many developers as possible jump on board. The Textbundle format is very simple. A folder containing a plain text file, a JSON data file, and an assets sub-folder. An app, such as Ulysses, can write a Textbundle out and pass it to Marked, and all of the necessary components are automatically included. Images, additional text files, and any metadata needed are all there and safe from sandboxing restrictions. Sandboxing is the primary motivation, and Textbundle solves the major issue of referencing external files in Markdown. The bundles that pass between Marked 2 and Ulysses 3 are labeled as \"transient\" in the JSON data. This means that Ulysses is free to overwrite the file, and Marked knows that the data can be rewritten at any time. Non-transient files, though, can be used by multiple writing applications. This means that data such as revision history, writing statistics, and all kinds of things we haven&rsquo;t imagined yet can be stored with a file that can move across folders, entire machines, and even platforms. When a PC user opens a Textbundle, they have full access to the original Markdown file. They can edit it and send the folder back, and on a Mac it once again appears as a single \"Textbundle\" file. There are many, many exciting possibilities for the future here. Every app that implements support can have a namespaced section in the data file to write whatever information is helpful to them. Other apps can access their information and act on it appropriately, too. To celebrate the Textbundle release, I&rsquo;m giving away three copies of Ulysses 3. The Soulmen are also giving away 10 copies of Marked on their blog. Textbundle is supported in both now, so previews between the two apps are fluid and free of sandboxing restrictions. Hooray! Sign up below for a chance at one of three copies of Ulysses 3 (value $49.99 US). Winners will be drawn on Monday, September 1st at 3pm. Sorry, this giveaway has ended",
		"keywords": ["markdown","soulmen","ulysses","hooray","images","markdown","marked","monday","sandboxing","sorry","soulmen","textbundle","ulysses","winners","access","across","again","appears","applications","appropriately","assets","automatically","below","between","board","bundles","called","celebrate","chance","components","containing","copies","create","creators","developers","ended","entire","excited","exciting","external","files","fluid","folder","folders","format","giveaway","giving","haven","helpful","history","imagined","implements","included","information","kinds","knows","labeled","machines","major","metadata","motivation","multiple","namespaced","necessary","needed","opens","original","overwrite","platforms","possibilities","possible","previews","primary","referencing","release","restrictions","revision","rewritten","rsquo","sandboxing","section","simple","single","solves","standard","statistics","stored","support","supported","transient","transport","value","whatever","working","write","writing"]
	},{
		"title": "Web Excursions for August 23, 2014",
		"url": "/2014/08/23/web-excursions-for-august-23-2014/",
		"tags": ["bookmarks","developer"],
		"date": "Aug 23<span>rd</span>, 2014",
		"ts": "1408812000",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. This is the developer edition, I guess. Calling Swift functions from Objective-C \"It&rsquo;s a lot easier than the docs make it out to be, especially if you&rsquo;re just using a single target.\" By the way, Erica is the smartest developer (and probably person) that I know. If you develop for Mac and don&rsquo;t read her blog, you should add it to your feeds now. Introduction to Grunt and Gulp.js &ndash; Mijingo Great new series from Ryan Irelan on JavaScript task runners (Grunt and Gulp). 10 videos, 90 minutes of information. FGRibreau/dot-clipboard dot-clipboard monitors your clipboard and runs scripts based on its content. Via OneThingWell. This offers a lot of possibilites, including replicating functionality I&rsquo;ve already built for StretchLink (coming to the MAS soon, I hope). Using Sass source maps in WebKit Inspector If you use a CSS preprocessor, source maps are the awesome. Here&rsquo;s some info for using them with Sass. amit-bansil/TicketMaster For Sublime Text: turn your TODO comments into GitHub issues, complete with a link. Very cool",
		"keywords": ["cascading","github","grunt","javascript","sheets","style","calling","check","erica","fgribreau","github","great","grunt","inspector","introduction","irelan","javascript","mijingo","onethingwell","setapp","stretchlink","sublime","swift","ticketmaster","using","webkit","access","awesome","bansil","based","brought","built","clipboard","coming","comments","content","develop","developer","easier","edition","especially","excursions","feeds","functionality","functions","guess","hundreds","including","information","issues","minutes","monitors","monthly","ndash","offers","partnership","person","possibilites","preprocessor","replicating","rsquo","runners","scripts","series","single","smartest","source","subscription","target","today","using","videos"]
	},{
		"title": "Übersicht hacking",
		"url": "/2014/08/22/ubersicht-hacking/",
		"tags": ["ubersicht"],
		"date": "Aug 22<span>nd</span>, 2014",
		"ts": "1408732080",
		"summary": "As I&rsquo;ve mentioned (all over the place), I&rsquo;ve been hacking around with Übersicht for a few days now. It&rsquo;s been a lot of fun. Übersicht is GeekTool for even geekier geeks. You edit the widgets manually in CoffeeScript (or JavaScript, if you&rsquo;re crazy) and Stylus/CSS. Position is determined entirely by CSS, and you need some skill in that area to even start using Übersicht. I&rsquo;ve gone ahead and built a repository of some of the widgets I&rsquo;m working on, and there&rsquo;s a project page up for them with direct downloads. You can load up the interface with all your widgets in your web browser by pointing it to localhost:41416. This is handy if you need more debugging power than the built in debug panel (which you can&rsquo;t type in). Use to make lighter widgets visible. You can build your own version of the server and the wrapping OS X menu bar app from source code. For the true hackers. The server (Node.js) can be run standalone, too. LocalStorage is available, and you can communicate between widgets with it. I&rsquo;m using this in the LoadChart widget to store load average readings over time (JSON array). I can (I&rsquo;m not right now) also have the Load widget store its readings in LocalStorage and have the chart widget pick them up without running any commands of its own. There are a lot of possibilities, especially for charting events. CSS3 animations are a blast. They can also be very CPU intensive, especially opacity animations, so watch your step. Note that definitions in the root of the stylesheet get borked when its integrated, so they need to be in regular CSS in the function. All HTML5 elements work, including and , with full JavaScript control. You can create alarms and other annoyances with simple audio embeds, or create a stunning desktop weather visualization by dynamically loading different videos based on weather API readings. There&rsquo;s more, but basically you have all the power of WebKit available. CoffeeScript is fun, Stylus is awesome (hadn&rsquo;t used it until now), and Übersicht is a rabbit hole for me. As I noted, be careful with CSS3/jQuery animations and refresh rates on CPU-intensive widgets. It&rsquo;s not hard to crash Übersicht if you try. Have fun, and check out the project page",
		"keywords": ["coffeescript","geektool","javascript","webkit","&#39;body&#39;","coffeescript","geektool","javascript","loadchart","localstorage","position","stylus","webkit","ahead","alarms","animations","annoyances","array","audio","available","average","awesome","background","based","bersicht","between","blast","borked","brettterpstra","browser","build","built","careful","chart","charting","check","class","commands","control","crash","crazy","create","debug","debugging","definitions","desktop","desktops","determined","different","direct","downloads","dynamically","elements","embeds","entirely","especially","events","felixhageloh","function","geekier","geeks","github","hackers","hacking","handy","height","highlighter","https","image","including","integrated","intensive","interested","interesting","interface","jquery","keyframe","language","lighter","loading","localhost","manually","media","mentioned","noscript","noted","opacity","original","panel","people","picture","plaintext","pointing","possibilities","project","projects","rabbit","rates","readings","refresh","regular","repository","right","rouge","rsquo","running","server","simple","skill","source","srcset","standalone","store","stunning","stylesheet","title","tracesof","ttscoff","uberdesktop","ubersicht","uebersicht","uploads","using","version","video","videos","visible","visualization","watch","weather","widget","widgets","width","working","wrapping"]
	},{
		"title": "A Spillo bookmarklet",
		"url": "/2014/08/22/a-spillo-bookmarklet/",
		"tags": ["bookmarking","bookmarklet","pinboard"],
		"date": "Aug 22<span>nd</span>, 2014",
		"ts": "1408713180",
		"summary": "I&rsquo;ve spent my free time the last few days playing with Übersicht, but I found enough time to try out Spillo. It&rsquo;s a new Pinboard client for Mac, and it&rsquo;s not bad at all. This isn&rsquo;t a review, though. This is just a little helper for people who might also be using (or playing with) Spillo. My first wish was that it had a menubar-only mode. Just an icon in the menu bar and a hotkey to show the window or create a bookmark. You can close the window and use the bookmark creator without activating the app, though, so I let it go. Then I looked at browser integration and found that they only offered extensions, not bookmarklets. The extensions only launch a prepopulated \"Add Bookmark\" window from the app. If they offered a popup with search, tagging, etc., within the browser, I&rsquo;d be fine with it. But for this, I&rsquo;d rather have a bookmarklet that I can assign to a hotkey and customize as needed. I dug apart the Safari extension and figured out the URL scheme. Then I just added the ability to use text selected on the page to populate the description, with a fallback to the meta description for the page (the extension&rsquo;s default). Here&rsquo;s the result. If you use Spillo (and you should check it out), I imagine you&rsquo;ll find it useful",
		"keywords": ["chrome","safari","&#39;desc&#39;","&#39;spillo","&#39;title&#39;","&#39;url&#39;","bdescription","bdocument","bfunction","blocation","bookmark","breturn","dbookmark","dfunction","dlocation","dreturn","fbookmark","pinboard","safari","spillo","ability","above","activating","added","apart","apple","assign","bersicht","bookmark","bookmarklet","bookmarklets","bookmarks","brettterpstra","browser","check","class","client","close","content","create","createrange","creator","customize","default","description","document","elwrapper","encodeuricomponent","enough","extension","extensions","fallback","figured","first","found","function","getelementsbytagname","getmetadescription","getseltext","getselection","height","helper","hotkey","https","image","imagine","integration","itunes","javascript","launch","ldquo","length","little","loading","location","looked","media","menubar","needed","noscript","offered","original","people","picture","pinboard","playing","populate","popup","prepopulated","rather","rdquo","return","rsquo","scheme","search","selected","selection","source","spent","spillo","spillobookmarklet","srcset","tagging","title","tolowercase","tostring","uploads","useful","using","width","window","within"]
	},{
		"title": "Sponsor: Dropzone 3",
		"url": "/2014/08/21/sponsor-dropzone-3/",
		"tags": ["sponsor"],
		"date": "Aug 21<span>st</span>, 2014",
		"ts": "1408618800",
		"summary": "Thanks to Aptonic and the amazing Dropzone 3 for sponsoring BrettTerpstra.com this week. I wrote a bit about Dropzone 3 recently, so if you want to hear more thoughts on it, see my review. Dropzone is a productivity tool that enhances drag and drop on your Mac. Drag files onto the menu item and a beautifully designed and animated grid of all your actions opens. Share with services such as AirDrop, Imgur, FTP, Amazon S3, Facebook, Twitter and many others. Move and copy files, launch applications and even develop your own actions using the powerful Ruby based scripting API. Dropzone 3 is a huge update to the app that takes Dropzone to a whole new level. You can now add actions to your grid faster thanks to the new quick add menu or by dropping folders or apps onto the &lsquo;Add to Grid&rsquo; area. Quickly reorganize your actions using drag and drop and delete them by holding the option key. The new in-grid progress bars let you keep track of task progress. Also see how tasks are progressing at a glance in the new animated menu item. Drop Bar is another great new feature - Drag files you know you&rsquo;ll need later onto the Drop Bar area of the grid to stash them tempororily. Drag stacks on top of each other to combine them. You can even drag a stack onto another Dropzone action. In Dropzone 3, the developer API has undergone a major overhaul. You can now duplicate existing actions and tweak them to your liking. A new bundle system lets you distribute needed libraries or tools along with your action. Actions can now be auto-updated as they are improved. With a little Ruby knowledge you&rsquo;ll be thinking of your own uses in no time - check out the developer documentation on GitHub",
		"keywords": ["amazon","dropzone","facebook","interface","programming","protocol","twitter","actions","airdrop","amazon","aptonic","brettterpstra","dropzone","facebook","github","imgur","quickly","readme","share","thanks","twitter","action","actions","amazing","animated","another","applications","aptonic","based","beautifully","brettterpstra","bundle","check","class","designed","develop","developer","distribute","dropping","dropzone","duplicate","enhances","faster","feature","files","folders","github","glance","great","height","holding","https","image","improved","knowledge","later","launch","level","libraries","liking","little","loading","lsquo","major","master","media","needed","nofollow","noscript","opens","original","others","overhaul","picture","powerful","productivity","progressing","quick","recently","reorganize","rsquo","scripting","services","source","sponsor","sponsoring","srcset","stack","stacks","stash","strong","system","takes","tasks","tempororily","thanks","thinking","thoughts","title","tools","track","tweak","undergone","updated","uploads","using","whole","width","wrote"]
	},{
		"title": "Recap: Aug 20th, 2014",
		"url": "/2014/08/20/recap-aug-20th-2014/",
		"tags": ["recap"],
		"date": "Aug 20<span>th</span>, 2014",
		"ts": "1408575600",
		"summary": "Sponsor: PDFpen for iPad (Aug 14th) A big thanks to PDFpen and Smile for their continued support. PDFpen for iPad lets you do amazing things with PDFs while you&rsquo;re on the go. Check it out. Shell tricks: A time to kill (Aug 15th) Following up on my post about the command, here are some tricks for doing the opposite. &lsquo;Delight is in the Details&rsquo; winners (and discount!) (Aug 18th) Check the post for a coupon worth 25% off your own copy of Delight is in the Details. Loadbar for Übersicht (Aug 19th) I&rsquo;m having a lot of fun with Übersicht this week. Check out my first attempt, and stay tuned for more. Keybindings that everyone should have (Aug 20th) Don&rsquo;t be scared, adding ease and convenience to your everyday typing is just a few lines of code away. Overtired #9 and Systematic #110 On Overtired this week, Christina and I got real with talk about our own struggles with depression and the stigmas surrounding mental illness. It gets lighter right after it goes completely black. John Roderick joined me for Part II of his tale on Systematic #110. Definitely a must listen. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["document","format","pdfpen","portable","roderick","smile","check","christina","definitely","delight","details","keybindings","loadbar","overtired","pdfpen","recaps","roderick","shell","smile","sponsor","systematic","adding","amazing","bersicht","black","brettterpstra","categories","class","command","completely","continued","convenience","coupon","curated","delight","depression","details","digest","discount","doing","everyday","everyone","first","format","having","height","highlighter","https","illness","image","images","interest","joined","keybindings","language","lighter","listen","loadbar","loading","lsquo","media","mental","noscript","opposite","original","overtired","pdfpen","picture","plaintext","posts","quick","recap","right","rouge","rsquo","scared","shell","source","specifically","sponsor","srcset","stigmas","struggles","subscribe","summary","support","surrounding","systematic","thanks","title","tricks","tuned","typing","ubersicht","updates","weekly","while","width","winners","worth"]
	},{
		"title": "Keybindings that everyone should have",
		"url": "/2014/08/20/keybindings-that-everyone-should-have/",
		"tags": ["keybindings"],
		"date": "Aug 20<span>th</span>, 2014",
		"ts": "1408541400",
		"summary": "I&rsquo;m very aware that while many are impressed with my massive keybindings file, 99% of people who check it out shy away from ever implementing it. Even I don&rsquo;t implement all of it. I thought I&rsquo;d point out a few of my favorites that you can set up on their own in a more manageable way. Save the file as \"~/Library/KeyBindings/DefaultKeyBinding.dict\" (unless you already have one!) Restart apps as needed for the keybindings to load One of the keybindings that I miss the most when I&rsquo;m outside of a good code editor is . In most editors (and first in TextMate to the best of my knowledge), hitting this combination will insert a new line after the current paragraph and jump you to it, regardless of where the cursor is in the paragraph. I also use one with that will do the same, but above the current paragraph. You can select a paragraph by hitting , using the up arrow to get to the beginning, then hitting and using the down arrow to get to the end. That&rsquo;s horrible. You can use to jump straight to the beginning of the paragraph instead of the edge of the screen. Then hit to select to the end of the actual paragraph instantly. That&rsquo;s much better. If you&rsquo;re me, though, you want to do that in a single stroke. This keybinding lets you select the current line/paragraph with . If you want to make sure you get everything, including the last line break, use . If you blog at all, you&rsquo;re used to creating slugs (hyphenated words). If you do anything with file naming and prefer to keep spaces out of your titles, you&rsquo;ve probably done this as well. This keystroke () lets you add a hyphen between the next two words from the cursor, then advance so that repeated keystrokes continue to hyphenate. With two simple commands you can have a pair of keyboard shortcuts that will store the cursor position in your text so you can go and making an edit or check a reference elsewhere in the document, then jump right back to where you were. I bind these to and . This one is especially handy when working with lists in Markdown, but is good for arranging paragraphs or lines of text anywhere. With and you can move the current line of text above or below whatever precedes or follows it. Note: this will balk if you try to move into an area with no newline where it&rsquo;s trying to go. Thus, the last item in a list that&rsquo;s the last thing on the page is a little problematic. Beyond that minor snag, this is something&hellip;",
		"keywords": ["emacs","keyboard","markdown","shortcut","textmate","beyond","command","control","create","defaultkeybinding","enter","hyphenate","keybindings","knock","library","markdown","restart","return","shift","textmate","above","alternate","anywhere","archive","arranging","arrow","aware","beginning","below","between","bindings","blank","bookmark","brackets","break","brettterpstra","centerselectioninvisiblearea","character","check","class","combination","command","commandreturn","commands","continue","creating","curly","cursor","daily","deletetomark","document","editor","editors","elsewhere","entire","especially","everything","favorites","first","follows","github","groovy","handy","header","height","highlight","highlighter","hitting","horrible","https","hyphen","hyphenate","hyphenated","image","implementing","impressed","including","insertnewline","inserttext","instantly","keybinding","keybindings","keyboard","keystroke","keystrokes","knowledge","language","ldquo","linemovement","lists","little","loading","making","manageable","massive","match","media","minor","moveleft","moveright","moverightandmodifyselection","movetobeginningofparagraph","movetoendofparagraph","movetoendofparagraphandmodifyselection","movewordleft","movewordright","naming","needed","needs","newline","noscript","original","outside","paragraph","paragraphs","people","picture","plaintext","point","position","precedes","prefer","problematic","rdquo","regardless","repeated","return","right","rouge","rsquo","screen","selectparagraph","selecttomark","selectword","selectparagraph","series","setmark","shortcuts","simple","single","slugs","source","space","spaces","srcset","store","straight","stroke","style","swapwithmark","textmate","thought","title","titles","topic","trying","ttscoff","uploads","using","whatever","where","while","width","words","working"]
	},{
		"title": "Loadbar for Übersicht",
		"url": "/2014/08/19/loadbar-for-ubersicht/",
		"tags": ["geeklet","ubersicht"],
		"date": "Aug 19<span>th</span>, 2014",
		"ts": "1408474680",
		"summary": "I recreated most of my current GeekTool desktop in Übersicht this morning. Übersicht (which I found via Patrick Welker) is a potential GeekTool replacement which uses WebKit and Node.js to generate \"widgets\" on your dekstop. As far as functionality goes, it&rsquo;s not much better or worse than GeekTool or NerdTool. However, being able to style widgets with HTML and CSS opens up quite a few aesthetic possibilities. After creating my basic, boring widgets, I wanted to take a quick look at how things could be cooler in this land of CSS3. I created \"Loadbar,\" an animated, color-coded vertical bar that displays the 5-minute load average. It probably needs some tweaking, but I put it up on Github so others could play with it (and let me know where it&rsquo;s broken). If you&rsquo;re using Übersicht, you probably know how to load a widget. If not, just download the package, unzip it, and put the \"loadbar.widget\" folder in your widgets location (use the Übersicht menu to \"Open Widgets Folder\"). More details are availabe in the README file. A quick demo below. Given it&rsquo;s a 5-pixel stripe on the edge of the screen, it&rsquo;s a little hard to show well. But I tried&hellip",
		"keywords": ["bersicht","cascading","geektool","github","sheets","style","webkit","folder","geektool","github","however","loadbar","nerdtool","patrick","readme","video","webkit","welker","widgets","youtube","aesthetic","animated","availabe","average","basic","below","bersicht","boring","bottom","broken","class","coded","color","container","cooler","created","creating","dekstop","desktop","details","displays","download","figure","folder","found","functionality","geektool","github","height","hellip","https","ldquo","little","loadbar","location","master","minute","morning","needs","opens","others","package","padding","pixel","possibilities","potential","quick","rdquo","recreated","releases","replacement","rocketink","rsquo","screen","showcase","stripe","style","sxvlj","tracesof","tried","ttscoff","tweaking","ubersicht","uebersicht","unsolicited","unzip","using","vertical","video","videoid","wanted","watch","where","widget","widgets","width","worse","youtube"]
	},{
		"title": "'Delight is in the Details' winners (and discount!)",
		"url": "/2014/08/18/delight-is-in-the-details-winners-and-discount/",
		"tags": ["books","giveaway","video"],
		"date": "Aug 18<span>th</span>, 2014",
		"ts": "1408384140",
		"summary": "Big news for everyone who entered the Delight is in the Details giveaway: Shawn has upped the number of available giveaways from three to five! So, out of the hundreds of hopefuls, here are the lucky few: Didn&rsquo;t win? Never fear, you can still get 25% off the price of the Complete Package using this link (good for one week only). Go check it out",
		"keywords": ["blanc","creativity","delight","details","shawn","andrew","beavers","delight","details","glasson","jason","melcer","michael","package","robinson","shawn","available","check","entered","everyone","giveaway","giveaways","hopefuls","hundreds","lucky","price","rsquo","upped","using"]
	},{
		"title": "Shell tricks: A time to kill",
		"url": "/2014/08/15/shell-tricks-a-time-to-kill/",
		"tags": ["scripting","shell","terminal"],
		"date": "Aug 15<span>th</span>, 2014",
		"ts": "1408112220",
		"summary": "I detailed the command in the last Shell Tricks post, so I thought I&rsquo;d go over some tricks for doing the opposite next: closing and quitting apps. The first thing I&rsquo;ll mention is a shell script from Jon Stovell called . You can download it from his freeware page. It uses AppleScript (with some great logic) to \"nicely\" quit any application. I&rsquo;ve mentioned it before, as well as tricks for adding Bash completion to it. Second, I&rsquo;ll point out my shell command. The first version was handy, and I made some additions shortly after. I have a new version for you today that incorporates the command. First, you need the (find processes) command, which gives you a case-insensitive, partial title search for running processes (you can add both of these to your ): And here&rsquo;s the revised command. Give it part of a process or app name and it will give you a menu of all matches (case-insensitive). Cancel the menu with \"q\" or enter a number. If the process is a Mac app, it will use quit, otherwise it will the specific process chosen. Now you have the counterpart(s) to OS X&rsquo;s command. Enjoy",
		"keywords": ["applescript","command","interface","script","shell","applescript","cancel","enjoy","first","second","shell","stovell","tricks","adding","additions","before","called","chosen","closing","command","counterpart","detailed","doing","download","enter","first","freeware","function","gives","great","handy","incorporates","insensitive","local","location","logic","match","matches","mention","mentioned","nicely","opposite","partial","point","process","processes","quitting","rsquo","running","script","search","shell","shortly","specific","thought","title","today","tricks","version"]
	},{
		"title": "Sponsor: PDFpen for iPad",
		"url": "/2014/08/14/sponsor-pdfpen-for-ipad/",
		"tags": ["sponsor"],
		"date": "Aug 14<span>th</span>, 2014",
		"ts": "1408026600",
		"summary": "A big thanks to Smile and PDFpen for iPad for sponsoring BrettTeprstra.com this week! PDFpen for iPad lets you edit PDFs anywhere you are, and it supports popular Bluetooth styluses. Draw directly on PDFs with precision using the Jot Touch, Pogo Connect, JaJa, and Wacom Bluetooth Styluses. Sign a contract, fix a typo, correct a price list, or fill out a form while you&rsquo;re on the go. Take PDF documents with you and add notes, highlighting, and other markup even when you&rsquo;re away from the desk. You can sync PDFs with PDFpen for OS X using iCloud or Dropbox, and PDFpen for iPad can grab and save PDFs to and from Dropbox, Evernote, Google Drive, Box, and Transporter. Learn more about PDFpen for iPad at smilesoftware.com/brett",
		"keywords": ["bluetooth","document","drive","dropbox","format","google","icloud","pdfpen","portable","bluetooth","brettteprstra","connect","drive","dropbox","evernote","google","learn","pdfpen","smile","styluses","touch","transporter","wacom","anywhere","brett","contract","directly","documents","highlighting","icloud","markup","notes","popular","precision","price","rsquo","smilesoftware","sponsoring","styluses","supports","thanks","using","while"]
	},{
		"title": "Recap: Aug 13th, 2014",
		"url": "/2014/08/13/recap-aug-13th-2014/",
		"tags": ["recap"],
		"date": "Aug 13<span>th</span>, 2014",
		"ts": "1407970800",
		"summary": "Sponsor: MindNode 3 (Aug 7th) A big thanks to MindNode for sponsoring BrettTerpstra.com this week. If you&rsquo;re looking for an elegant mind mapping solution for iOS and Mac with great sync, this is it. At least it&rsquo;s not a telethon (Aug 8th) Thanks to everyone who&rsquo;s helped out by offering some monthly support for the writing I do here! ezsnippets for Marked 2, text expansion on the fly (Aug 8th) A preprocessor script for Marked 2 (and a standalone System Service) that allows you to create TextExpander-style abbreviations on the fly while writing long pieces. Clarify for Markdown blogging (Aug 11th) Clarify for Mac has recently added some excellent Markdown support and become a truly powerful tool for Markdown nerds into blogging and creating documentation. &lsquo;Delight is in the Details&rsquo; giveaway! (Aug 13th) Jump in now and enter for a chance to win \"The Complete Package\" of Shawn Blanc&rsquo;s &lsquo;Delight is in the Details!&rsquo; Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["markdown","mindnode","blanc","brettterpstra","clarify","delight","details","markdown","marked","mindnode","package","recaps","service","shawn","sponsor","system","textexpander","thanks","abbreviations","added","allows","blogging","chance","create","creating","curated","digest","elegant","enter","everyone","excellent","expansion","ezsnippets","format","giveaway","great","helped","interest","looking","lsquo","mapping","monthly","nerds","offering","pieces","posts","powerful","preprocessor","quick","recently","rsquo","script","solution","specifically","sponsoring","standalone","style","subscribe","summary","support","telethon","thanks","truly","updates","weekly","while","writing"]
	},{
		"title": "'Delight is in the Details' giveaway!",
		"url": "/2014/08/13/delight-is-in-the-details-giveaway/",
		"tags": ["books","giveaway","video"],
		"date": "Aug 13<span>th</span>, 2014",
		"ts": "1407961680",
		"summary": "I mentioned a bit ago that Shawn Blanc&rsquo;s book, &lsquo;Delight is in the Details&rsquo; has recently received a big update. I&rsquo;m happy to announce that Shawn is giving away 3 copies of \"The Complete Kit\" to BrettTerpstra.com readers. That&rsquo;s the eBook, the audiobook, interviews, videos, and more ($45 US value). Just enter a name and email below to sign up for the giveaway. Winners will be randomly chosen by the Giveaway Robot on Monday, August 18th at 12pm CST. Sorry, this giveaway has ended",
		"keywords": ["blanc","creativity","delight","ebook","iphone","shawn","twitter","blanc","brettterpstra","delight","details","giveaway","monday","robot","shawn","sorry","winners","announce","audiobook","below","chosen","copies","ebook","email","ended","enter","giveaway","giving","happy","interviews","lsquo","mentioned","randomly","readers","received","recently","rsquo","value","videos"]
	},{
		"title": "The OnTop Winners",
		"url": "/2014/08/12/the-ontop-winners/",
		"tags": ["appstore","giveaway","iphone"],
		"date": "Aug 12<span>th</span>, 2014",
		"ts": "1407865020",
		"summary": "Thanks to everyone who entered. If you haven&rsquo;t yet, be sure to check out OnTop on the App Store! Note from Giveaway Robot: C&rsquo;mon, that&rsquo;s not a name. Seriously. I&rsquo;ll give it to you this time, but&hellip;&nbsp;↩",
		"keywords": ["store","andre","artur","david","essner","giveaway","johan","keating","kraft","matthew","meenhorst","ontop","patrick","reinier","robot","romin","roque","seriously","store","thanks","yinjie","apple","backlink","calendar","check","class","endnotes","entered","everyone","fnref","footnote","footnotes","giveaway","haven","hellip","https","itunes","manager","notaname","noteref","ontop","reversefootnote","rsquo","winners"]
	},{
		"title": "Clarify for Markdown blogging",
		"url": "/2014/08/11/clarify-for-markdown-blogging/",
		"tags": ["appreview","macos","markdown"],
		"date": "Aug 11<span>th</span>, 2014",
		"ts": "1407776400",
		"summary": "I&rsquo;ve mentioned this before, but wanted to do an official post now that Clarify fully supports Markdown and has become a great blogging tool. Clarify is a great tool that lets you take screenshots, annotate them, add paragraphs of text and then output to PDF, DOC, web and more. It&rsquo;s designed for screen-based documentation, and I&rsquo;ve always loved it for exactly that, but recent improvements have actually made it a great tool for blogging tutorials and presentations. There are two ways you can use Markdown in Clarify now. First, you can write in Markdown right in Clarify and have it output exactly what you write. This is called \"Markdown Passthru.\" Second, you can write using its rich text tools and have the output converted to Markdown, ready for posting on a Markdown-based blog. It will output all of the images in the \"lesson\" in whatever format you need, with or without frame effects, and can output full size as well as images resized to specified dimensions. In this second option, you can also include raw markdown in your post and it will be output as written along with the converted rich text portions. You can even customize your own Markdown output using PHP and some basic templating. For example, I have one called \"Jekyll\" now that outputs Liquid tags for images instead of Markdown, and moves my images into my uploads folder1. I just export using the Jekyll plugin to my \"_drafts\" folder, and I have a ready-to-publish post, complete with YAML headers. You can find examples of Markdown templates on the Clarify site. Clarify is available on the Mac App Store, or grab a free trial at clarify-it.com. Note that the App Store version of Clarify can&rsquo;t open up your entire drive for moving files around, so this functionality is limited to the non-MAS version.&nbsp;↩",
		"keywords": ["format","jekyll","store","clarify","first","jekyll","liquid","markdown","passthru","second","store","annotate","apple","available","backlink","based","basic","before","blogging","brettterpstra","called","clarify","class","converted","customize","designed","dimensions","download","drafts","drive","effects","endnotes","entire","example","examples","export","files","fnref","folder","footnote","footnotes","format","frame","fully","functionality","great","headers","height","https","image","images","improvements","itunes","ldquo","lesson","limited","loading","loved","markdown","media","mentioned","moves","moving","noscript","noteref","official","original","output","outputs","paragraphs","picture","plugin","portions","posting","presentations","publish","rdquo","ready","recent","resized","reversefootnote","right","rsquo","safemode","sample","screen","screenshot","screenshots","searchlink","second","source","srcset","supports","templates","templating","title","tools","trial","tutorials","uploads","using","version","wanted","whatever","width","write","written"]
	},{
		"title": "Web Excursions for August 11, 2014",
		"url": "/2014/08/11/web-excursions-for-august-11-2014/",
		"tags": ["bookmarks"],
		"date": "Aug 11<span>th</span>, 2014",
		"ts": "1407763740",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Four Years in Apple&rsquo;s Ecosystem: An Expenses Report I&rsquo;m not sure if my wife would be thrilled that I took the time to do something like this or apalled with the results. Probably both. Interesting \"expense report\" on App spending from The Typist. Navdy If I had an extra $300, you can bet this is what I&rsquo;d spend it on. Heads up display for your car, with special apps and freaking lasers. I mean \"hand gestures.\" Trumbowyg : a lightweight WYSIWYG editor Another good-looking WYSIWYG editor with plugin capabilities and very clean output. itspriddle/vim-marked Open the current Vim buffer in Marked, now supports Marked 1 and 2. junegunn/fzf Another tool for menus in the shell, complete with fuzzy search. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["android","apple","board","diagnostics","display","google","wysiwyg","another","apple","check","ecosystem","expenses","heads","interesting","marked","mindmeister","navdy","report","trumbowyg","typist","wysiwyg","years","apalled","boosting","brainstorming","brought","buffer","capabilities","clean","collaborating","collaborative","display","editor","excursions","expense","extra","freaking","fuzzy","gestures","itspriddle","junegunn","lasers","lightweight","looking","mapping","marked","menus","output","partnership","plugin","productivity","report","results","rsquo","search","shell","software","special","spend","spending","supports","thrilled"]
	},{
		"title": "ezsnippets for Marked 2, text expansion on the fly",
		"url": "/2014/08/08/ezsnippets-for-marked-2-text-expansion-on-the-fly/",
		"tags": ["marked","scripting"],
		"date": "Aug 8<span>th</span>, 2014",
		"ts": "1407517200",
		"summary": "First, I&rsquo;d like to thank everyone who&rsquo;s responded to my \"pledge drive.\" It&rsquo;s encouraging, and I appreciate all the new subscribers and the ideas that have been shared with me for adding value to the proposition! In the spirit of productivity, here&rsquo;s another preprocessor script for Marked 2 that you might find useful. It&rsquo;s based on a great idea that Stephen Margheim developed for Alfred. What it does is allow you to create \"snippets\" as you write a document, similar to TextExpander but limited just to the current document. You can create them on the fly as you write and then use them throughout the document. Obviously TextExpander is the better choice for phrases that you use regularly, but this solution works really well for words and phrases that you want to abbreviate but not necessarily pollute your TextExpander snippet collection with. Download the script from this Gist and save it to a script folder on your drive as . Make it executable with Open up Marked 2 preferences (⌘,), and go to the \"Advanced\" tab in preferences1. In the \"Custom Processor\" box, choose the Preprocessor tab. Enter the path to the script in the path field You can optionally enable \"Automatically enable for new windows\" to have the script run by default on all new files you open. If the file doesn&rsquo;t contain any snippets, it won&rsquo;t do anything, so it doesn&rsquo;t hurt to just keep it on all the time. If you choose not to do this, you can enable the processor by clicking the yellow indicator in the bottom toolbar of a document, or by pressing &#2C6;⌘⌥C. To use the new snippet functionality you just define snippets and abbreviations as you write. The format is . When you write a word or phrase that you&rsquo;d like to have an abbrevation for, just surround it in curly brackets, and at the end add a double colon followed by an abbreviation containing no spaces. The abbreviation can be anything you like, including a prefix character if you want to make absolutely sure you avoid accidental triggering. For example: Now, in the rest of the document, I can use the abbreviation anywhere I want \"The Unofficial Apple Weblog\" inserted. Nifty, right? The caveat to this is that your original Markdown file will now contain the abbreviations and they won&rsquo;t expand unless you&rsquo;re viewing in Marked with the preprocessor enabled. In cases where you want to use the Markdown file elsewhere, you&rsquo;ll want to run the script&hellip;",
		"keywords": ["abbreviation","github","markdown","preprocessor","script","shell","textexpander","advanced","alfred","apple","automatically","automator","because","behavior","create","custom","download","ezsnippets","enter","first","github","margheim","markdown","marked","markedcustomstyles","nifty","paste","preprocessor","processor","script","service","shell","stephen","style","textexpander","unofficial","weblog","abbrevation","abbreviate","abbreviation","abbreviations","accidental","action","adding","alfredforum","allow","another","anywhere","appreciate","avoid","backlink","based","bottom","brackets","brettterpstra","caveat","chain","character","chmod","choice","choose","class","clean","clever","click","clicking","collecting","collection","colon","contact","contain","containing","contextual","create","creating","curly","custom","default","define","definitely","desired","developed","disable","document","doesn","double","drive","elsewhere","enabled","encouraging","endnotes","everyone","example","executable","expand","expansion","ezsnippets","field","files","fnref","folder","followed","footnote","footnotes","format","functionality","github","going","great","height","highlight","highlighter","https","ideas","image","immediate","including","indicator","indicators","input","inserted","interpreter","language","latest","ldquo","limited","loading","margheim","marked","media","modular","multiple","necessarily","noscript","noteref","occasionally","older","optionally","original","outside","phrase","phrases","picture","plaintext","pledge","pollute","preferences","prefix","prefs","preprocessor","pressing","processor","processors","productivity","proposition","rdquo","regularly","replace","repository","responded","reversefootnote","right","roadmap","rouge","rsquo","script","scripts","separately","service","shared","shortcut","similar","simple","smilesoftware","snippet","snippets","solution","source","spaces","spirit","srcset","stdin","subscribers","surround","telethon","thank","throughout","title","toolbar","topic","triggering","ttscoff","twitter","under","uploads","useful","value","version","versions","viewing","where","width","windows","words","works","write","yellow"]
	},{
		"title": "At least it's not a telethon",
		"url": "/2014/08/08/at-least-its-not-a-telethon/",
		"tags": ["personal","support"],
		"date": "Aug 8<span>th</span>, 2014",
		"ts": "1407502800",
		"summary": "First, I&rsquo;d like to thank everyone who&rsquo;s been supporting me since I went independent. Every time I see the $3-12 monthly donations come in, I&rsquo;m grateful for you. I don&rsquo;t push the reader support thing too much, beyond small links at the bottom of posts. The numbers haven&rsquo;t grown much in the last few months, though1, so I thought I&rsquo;d take a shot at promotion. If you enjoy this blog and find my writing useful, offering a small monthly contribution to show support makes a big difference. Marked, Systematic, and Overtired all pay for me, and I&rsquo;m delighted to have found a regular stream of blog sponsors, but most of what I do here is given away for free. If you&rsquo;re able to offer a small amount of monthly support (as low as $3), it will help keep the lights on and the lab churning out new tools and productivity ideas. I&rsquo;m also open to suggestions as to what would increase the value of my work for those who do offer monetary support. Note that the Memberful (non-PayPal) contributions generally mean more of your donation gets to me, and it&rsquo;s easier for me to collect your names and emails if there&rsquo;s a value-added feature available in the future. I&rsquo;m also available for private Mac productivity consultation, answering questions like \"what app does this best,\" \"how can I set up a future-proof tagging system,\" or \"how can I automate this?\" Contact me to discuss a reasonable rate for your needs. Lastly, I&rsquo;m also open to contract work. I don&rsquo;t want to go back into freelancing again, but if you work for an established company that needs a part-time front-end web developer, writer, coder, or a jack of all trades to work on a contract basis, drop me a line. Currently, 1 in 70 regular visitors to this blog offer regular support.&nbsp;↩",
		"keywords": ["donation","paypal","telethon","consultation","contact","contract","first","lastly","marked","memberful","monthly","overtired","paypal","systematic","added","again","amount","answering","automate","available","backlink","basis","beyond","bottom","brettterpstra","churning","class","coder","collect","company","consultation","contact","contract","contribution","contributions","delighted","developer","difference","donation","donations","easier","emails","endnotes","enjoy","established","everyone","feature","fnref","footnote","footnotes","found","freelancing","front","generally","grateful","grown","haven","height","https","ideas","image","increase","independent","ldquo","lights","links","loading","makes","marked","media","monetary","monthly","names","needs","noscript","noteref","numbers","offer","offering","original","overtired","picture","posts","private","productivity","promotion","proof","questions","rdquo","reader","reasonable","regular","reversefootnote","rsquo","since","small","source","sponsors","srcset","stream","suggestions","support","supporting","system","systematic","tagging","telethon","thank","thought","title","tools","trades","uploads","useful","value","visitors","width","writer","writing"]
	},{
		"title": "Sponsor: MindNode 3",
		"url": "/2014/08/07/sponsor-mindnode-3/",
		"tags": ["sponsor"],
		"date": "Aug 7<span>th</span>, 2014",
		"ts": "1407430800",
		"summary": "A big thanks to MindNode 3 for sponsoring BrettTerpstra.com this week. I&rsquo;m a big fan of MindNode on all platforms, but the latest version for iOS is spectacular. I&rsquo;m especially impressed with the new image support: an image is worth a thousand words, and a good mind map uses few words to convey ideas. The new image feature includes the ability to resize images directly on the canvas and view embedded image at full size. It&rsquo;s a great step forward. I mind map all of my projects from the beginning. Mind maps aren&rsquo;t reserved to projects for me, either. I mind map gift ideas, note-taking, even packing lists before a trip. MindNode is a great tool to have handy on my iPhone and iPad, with full sync between my devices and my Mac. There are a few great choices for mind mapping on Apple devices, but I&rsquo;ve always considered MindNode the most elegant. It&rsquo;s continued to foster that impression with every new release, and the latest one takes it even further. This week MindNode is 50% off. You can&rsquo;t beat that, so check it out today",
		"keywords": ["icloud","iphone","mindnode","apple","brettterpstra","mindnode","ability","before","beginning","between","canvas","check","choices","considered","continued","convey","devices","directly","either","elegant","embedded","especially","feature","foster","great","handy","iphone","ideas","image","images","impressed","impression","includes","latest","lists","mapping","packing","platforms","projects","release","reserved","resize","rsquo","spectacular","sponsoring","support","takes","taking","thanks","thousand","today","version","words","worth"]
	},{
		"title": "OnTop calendar manager for iPhone, +giveaway!",
		"url": "/2014/08/07/ontop-calendar-manager-plus-giveaway/",
		"tags": ["appreview","appstore","giveaway","iphone","productivity"],
		"date": "Aug 7<span>th</span>, 2014",
		"ts": "1407421200",
		"summary": "OnTop, a new calendar and task manager app, recently came out for iPhone. It offers natural language processing for creating new tasks, iOS Reminders integration with location based reminders, native notifications and alerts, and a clever interface with gesture-based actions. On the main screen, you see a list of your upcoming appointments and tasks, with a two-week calendar view that highlights as you scroll through them. The two-week view automatically expands to a scrolling month view after you scroll the list past two weeks. A quick swipe down will also take you to the full month view, and a tap at the top will return you to the two-week view. You can manage tasks and sync them with Reminders (which, of course, syncs to your other devices, including Mac) right within the app. There&rsquo;s a quick input screen that allows both calendar items and tasks to be entered using natural language. You can even assign a location from which to trigger the reminders when entering or leaving. OnTop can also provide expected travel times to appointments that have a location assigned. The natural language parser is quite good, and allows a wide variety of complex sentences to be recognized and converted into events or tasks. You can see the result of your sentence live on the calendar as you type it, and see your other events at the same time to avoid conflicts. Quickly edit, copy, and delete events with a swipe, and use a pop-up date picker to reschedule. It even features a night mode and a URL scheme for integration with other apps. While I&rsquo;m not replacing Fantastical, I will say that OnTop is a very strong competitor. And at $2.99 US, it&rsquo;s a bargain. It doesn&rsquo;t have a Mac companion like Fantastical does, but for iPhone management of your calendar, it&rsquo;s a serious contender. The developers of OnTop have offered 10 free copies to BrettTerpstra.com readers. Sign up below with just a name and an email address for a chance at 1 of 10 copies ($2.99 value). Open to all iTunes App Store customers. The drawing will take place on Tuesday, August 12th at Noon CST. Check out OnTop on the App Store, and good luck! Sorry, this giveaway has ended",
		"keywords": ["calendar","language","natural","reminders","store","tasks","brettterpstra","check","fantastical","ontop","quickly","reminders","sorry","store","tuesday","while","actions","address","alerts","allows","appointments","assign","assigned","automatically","avoid","bargain","based","below","calendar","chance","clever","companion","competitor","complex","conflicts","contender","converted","copies","creating","customers","developers","devices","doesn","drawing","email","ended","entered","entering","events","expands","expected","features","gesture","giveaway","highlights","iphone","itunes","including","input","integration","interface","items","language","leaving","location","management","manager","native","natural","night","notifications","offered","offers","parser","picker","processing","quick","readers","recently","recognized","reminders","replacing","reschedule","return","right","rsquo","scheme","screen","scroll","scrolling","sentence","sentences","serious","strong","swipe","syncs","tasks","through","times","travel","trigger","upcoming","using","value","variety","weeks","within"]
	},{
		"title": "Recap: Aug 6th, 2014",
		"url": "/2014/08/06/recap-aug-6th-2014/",
		"tags": ["recap"],
		"date": "Aug 6<span>th</span>, 2014",
		"ts": "1407366000",
		"summary": "Vox 2.1 with SoundCloud integration (Aug 2nd) I&rsquo;m always excited to see what Vox will do next, and this release has some great new features. Shell tricks: Changelogs with Git (Aug 3rd) Create a changelog/release notes for your project with a few Git tricks. Shell Tricks: One Git Alias to Rule Them All (Aug 4th) Trying to remember what all you&rsquo;ve aliased in your Git config? Marked 2.3.3 (Aug 4th) A pretty good update for Marked 2 came out this week for both MAS and direct. Save even more time with TextExpander snippet nesting (Aug 5th) Make your TextExpander snippets future-proof. Shell Tricks: man pages (Aug 5th) A whole bevy of tricks for working with Unix pages. Shell tricks: the OS X open command (Aug 6th) Even if you&rsquo;ve used the command in Terminal, there are probably some tricks you didn&rsquo;t know here&hellip; Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["alias","command","interface","soundcloud","alias","changelogs","create","marked","recaps","shell","soundcloud","terminal","textexpander","tricks","trying","aliased","changelog","command","config","curated","digest","direct","excited","features","format","great","hellip","integration","interest","nesting","notes","pages","posts","project","proof","quick","release","remember","rsquo","snippet","snippets","specifically","subscribe","summary","tricks","updates","weekly","whole","working"]
	},{
		"title": "Shell tricks: the OS X open command",
		"url": "/2014/08/06/shell-tricks-the-os-x-open-command/",
		"tags": ["editor","macos","scripting","shell","terminal"],
		"date": "Aug 6<span>th</span>, 2014",
		"ts": "1407344400",
		"summary": "You may already be familiar with the command in Darwin (OS X&rsquo;s flavor of Unix). It allows you to open files and URLs in their default app or one that you specify. In its simplest form: Those will open the url or file in whatever you have set as the default browser or editor for Markdown files. You can specify what application to use with , or by Bundle Identifier using . You can also use it with application-specific urls, such as Dash&rsquo;s handler (I&rsquo;ve detailed this before): These are the uses most people who use the command are familiar with. You can open an app without a document with just the or flags, too. I alias to just on my system, so I can just type and launch the app. I&rsquo;ve also set up bash completion for this. A couple of lesser-known features are pretty handy. First, the switch opens the specified application \"fresh,\" meaning no \"persistent\" windows are restored. Note that this erases the \"persistent state\" of the app, but leaves unsaved \"Untitled\" documents alone. It&rsquo;s a great shortcut for opening an app that may have a document crashing it when it first opens. It doesn&rsquo;t always work, but it&rsquo;s usually the first thing I try in those situations. It&rsquo;s just so easy. The command takes input from a STDIN pipe, creates a temporary file with it, then opens that in the specified app. You may have seen this yesterday in my tip for opening man pages in Preview. That trick uses PostScript output, but you can do the same with any type of data. Here&rsquo;s a trick for pasting your current clipboard text to Marked. Of course, Marked 2 can do that with just ⌘⇧V, so it&rsquo;s less handy. Here&rsquo;s a better one: combine a bunch of Markdown files in a folder into one temporary document with Markdown horizontal rules between them. I use this to quickly view all of my QuickQuestion answers from my nvALT folder (these filenames always start with \"??\", adjust as needed): The trick is kind of cool on its own. When you just use , you don&rsquo;t get any separation between files, meaning that using it for Markdown output isn&rsquo;t great. The command will take all of the input files and print them with and newlines (or whatever you specify in the print command) between each one. The switch causes to automatically use TextEdit. A better option would be , which allegedly uses your default editor for text files, as determined by LaunchServices. Unfortunately, that always still opens TextEdit for me. Instead&hellip;",
		"keywords": ["command","darwin","interface","bundle","cherish","choosy","cocoa","command","darwin","editor","editors","finder","first","identifier","lastly","launchservices","markdown","marked","opening","postscript","preview","quickquestion","return","stdin","safari","spotlight","textedit","unfortunately","untitled","adjust","alias","aliased","alibaba","allegedly","allowing","allows","alone","another","answers","appname","arguments","automatically","background","before","between","brettterpstra","browser","bunch","bypass","cause","causes","check","choosyosx","chrome","class","clipboard","combination","command","completions","composer","couple","crashing","creates","default","detailed","determined","developers","directly","directory","disappear","document","documents","doesn","editor","editors","effectively","erases","especially","exiting","familiar","features","filename","filenames","files","finder","first","flags","flavor","flavors","focus","folder","fresh","great","handiness","handler","handy","having","height","highlight","highlighter","hitting","horizontal","https","iterm","image","input","instance","iterm","language","launch","ldquo","leaves","lesser","links","loading","marked","meaning","media","multi","multimarkdown","ndash","necessary","needed","newlines","noscript","nvalt","opened","opening","opens","original","output","pages","passed","pasting","pbpaste","people","persistent","picture","piped","plaintext","popup","print","projects","pullquote","quickly","quickquestion","rdquo","restored","reveals","rouge","rsquo","rules","running","safari","script","selected","separation","setting","share","shell","shortcut","simplest","situations","slide","source","special","specific","specify","srcset","steal","switch","switches","system","takes","target","temporary","title","trick","tricks","turns","tweetbot","unsaved","uploads","using","usually","valid","variable","visor","whatever","width","window","windows","yesterday"]
	},{
		"title": "The Tower 2 giveaway winners",
		"url": "/2014/08/06/the-tower-2-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Aug 6<span>th</span>, 2014",
		"ts": "1407330000",
		"summary": "If you missed out, I still recommend that anyone in need of a powerful GUI for Git go check out Tower 2! Here&rsquo;s my review of the latest version, in case you missed it",
		"keywords": ["control","revision","tower","conde","ditchendorf","green","rafael","thanks","tonkin","tower","anyone","check","entered","everyone","giveaway","latest","lucky","missed","powerful","recommend","rsquo","version","winners"]
	},{
		"title": "Shell Tricks: man pages",
		"url": "/2014/08/05/shell-tricks-man-pages/",
		"tags": ["browser","terminal","tools"],
		"date": "Aug 5<span>th</span>, 2014",
		"ts": "1407258000",
		"summary": "Man pages make Unix go &lsquo;round. I can&rsquo;t think of any system that&rsquo;s better documented, and the answers are almost always right at your fingertips. There are a dozen ways to view a man page, starting with on the command line, which is by far the most common and often the most useful. But with a few tricks, you can load your man pages into something that allows better search, screen-permanence, and easier copying for saving example lines, etc.. The first trick I&rsquo;ll show you is how to get a man page open in Preview.app. It&rsquo;s simple, the command has an output format ready for PostScript conversion: An aside about the command&hellip; You can open any Mac app, or open files directly with the app, using (OS X only). The flag tells which app you want to open, and accepts a simple application name or a full path. Leaving that off and running it directly on a file or URL will use the default app for that type. The switch tells it to read input from STDIN. Also, the switch will open it \"fresh,\" meaning no windows are restored. That can be a handy one if you have an app crashing on a particular document that keeps restoring on launch. is a fast way to open a Markdown file in Marked 2 . To get a similar effect in other apps that output man-formatted pages, such as , you can spell out the equivalent like this: the sends an A4 page size to the groff printer, which is the only way I get output that doesn&rsquo;t have split lines over page breaks. You can use a similar trick to send your man pages to an editor like Sublime, which can take input on STDIN and create a temp file automatically. With the tool installed: There are quite a few handy third-party tools for viewing man pages as well. vimpager (available through ) is an alternative to that you can use in a command with the flag: . Depending on your Vim setup, this can give you syntax-highlighted, easy-to-navigate man pages. has the same effect, and you can in your profile to have it be the default. Bwana is a tool for opening man pages in your web browser. Once installed, you can use to open the man page in your default browser. You can also use it directly in the browser window by just typing \"man:groff\" as your url. There&rsquo;s a handy, dedicated man page viewer called ManOpen, too. It can run \"apropos\" searches and open any page from a text field, including easy linking between associated man pages. It has a url scheme: \"x-man-page:groff\" will open it from the&hellip;",
		"keywords": ["command","interface","postscript","sublimetext","bwana","depending","docset","leaving","manopen","markdown","marked","postscript","preview","stdin","sublime","third","accepts","access","accessibility","aliased","allows","almost","another","answers","apropos","aside","associated","automatically","available","based","benefits","between","breaks","browser","called","command","common","conversion","copying","crashing","create","dedicated","default","directly","document","documented","doesn","dozen","easier","editor","example","field","files","fingertips","first","format","formatted","fresh","function","groff","handler","handy","hellip","highlighted","including","input","installed","interesting","keeps","launch","linking","local","lsquo","meaning","methods","navigate","often","opening","output","pages","particular","party","permanence","printer","profile","ready","restored","restoring","right","round","rsquo","running","saving","scheme","screen","search","searches","sends","setup","shortcut","similar","simple","spell","split","starting","switch","syntax","system","tells","think","third","through","tools","trick","tricks","typing","useful","using","version","viewer","viewing","vimpager","window","windows"]
	},{
		"title": "Save even more time with TextExpander snippet nesting",
		"url": "/2014/08/05/save-even-more-time-with-textexpander-snippet-nesting/",
		"tags": ["marked","productivity","scripting","snippet","textexpander"],
		"date": "Aug 5<span>th</span>, 2014",
		"ts": "1407243600",
		"summary": "One of the features that TextExpander offers is the ability to nest snippets inside of one another. This has a lot of applications, but one of the handiest is the ability to separate commonly-used sections of snippets that are subject to change. Doing so allows you to update a single snippet and have all other snippets that reference that information update automatically. For example, I have a snippet called \"Marked Application Name\" with a shortcut of \"markedname\" assigned to it. I can reference that snippet in other snippets by using %snippet:markedname%. Thus, when I changed \"Marked\" to \"Marked 2\", I only had to edit one snippet to update all of my other snippets to have the correct application name. I also keep a snippet for the current price of Marked, as well as snippets that use shell scripts to extrapolate prices from that number based on discounts, etc.. These are just Plain Text snippets containing only numbers and decimals. This snippet allows me to fill in the code for a coupon and the percentage discount it provides, then pulls in the current price of Marked and outputs text with the new price based on the calculation of the price minus the percentage. Note that the snippet type is set to Shell Script. The script uses , a command line calculator built into Unix. Here&rsquo;s the script as plain text if you want to play with it: The coupon MISSEDTHEINTROSALE will get you Marked 2 for $10.50 (25% off). (Yes, that coupon will work for direct purchases at Marked2App.com) If you have elements in your snippets that are subject to change, this is a great way to save yourself even more time in the future",
		"keywords": ["script","shell","snippet","calculations","doing","missedtheintrosale","marked","numeric","script","shell","textexpander","ability","allows","another","applications","assigned","automatically","based","built","calculation","calculator","called","change","changed","command","commonly","containing","coupon","decimals","direct","discount","discounts","elements","example","extrapolate","features","great","handiest","information","inside","marked","minus","numbers","offers","outputs","price","prices","provides","pulls","purchases","replacements","rsquo","script","scripts","sections","separate","shell","shortcut","single","snippet","snippets","using","values"]
	},{
		"title": "Marked 2.3.3",
		"url": "/2014/08/04/marked-2-dot-3-3/",
		"tags": ["marked"],
		"date": "Aug 4<span>th</span>, 2014",
		"ts": "1407187800",
		"summary": "Marked 2.3.3 is available for both direct and Mac App Store customers. Note that automatic updates for owners of the direct version are still broken due to some issues with sandboxing. This will be remedied in the near future, I just didn&rsquo;t want to hold up this release while I sort it out. Download the version on the Marked 2 site and overwrite your current copy. Mac App Store users can update as usual, though it may take up to a couple more hours for the update to appear in the MAS for everybody. This update brings some fixes and refinements, most notably a more humane preference panel. I took some pains to reorganize the options and make panes in the preferences that felt less like impending doom. The panel also does a better job now of detecting whether you&rsquo;ve actually changed any preferences and only refreshing open updates if it&rsquo;s relevant. That second one might throw you off if you&rsquo;ve been compensating for Marked&rsquo;s previous behavior by making all of your include paths relative to the base document. You should now be able to include files based on their path from the included document, meaning: File.md includes subdir/file_b.md file_b.md contains an image reference to subdir/images/image1.png file_b.md&rsquo;s reference can be Hopefully that makes sense. I&rsquo;ve considered adding syntax to specify whether the path is relative to the current or base document in an include, but this seems intuitive enough to me without requiring extra characters. If you run into issues, please start a conversation at the support site. Also, regarding the support site, a few people have complained that I make it too difficult to lodge a complaint or request by not offering a direct email address. I&rsquo;ve been doing this long enough to know that giving customers my email means a few things: By opening a \"ticket\" at http://support.markedapp.com, you take care of all three problems. Once you start a ticket, you get responses via email and can reply to them without ever going to the website again. You can also easily make a conversation private if you want to share confidential information, so I don&rsquo;t see any reason to stop using this type of setup. Disagree? Please feel free to open a support ticket and tell me about it. Or if you&rsquo;re really stubborn, yes, email me. Check out Marked at marked2app.com, where you can find both a free trial and a link to the Mac App Store version",
		"keywords": ["store","allow","check","disagree","download","expanded","hopefully","marked","remove","store","adding","address","again","alternate","appear","automatic","available","based","becomes","behavior","blocks","breaks","brings","broken","cannot","changed","characters","compensating","complained","complaint","confidential","considered","contains","conversation","couple","customers","detecting","dialogs","difficult","direct","document","doing","dragged","duplicate","easily","email","enough","everybody","exporting","extra","files","fixed","fixes","fixing","folders","giving","going","handler","happen","hours","humane","image","images","impending","inbox","included","includes","information","inside","intuitive","issues","lodge","makes","making","marked","markedapp","meaning","missing","multiple","nested","notably","offering","opening","options","overwrite","owners","pains","panel","panes","parent","paths","people","preference","preferences","printing","private","problems","questions","refinements","refreshing","relative","release","relevant","remedied","reorganize","reply","requests","requiring","responses","rsquo","sandboxing","second","seems","sense","setup","share","similar","specify","stubborn","stuff","subdir","support","syntax","threads","throw","ticket","toggle","trial","unmanageable","updates","users","using","version","viewing","website","where","while","whitespace","words"]
	},{
		"title": "Web Excursions for August 04, 2014",
		"url": "/2014/08/04/web-excursions-for-august-04-2014/",
		"tags": ["bookmarks","keyboard","textexpander"],
		"date": "Aug 4<span>th</span>, 2014",
		"ts": "1407182400",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. A Comprehensive Video Guide to TextExpander A great introduction (with some advanced tricks) to TextExpander. Highly-recommended viewing for users of a highly-recommended application. Frame: Awesome Product Shots Another service for creating \"real life\" scenes from app screenshots on a variety of desktop and mobile devices. in which keyboard science goes further - Technomancy I&rsquo;m really curious about these Ergodox keyboards. I haven&rsquo;t had much luck falling in love with click keyboards in the past, but I also haven&rsquo;t had one I can custom-wire as much as these. This post gets crazy with it. HackerBracket A cool place to find all kinds of new projects smart people are working on. Automatic shortened URLs via Google I had no idea that Google&rsquo;s url shortener was automatically allowed in Twitter DMs. While that makes no sense to me from Twitter&rsquo;s perspective, here&rsquo;s a great trick from Dr. Drang to make those URLs quickly using TextExpander. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["applescript","google","iphone","twitter","another","automatic","awesome","backblaze","check","comprehensive","drang","ergodox","frame","google","guide","hackerbracket","highly","product","shots","technomancy","textexpander","twitter","video","while","advanced","affordably","allowed","automatically","backs","brought","click","cloud","computer","crazy","creating","curious","custom","desktop","devices","entire","everything","excursions","falling","great","haven","highly","introduction","keyboard","keyboards","kinds","makes","mobile","partnership","people","perspective","projects","quickly","recommended","reliably","rsquo","scenes","science","screenshots","securely","sense","service","shortened","shortener","smart","today","trick","tricks","users","using","variety","viewing","working"]
	},{
		"title": "Shell Tricks: One Git Alias to Rule Them All",
		"url": "/2014/08/04/shell-tricks-one-git-alias-to-rule-them-all/",
		"tags": ["shell"],
		"date": "Aug 4<span>th</span>, 2014",
		"ts": "1407170100",
		"summary": "Continuing the Shell Tricks series, here&rsquo;s a handy Git trick. I&rsquo;ll be moving away from the Git tips soon, so don&rsquo;t lose heart if you love the command line but aren&rsquo;t a big Git fan. When I discover cool new Git commands, I tend to alias them in my global file to help me remember how to use them. You can see what any alias is by running with , so when I use them I like to check that and start memorizing the actual commands. Sometimes, though, I&rsquo;ll know I figured out a trick but can&rsquo;t remember what it&rsquo;s aliased as. Then I have to list all of my aliases, grep for the one containing the base command I&rsquo;m looking for, and then work to memorize that. Here&rsquo;s a trick for doing all of that at once. First, we use the command to list all of our aliases, which is pretty simple: We can clean up that output with a little bit of . We want to clean out the at the beginning of each line, and then separate the first field from the remainder for eventual styling. There&rsquo;s probably a simpler command to do the separation part, but I kept running into problems using in the awk command so defaulted to a for loop. You can also simplify it using a command instead, but it doesn&rsquo;t work with the next part. Now, when I run , it outputs: &hellip;and I never forget a nifty alias again",
		"keywords": ["alias","command","control","interface","revision","continuing","first","shell","sometimes","tricks","ability","again","alias","aliased","aliases","alignment","beginning","check","clean","colored","colors","column","command","commands","configured","containing","defaulted","definition","discover","doesn","doing","eventual","field","figured","first","forget","global","handy","heart","hellip","justified","lists","little","looking","match","memorize","memorizing","moving","nifty","options","output","outputs","problems","remember","right","rsquo","running","search","section","separate","separation","series","simple","simpler","simplify","style","styling","substring","trick","under","using","white"]
	},{
		"title": "Shell tricks: Changelogs with Git",
		"url": "/2014/08/03/shell-tricks-changelogs-with-git/",
		"tags": ["scripting","shell"],
		"date": "Aug 3<span>rd</span>, 2014",
		"ts": "1407075180",
		"summary": "I&rsquo;ve been collecting some shell tricks. The list got long enough to warrant a few posts, so this is part one of a few. I&rsquo;m going to add them to the \"Bash Fun\" series rather than creating a new one, so that&rsquo;s the place if you want to track them. I should mention that serial posts on my blog don&rsquo;t have a permanent address, but you can find them all on the Topics page, in the \"Series\" tab. Every post in a series gets a box at the bottom linking to all the other posts in the series. The first trick I want to share is how to generate a changelog from all of the commits to a Git repository since the last release. It should be noted that the package (available through ) has similar functionality already built in. I just wanted something I could customize. The first thing you need to do is find the date of the last annotated tag, which git-flow will create when you do a . If you use the git-extras and do a this is also available. Barring all of that, you&rsquo;ll need to do your own annotated tags at the time of a release for this to work. For my changelog, I don&rsquo;t need the date, but I&rsquo;d like to include any additional info in the commit body and a Markdown list prefix in the format string: You can add a date back in using (committer date) or (author date) in the format string. You&rsquo;d probably want to include the flag with that as well. The Markdown formatting isn&rsquo;t perfect off the bat if you include the full commit body, as I haven&rsquo;t found a way to have multiline messages automatically indented without a lot of / work. It just takes a little editing, though. Now just redirect the output to a file or pipe it to and you have a changelog ready for editing and adding to your release. You can make a shell function for that, or include it as a git alias. I like the shell function approach for this one just because it does allow me to do extra formatting and processing of the output more conveniently. Good luck, and may generating your release notes be as painless as possible",
		"keywords": ["changelog","commit","markdown","barring","markdown","putting","series","topics","adding","address","alias","allow","annotated","approach","author","automatically","available","because","bottom","built","changelog","collecting","command","commit","commits","committer","conveniently","create","creating","customize","displaying","editing","enough","executing","extra","extras","first","format","formatting","found","function","functionality","generating","going","haven","incorporate","indented","inline","limit","linking","little","mention","messages","multiline","noted","notes","output","package","painless","permanent","possible","posts","prefix","processing","rather","ready","redirect","release","repository","rsquo","serial","series","share","shell","similar","since","string","takes","through","together","track","trick","tricks","using","variable","wanted","warrant"]
	},{
		"title": "Vox 2.1 with SoundCloud integration",
		"url": "/2014/08/02/vox-2-dot-1-with-soundcloud-integration/",
		"tags": ["appreview","macappstore","macos","music"],
		"date": "Aug 2<span>nd</span>, 2014",
		"ts": "1407008460",
		"summary": "My favorite music player just got cooler. I&rsquo;ve written about Vox here before, and covered the 1.0 release on TUAW. Version 2.1 is now available on the App Store. The new SoundCloud support in this fast and lightweight player is the biggest deal (to me). Not only does it offer an interface for SoundCloud with search, streams and access to your \"liked\" tracks, it&rsquo;s the only third-party player that will find and play the highest quality version of the recording. Even SoundCloud itself only streams the low-fi MP3 version. Scrobble your SoundCloud listening to Last.fm while enjoying the benefits of a really slick native interface. Support for \"Collections\" and a new \"Queue\" feature also add valuable capabilities to an already-great little music player. Also, in case you missed it, Simplify now works with Vox, meaning you get the great Vox interface plus Sidecar. Vox is free in the Mac App Store, and you can add full Internet Radio features to it for $2.99. Check it out. Also, I don&rsquo;t care who you are, this is awesome",
		"keywords": ["internet","radio","soundcloud","store","check","collections","internet","queue","radio","scrobble","sidecar","simplify","soundcloud","store","support","version","access","available","awesome","before","benefits","biggest","capabilities","cooler","covered","enjoying","favorite","feature","features","great","highest","interface","itself","lightweight","liked","listening","little","meaning","missed","music","native","offer","party","player","quality","recording","release","rsquo","search","slick","streams","support","third","tracks","valuable","version","while","works","written"]
	},{
		"title": "Recap: Jul 30th, 2014",
		"url": "/2014/07/30/recap-jul-30th-2014/",
		"tags": ["recap"],
		"date": "Jul 30<span>th</span>, 2014",
		"ts": "1406761200",
		"summary": "Sponsor: Backblaze (Jul 24th) Big thanks to Backblaze for sponsoring BrettTerpstra.com this week. Back it all up offsite, inexpensively and automatically. An unsolicited GeekTool showcase (Jul 28th) I didn&rsquo;t get a lot of blogging in this week, but I somehow found time to tweak my GeekTool desktop. Priorities askew. The Tower 2 giveaway (Jul 30th) This just started today and runs for a week. If you&rsquo;re a coder and you don&rsquo;t already have Tower 2, get in on this. While not blogging this last week, I got close to finishing a new (very simple) app. This. I&rsquo;ll unveil it once I decide how I&rsquo;m going to sell it. I also have a brand new version of Marked waiting in the wings, with some exciting news about Ulysses integration and&hellip; you&rsquo;ll see. Systematic is late this week, but an episode with MacSparky is in editing and will be out very soon. Overtired is on schedule for tomorrow! Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["backblaze","geektool","ulysses","backblaze","brettterpstra","geektool","macsparky","marked","overtired","priorities","recaps","sponsor","systematic","tower","ulysses","while","askew","automatically","blogging","brand","close","coder","curated","decide","desktop","digest","editing","episode","exciting","finishing","format","found","giveaway","going","hellip","inexpensively","integration","interest","offsite","posts","quick","rsquo","schedule","showcase","simple","somehow","specifically","sponsoring","started","subscribe","summary","thanks","today","tomorrow","tweak","unsolicited","unveil","updates","version","waiting","weekly","wings"]
	},{
		"title": "The Tower 2 giveaway",
		"url": "/2014/07/30/the-tower-2-giveaway/",
		"tags": ["giveaway","macos"],
		"date": "Jul 30<span>th</span>, 2014",
		"ts": "1406756280",
		"summary": "I mentioned the 2.0 release of the Tower Git client for Mac last week, and I was exited to hear from them that they&rsquo;d love to give away four copies on my blog. If you use Git, you&rsquo;ll want to take a shot at these ($59 value). As I&rsquo;ve said before, I do 90% of my committing, branching, tagging, merging, and rebasing on the command line as second nature. But when things get hairy, you can&rsquo;t beat a graphical, clickable log of all your commits with instant diffs and file navigation. Combined with Kaleidoscope, I&rsquo;m really happy with the setup. You can enter just by dropping your name and email below. Winners will be drawn on Tuesday, August 8 at 12pm CST. I&rsquo;ll be mailing codes directly to the winners (well, the Giveaway Robot will). Open to everyone, come and git it! Sorry, this giveaway has ended",
		"keywords": ["command","control","interface","kaleidoscope","revision","tower","giveaway","kaleidoscope","robot","sorry","tower","tuesday","winners","before","below","branching","clickable","client","codes","command","commits","committing","copies","diffs","directly","dropping","email","ended","enter","everyone","exited","giveaway","graphical","hairy","happy","instant","mailing","mentioned","merging","nature","navigation","rebasing","release","rsquo","second","setup","tagging","value","winners"]
	},{
		"title": "Web Excursions for July 28, 2014",
		"url": "/2014/07/28/web-excursions-for-july-28-2014/",
		"tags": ["bookmarks"],
		"date": "Jul 28<span>th</span>, 2014",
		"ts": "1406561460",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. jtmarmon/ColorMime And suddenly I&rsquo;ve been doing it wrong. ColorMime is a simple plugin for Sketch which allows you to quickly duplicate any Colourlovers palette in your sketch project. ramonpoca/ColorTools I usually use ColorSchemer Studio to gather my palettes, but these command line tools are really handy for grabbing Adobe Swatch Exchange (ASE) files and converting them into palettes for Apple&rsquo;s color picker (CLR). ttscoff :: COLOURlovers Since this excursion seems to be mostly about colors, I might as well link to my COLOURlovers page, right? It&rsquo;s not terribly active these days (I don&rsquo;t do a lot of design work anymore), but COLOURlovers is my favorite place to go for palette inspiration. sdegutis/hydra A really amazing-looking system for automating and hacking OS X that&rsquo;s been pointed out to me a couple of times. I wish I had more time to explore it. Soon",
		"keywords": ["color","colorschemer","colourlovers","utilities","adobe","apple","colourlovers","cleanmymac","colormime","colorschemer","colortools","colourlovers","exchange","since","sketch","studio","swatch","active","allows","amazing","anymore","automating","brought","color","colors","command","converting","couple","design","doing","duplicate","excursion","excursions","explore","favorite","files","gather","grabbing","hacking","handy","hellip","hydra","inspiration","jtmarmon","looking","mostly","palette","palettes","partnership","picker","plugin","pointed","project","quickly","ramonpoca","right","rsquo","sdegutis","seems","simple","sketch","speed","suddenly","system","terribly","times","tools","ttscoff","usually","wrong"]
	},{
		"title": "An unsolicited GeekTool showcase",
		"url": "/2014/07/27/an-unsolicited-geektool-showcase/",
		"tags": ["desktop","geektool"],
		"date": "Jul 27<span>th</span>, 2014",
		"ts": "1406507520",
		"summary": "Why does Snoop Dogg carry an umbrella? Fo&rsquo; Drizzle. Given that I spent too much of my Sunday fooling around with my GeekTool setup and did very little of any use, I figured I&rsquo;d at least show off the results. Left to right, top to bottom. It&rsquo;s the only way I know. That&rsquo;s just too much stuff. Boy ain&rsquo;t right. A CPU chart using the Arc font (two-layers, system and user) Weather Icon from my homemade set, info fed by Weather Underground The Dark Sky current conditions My last 3 doing entries Basic output The Dark Sky summary forecast. Because I don&rsquo;t like leaving the house if I can&rsquo;t put the top down. Number 1 is my real fun for the day. I&rsquo;d been using my command line bar chart to amuse myself with some analytics, but decided I could do better. GeekTool lets you put transparent images on the desktop, and Google Charts Image API can make transparent images, so it seemed natural. I spent most of my time figuring out all the nasty abbreviated and unintuitive parameters for the deprecated image API, but it worked. Number 2 is a bandwidth test, download on the left (top number is last test, bottom is average over last 15), upload on the right. It was pinging to my own controlled speedtest server, but that stopped working. Now I just set a permanent target server on the speedtest network to get more accurate tracking. Number 3 is my old Weather Underground full forecast. That&rsquo;s transitioning to Dark Sky shortly, I just already had that one worked out&hellip; As an aside, I made this post in the Clarify beta, which can export to Markdown. It&rsquo;s really cool for documentation and image annotation. Hope you had a more productive Sunday. I shouldn&rsquo;t be so hard on myself. I worked out a cool new retina image solution, finished a draft of the children&rsquo;s book I&rsquo;m working on, caught up on customer support, fixed some Marked bugs&hellip; I guess it&rsquo;s been a pretty good weekend",
		"keywords": ["drizzle","markdown","snoop","basic","because","charts","clarify","drizzle","geektool","google","image","machine","markdown","marked","sidecar","snoop","sunday","underground","weather","abbreviated","accurate","amuse","analytics","annotation","aside","average","bandwidth","bottom","carry","caught","chart","children","command","conditions","controlled","customer","decided","deprecated","desktop","doing","download","draft","entries","export","figured","figuring","finished","fixed","fooling","forecast","guess","hellip","homemade","house","image","images","indicator","layers","leaving","little","minute","minutes","myself","nasty","natural","network","output","parameters","permanent","pinging","processes","productive","results","retina","right","rsquo","seemed","server","setup","shortly","shouldn","solution","speedtest","spent","stopped","stuff","summary","support","system","target","tracking","transitioning","transparent","umbrella","unintuitive","upload","using","weekend","where","worked","working"]
	},{
		"title": "Sponsor: Backblaze",
		"url": "/2014/07/24/sponsor-backblaze/",
		"tags": [],
		"date": "Jul 24<span>th</span>, 2014",
		"ts": "1406224800",
		"summary": "A huge thanks to Backblaze for once again sponsoring BrettTerpstra.com. Don&rsquo;t lose your work. Back up all your data with Backblaze online backup. It&rsquo;s unlimited, unthrottled, uncomplicated, and at $5/month per computer, it&rsquo;s a no-brainer. Backblaze natively backs up your music, movies, photos, and whatever you&rsquo;re working on or editing for just $5/month. Backblaze continuously and securely backs up all the data on your computer and external hard drives. It&rsquo;s easy. Accessing files is easy. Download and share your files with the iPhone app or use any web browser to download your data or have Backblaze FedEx you a flash key or USB hard drive. Data loss happens all the time. Protect yourself. For $5/month, Backblaze will back up all the data on your Mac or PC. Stop putting it off. Start your free trial, and get your backup started today",
		"keywords": ["backblaze","drive","flash","accessing","backblaze","brettterpstra","download","fedex","protect","again","backblaze","backs","backup","brainer","brettterpstra","browser","class","computer","continuously","download","drive","drives","editing","external","files","flash","happens","height","https","iphone","image","loading","media","movies","music","natively","nofollow","noscript","online","original","photos","picture","putting","rsquo","securely","share","source","sponsor","sponsoring","srcset","started","thanks","title","today","trial","uncomplicated","unlimited","unthrottled","uploads","whatever","width","working"]
	},{
		"title": "Web Excursions for July 24, 2014",
		"url": "/2014/07/24/web-excursions-for-july-24-2014/",
		"tags": ["bookmarks","fonts","marked","ulysses","video"],
		"date": "Jul 24<span>th</span>, 2014",
		"ts": "1406208180",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Hermit: a font for programmers, by a programmer I really dig this monospace font for coding and terminal use. It looks great with my custom version of Twilight in Sublime Text. : Via Wes Bos. See his post for more options, though notably missing Meslo&hellip; Using Tables With Ulysses and Marked A good introduction to Ulysses 3 and Marked 2 integration. Together for iPad and iPhone 1.0 I&rsquo;ve been a fan of Together for a long time, and it&rsquo;s finally available on your iOS devices. Sync with Mac requires the MAS version of Together. BestPig/cv A command line tool for showing the progress of long-running coreutil functions like and . ROKODING: Video Encoding for the Roku Via MacDrifter, this site contains Handbrake tips for encoding video for Plex and Roku, which I&rsquo;ve just recently started using. A very handy reference",
		"keywords": ["handbrake","iphone","monospaced","sublime","bestpig","check","encoding","handbrake","hermit","macdrifter","marked","meslo","rokoding","setapp","sublime","tables","together","twilight","ulysses","using","video","access","available","brought","coding","command","contains","coreutil","custom","devices","encoding","excursions","finally","functions","great","handy","hellip","hundreds","iphone","integration","introduction","looks","missing","monospace","monthly","notably","options","partnership","programmer","programmers","recently","requires","rsquo","running","showing","started","subscription","terminal","today","using","version","video"]
	},{
		"title": "Recap: Jul 23rd, 2014",
		"url": "/2014/07/23/recap-jul-23rd-2014/",
		"tags": ["marked","recap","sublimetext"],
		"date": "Jul 23<span>rd</span>, 2014",
		"ts": "1406156400",
		"summary": "Sponsor: Differential (Jul 17th) A big thanks to Differential for sponsoring the blog this week. Get your MVP launched with Differential. Systematic 105 and Overtired 5 (Jul 18th) Systematic and Overtired both had great episodes this week. Check them out! 36 years in this skin (Jul 19th) This is where I was before I was where I am. Marked 2.3 on the Mac App Store (Jul 21st) The big news this week, of course, is Marked 2 making it into the App Store. A big upgrade for non-MAS users as well. Custom export options for Marked 2 (Jul 22nd) Some tips for getting non-HTML exports out of Marked 2. Tower 2 is twice the Git power (Jul 22nd) Tower, a great graphical Git client, saw a huge update this week. A Sublime Text selection primer (Jul 23rd) I put together a list of tips for fast text selections in Sublime Text. Built from the list of shortcuts I&rsquo;ve been practicing lately, it should be of help to anyone using Sublime Text. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["store","sublime","built","check","custom","differential","marked","overtired","recaps","sponsor","store","sublime","systematic","tower","anyone","before","client","curated","digest","episodes","export","exports","format","getting","graphical","great","interest","launched","making","options","posts","practicing","primer","quick","rsquo","selection","selections","shortcuts","specifically","sponsoring","subscribe","summary","thanks","together","twice","updates","upgrade","users","using","weekly","where","years"]
	},{
		"title": "A Sublime Text selection primer",
		"url": "/2014/07/23/sublime-text-selections/",
		"tags": ["editor","programming","search","sublimetext"],
		"date": "Jul 23<span>rd</span>, 2014",
		"ts": "1406138400",
		"summary": "Text selection shortcuts make editing code (and even prose) much faster. Learning the selection shortcuts in any editor you choose to work in is paramount to saving time and effort. I currently do most of my coding in Sublime Text 3, so I&rsquo;ve been practicing some of my lesser-used shortcuts. Here&rsquo;s a basic cheat sheet. Forewarning: I customize so many aspects of my editor that I may have forgotten that some of these aren&rsquo;t defaults. If you run into conflicts or problems, let me know and I&rsquo;ll either update this post or show how I modified my config to get the shortcuts working. Note that you can define word separators in preferences, so underscores and dots can be included in a \"word\" selection. : Expand to line This is different from doing a , in Cocoa text fields. It selects what OS X refers to as the current \"paragraph,\" meaning the first character to the next line break, instead of just the current screen line. : Expand to tag Handy in XML formats such as HTML and PLIST files. It selects the text inside the current tag pair, and pressing again selects the tags (open and closing) surrounding it. : Expand to indentation If your code is properly indented, this command is really handy for grabbing everything inside, say, an block. (Space): Expand to scope Expand to scope is a great way to create selections, and it can progressively increase the selection with repeated presses. Select the text inside a quoted string, then the next time you press it, it will add the quotes themselves. Press again to select to the nearest surrounding brackets, and again to include the brackets themselves, and so on. Combine this with other selection commands and you can do things like select the current scope, and then select everything at the same indentation within the current block with just a couple of keystrokes. : Select to brackets This is another extremely handy selection technique. It&rsquo;s just like \"Expand to scope,\" but skips directly outward to the nearest square or curly brackets. On the first press it will select inside the nearest brackets, pressing again will select the brackets. Subsequent presses will select the next pair outward, including the brackets themselves. BONUS: will undo movements and selections, and will redo them. Known as \"soft undo,\" use this if you accidentally lose a selection and want to get it back. -click/drag: add cursor/selection /: add previous/next&hellip;",
		"keywords": ["bracket","control","javascript","keyboard","package","shortcut","sublime","bonus","cheaters","cocoa","control","expand","forewarning","handy","javascript","learning","multiple","plist","package","press","quoted","replace","search","selection","space","sublime","superselect","accidentally","added","again","allow","another","aspects","assign","available","based","basic","because","block","brackets","break","character","cheat","choose","click","closing","coding","combination","command","commands","config","conflicts","continuity","couple","create","curly","cursor","cursors","customize","dealing","defaults","define","definition","different","directly","docset","doing","editing","editor","editors","effort","either","everything","expression","extending","faster","fields","files","first","forgotten","formats","forms","function","grabbing","great","handy","included","including","increase","indentation","indented","inside","instance","keybindings","keystrokes","lesser","locations","makes","making","matches","meaning","mention","modified","movements","multi","multiple","nearest","needed","nvalt","options","outward","override","package","packages","paragraph","paramount","practicing","preferences","press","presses","pressing","problems","progressively","properly","prose","quickly","quoted","quotes","refers","regular","repeated","results","right","rsquo","saving","scope","screen","search","searches","sections","selection","selections","selectively","selects","separators","sheet","shift","shortcut","shortcuts","similar","skips","square","standouts","string","surrounding","technique","themselves","think","under","underscores","various","within","working"]
	},{
		"title": "A big update to Shawn Blanc's 'Delight is in the Details'",
		"url": "/2014/07/23/a-big-update-to-shawn-blancs-delight-is-in-the-details/",
		"tags": ["books","video"],
		"date": "Jul 23<span>rd</span>, 2014",
		"ts": "1406122500",
		"summary": "Shawn Blanc&rsquo;s multimedia book, &lsquo;Delight is in the Details,&rsquo; has received a major update today. Shawn describes the book as: Delight is in the Details is packed with practical advice, tips, encouragement, inspiration, and insight to teach you how how best to reach for excellence and resist the prevailing tide of “good enough” work that leads to forgettable products and a dissatisfaction in your work life. The update includes new chapters, more videos, extra resources and much more. It&rsquo;s also 25% off right now ($29). Go check it out. Nice promo video, too",
		"keywords": ["blanc","delight","shawn","blanc","delight","details","shawn","advice","blockquote","brettterpstra","chapters","check","class","delightinthedetails","describes","dissatisfaction","encouragement","enough","excellence","extra","forgettable","height","https","image","includes","insight","inspiration","leads","loading","lsquo","major","media","multimedia","noscript","original","packed","picture","practical","prevailing","products","promo","reach","received","resist","resources","right","rsquo","shawnblanc","source","srcset","teach","thedetails","title","today","uploads","video","videos","width"]
	},{
		"title": "The Polymo winners",
		"url": "/2014/07/22/the-polymo-winners/",
		"tags": ["appstore","giveaway","iphone"],
		"date": "Jul 22<span>nd</span>, 2014",
		"ts": "1406058960",
		"summary": "Congratulations to all of you! If you don&rsquo;t hear from the Giveaway Robot shortly, let me know. For everyone who didn&rsquo;t win, be sure to check out the Polymo camera app with built-in tagging on the App Store",
		"keywords": ["camera","iphone","photography","polymo","store","adrian","chris","congratulations","giveaway","gonza","harshil","karamollaoglu","kronov","loris","marco","marquardt","matthews","polymo","robot","roland","store","apple","brettterpstra","built","camera","check","contact","everyone","giveaway","https","itunes","nyesi","polymo","rsquo","shortly","tagging","winners"]
	},{
		"title": "Tower 2 is twice the Git power",
		"url": "/2014/07/22/tower-2-is-twice-the-git-power/",
		"tags": ["appreview","macos"],
		"date": "Jul 22<span>nd</span>, 2014",
		"ts": "1406048400",
		"summary": "Git fans are often command line nuts. I know I am. But complex git operations can often be tedious, no matter how experienced you are. I fell in love with the Tower git client some time ago, and it makes using Git easy whether you&rsquo;re an old pro looking for a fast solution for complex operations, or a total newbie with no command line experience. It makes complex merges, chunking and cherry picking, rolling back changes, etc. a breeze. Tower 2 is out today, and it&rsquo;s a complete re-imagining of the tool. The visual conflict wizard is a godsend when you run into heavily conflicted merges. That, in combination with the latest version of Kaleidoscope make it (nearly) painless to fix up those merges. If you&rsquo;ve been using git-flow, that workflow is now built into Tower. It&rsquo;s a great way to keep a development branch, feature branches and a master \"release\" branch organized, with shortcuts for the necessary merging and rebasing procedures. Automatic background fetching, service account manager, multiple window support, and direct display of unsynced commits round out a very full new feature set. Check out the Tower website for more info. A single-user license is available for $59 US (and includes all future 2.x upgrades). Owners of a Tower 1 license get an upgrade price of $29 US, and customers who purchased Tower 1 on or after June 1, 2014 can get Tower 2 for free. See the store for purchase details. I&rsquo;d recommend that any Git user (or anyone interested in getting started with Git) check out Tower 2",
		"keywords": ["command","control","interface","revision","tower","automatic","check","kaleidoscope","owners","tower","account","anyone","available","background","branch","branches","breeze","built","changes","check","cherry","chunking","client","combination","command","commits","complex","conflict","conflicted","customers","details","development","direct","display","experience","experienced","feature","fetching","getting","godsend","great","heavily","imagining","includes","interested","latest","license","looking","makes","manager","master","merges","merging","multiple","nearly","necessary","newbie","often","operations","organized","painless","picking","price","procedures","purchased","rebasing","recommend","release","rolling","round","rsquo","service","shortcuts","single","solution","started","store","support","tedious","today","unsynced","upgrade","upgrades","using","version","visual","website","window","wizard","workflow"]
	},{
		"title": "Custom export options for Marked 2",
		"url": "/2014/07/22/custom-export-options-for-marked-2/",
		"tags": ["markdown","marked","scripting"],
		"date": "Jul 22<span>nd</span>, 2014",
		"ts": "1406034000",
		"summary": "Here&rsquo;s a trick for Marked 2 that allows you to keep a custom export format updated every time you save your file and update the Marked preview. I designed it specifically for updating a Lyx file, but you can use it with any secondary processor that doesn&rsquo;t necessarily output HTML. Marked&rsquo;s Custom Preprocessor functionality allows you to do some work with the Markdown file after Marked has compiled any includes and custom syntax, but before it runs the Markdown processor (or other Custom Processor). All the preprocessor has to do is return plain text ready for conversion, so anything else that happens between is fair game. If a script returns \"NOCUSTOM\" on STDOUT (as the one below does), Marked ignores the output entirely, so you don&rsquo;t even have to echo the original back out. This is especially handy with custom processors as it allows them to check for certain conditions before processing a file, and cancel the operation if it&rsquo;s not needed. This code will take the open file and determine its directory path and filename, creating a compiled Markdown version and Lyx companion file every time the source file or any included files update. Save it as a script, make it executable, and then put the path to it in the Custom Preprocessor field in Marked&rsquo;s Behavior settings. You&rsquo;ll need the latest MultiMarkdown binary installed, so grab it if you don&rsquo;t, and make sure it ends up in . If you don&rsquo;t have Marked 2 yet, it has a lot to offer. I&rsquo;ll be posting more tips and tricks soon",
		"keywords": ["markdown","multimarkdown","behavior","custom","markdown","marked","multimarkdown","nocustom","preprocessor","processor","stdout","allows","before","below","between","binary","cancel","certain","check","companion","compiled","conditions","conversion","creating","custom","designed","directory","doesn","entirely","especially","executable","export","field","filename","files","format","functionality","handy","happens","ignores","included","includes","installed","latest","necessarily","needed","offer","operation","original","output","posting","preprocessor","preview","processing","processor","processors","ready","return","returns","rsquo","script","secondary","settings","source","specifically","syntax","trick","tricks","updated","updating","version"]
	},{
		"title": "Marked 2.3 on the Mac App Store",
		"url": "/2014/07/21/marked-2-dot-3-on-the-mac-app-store/",
		"tags": ["appstore","macappstore","macos","markdown","marked","nvalt"],
		"date": "Jul 21<span>st</span>, 2014",
		"ts": "1405943040",
		"summary": "Marked, my Markdown previewer and writing tool, is now available on the Mac App Store. Both the direct version and the MAS version will be discounted to $9.99 for the first week as an \"upgrade\" price for anyone using the Marked 1 Mac App Store version. Anyone who already has a Marked 2 license will receive the 2.3 upgrade for free. Version 2.3 represents a major upgrade for Marked 2, including full GitHub Flavored Markdown support, a multi-faceted URL Handler, advanced document navigation features, and much more. Automatic update will not work, you&rsquo;ll need to download the new version directly (use the demo link, it will automatically be registered). Important note: Marked 2.3 introduces sandboxing to both the MAS and the direct versions. This may cause documents you&rsquo;ve opened before to require new permissions, but should be a pretty seamless transition. Also, the app name has changed to \"Marked 2\" in the Dock, and the bundle ID is now , for those using it in scripting. Yosemite support is coming soon, but Marked 2 is not yet 10.10-compatible. If you need to download the previous version (which works on 10.10), use this link. The nvALT \"Preview in Marked\" function will be broken until the next nvALT update (coming very soon). In the meantime, here&rsquo;s a tip: Drop your nvALT notes folder onto the Marked 2 icon (assuming you store your notes as text files) and Marked 2 will automatically track changes to any file in that folder, automatically showing the most recently-updated file. Go take advantage of the intro pricing (and on the Mac App Store) while it lasts (and be kind enough to leave a rating/review if you go the MAS route, please)",
		"keywords": ["github","locator","markdown","mathjax","resource","store","accepts","anyone","automatic","bookmark","count","document","flavored","github","handler","highlighted","important","improved","keyword","markdown","marked","mathjax","preview","print","store","version","yosemite","across","advanced","advantage","anyone","arguments","array","assuming","automatically","available","based","before","bookmarks","broken","bundle","cause","changed","changes","checkboxes","coming","compatible","counts","custom","direct","directly","discounted","document","documents","download","enough","export","faceted","features","files","first","folder","function","headline","highlight","improved","improvements","including","intro","introduces","lasts","leave","license","magnifier","major","meantime","metadata","multi","navigation","nearest","nested","notes","nvalt","opened","permissions","previewer","price","pricing","processor","rating","reading","receive","recently","refreshes","registered","represents","route","rsquo","sandboxing","scripting","scrolling","seamless","selection","sentences","showing","speed","stability","store","style","styling","support","track","transition","updated","upgrade","using","version","versions","while","works","writing"]
	},{
		"title": "36 years in this skin",
		"url": "/2014/07/19/36-years-in-this-skin/",
		"tags": ["personal"],
		"date": "Jul 19<span>th</span>, 2014",
		"ts": "1405774800",
		"summary": "It&rsquo;s my 36th birthday today. It sounds cliché, but I can honestly say I never expected to live this long. For the first 24 years of my life, I believed my life expectancy was 24. For a few years after that it felt like I was living on borrowed time. These days I accept that I&rsquo;m making better choices and look forward to living to a respectable old age, if everything goes well. I&rsquo;m grateful for every. single. day. I&rsquo;ve been more or less clean for over a decade now.1 I&rsquo;ve learned a lot about myself and the world in that time. I feel like at the age of 36 I can effectively assess the first 22 years of my life. I started drinking and smoking in Middle School. I wasn&rsquo;t a popular kid, but I didn&rsquo;t fit in with the burnouts, either. I was just a nerd with a proclivity for addiction and a need to snuff out my feelings. It was later determined that I was Bi-polar and ADD, among other things. I saw a shrink for depression and suicidal thoughts, but nothing came of it as far as treatment. Self-medication became a way of life. By High School I was always \"on\" something. By college I was a full-fledged addict. I was what they call a \"highly functional addict.\" This was both my salvation and my downfall. I could maintain decent grades, hold down jobs, and even convince a partner that I was fine. All these things while consuming an inhuman amount of narcotics. It made it possible to quiet my inner demons and still smile for the world. It also made it hard to feel like I needed help, even when things got really bad. When I refer to the amount of drugs I&rsquo;ve done, it&rsquo;s not to brag. Far from it. It&rsquo;s simply to underline that the average person has no concept of what I&rsquo;ve done to this body. I&rsquo;ve been checked into hospitals for \"unrelated\" injuries and accidents, and when blood panels came back I&rsquo;d receive a visit from a doctor, often in pairs, who would tell me that I should technically be dead2 and that if they could find a way to force me into treatment, they would. They never did. I eventually checked myself into rehab after watching enough friends decline into \"junkiehood,\" overdose, and even die.3 It should have been the knowledge of the amount of drugs I required to function normally, but it wasn&rsquo;t. It was my observations of my friends. I should mention that my last time through rehab was actually my third trip. The first two times I was high before I left the parking lot&hellip;",
		"keywords": ["addiction","dependence","substance","courage","experienced","honesty","middle","people","school","thank","accept","accidents","addict","addiction","addicts","alive","among","amount","angel","another","appreciate","asked","assess","audacity","average","backlink","became","beers","before","began","begin","believe","believed","benefit","betrayal","birthday","blood","borrowed","braindead","brettterpstra","burnouts","called","checked","chemically","chemicals","china","choice","choices","class","clean","clear","clich","college","comes","coming","concept","concern","consequences","consider","considering","construct","consuming","continue","control","conversations","convince","courageous","craft","decade","decent","decide","decision","decisions","decline","demons","depression","detachment","determined","developed","developer","different","ditch","doctor","downfall","drink","drinking","drive","drugs","dumped","easily","effectively","eight","either","emotion","endnotes","enough","especially","eventually","everything","examination","expectancy","expected","faces","facing","family","feelings","feels","first","fledged","fnref","footnote","footnotes","force","forever","found","friends","function","functional","gambler","gambling","grades","grateful","gratifying","hearditwasyourbirthday","height","helping","helps","highly","highway","honest","honestly","horrible","hospital","hospitals","https","ignoring","image","impaired","independent","inexplicably","inhuman","injuries","innate","inner","instinct","internalize","irrational","isolation","judgement","junkiehood","junky","knowledge","larger","later","ldquo","learned","living","loading","logically","looks","loyalty","maintain","making","manipulation","manufactured","media","medication","mention","myself","narcotics","needed","nonetheless","normally","noscript","noteref","nothing","observations","occasionally","often","opening","original","others","outside","outweighs","overcoming","overdose","pairs","panels","parents","parking","partner","people","perhaps","person","picture","polar","ponder","popular","possible","process","proclivity","prone","questioning"]
	},{
		"title": "Web Excursions for July 18, 2014",
		"url": "/2014/07/18/web-excursions-for-july-18-2014/",
		"tags": ["bookmarks","personal"],
		"date": "Jul 18<span>th</span>, 2014",
		"ts": "1405713600",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. First Crack 1.0 A fast, simple, portable, and customizable static site generator in Python. mySleepButton - Shuffle Your Thoughts to Sleep This app works. mySleepButton is based on cognitive science, including the Cognitive Shuffle, Serial Diverse Imagining and Super-Somnolent principles of sleep onset proposed by CogSci Apps Corp. co-founder, Dr. Luc P. Beaudoin. Quiver - The Programmer&rsquo;s Notebook There have been times I&rsquo;ve wished for an app like this. It mixes Markdown and code snippets with tagging and other code organization tools. Overall, I use nvALT for this purpose to great results, but I&rsquo;ve always wished for a dedicated snippet manager that met most, if not all, of my requirements. Taco - All your tasks. One screen. This web app combines over 40 of your everyday todo apps into one screen. Asana, Basecamp, Evernote, Bugzilla, OmniFocus and tons more. Even text files. Plug The Hype Machine is one great music discovery tool, and this little app is a great way to access it from a native OS X interface. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["basecamp","bugzilla","evernote","machine","markdown","omnifocus","python","asana","basecamp","beaudoin","bugzilla","check","cogsci","cognitive","crack","diverse","evernote","first","imagining","machine","markdown","mindmeister","notebook","omnifocus","overall","programmer","python","quiver","serial","shuffle","sleep","somnolent","super","thoughts","access","based","boosting","brainstorming","brought","cognitive","collaborating","collaborative","combines","customizable","dedicated","discovery","everyday","excursions","files","founder","generator","great","including","interface","little","manager","mapping","mixes","music","mysleepbutton","native","nvalt","onset","organization","partnership","portable","principles","productivity","proposed","results","rsquo","science","screen","simple","sleep","snippet","snippets","software","static","tagging","tasks","times","tools","wished","works"]
	},{
		"title": "Systematic 105 and Overtired 5",
		"url": "/2014/07/18/systematic-105-overtired-5/",
		"tags": ["overtired","podcast","systematic"],
		"date": "Jul 18<span>th</span>, 2014",
		"ts": "1405707900",
		"summary": "Overtired Episode 5 just came out today, too. It was a rip-roaring-ride of a conversation with Christina, ranging from movie stars to Bigfoot to the Mac App Store. I&rsquo;m enjoying doing this podcast and hope that it strikes a chord with a wide audience. Thanks for listening, everybody! Check out the Overtired #5 at 5by5! You may also want to follow @ovrtrd on Twitter as we start to kick that into gear",
		"keywords": ["advertising","bigfoot","christina","kevinrothermel","store","studios","warren","bigfoot","check","christina","episode","overtired","store","thanks","twitter","audience","chord","conversation","doing","enjoying","everybody","listening","movie","ovrtrd","podcast","ranging","roaring","rsquo","stars","strikes","today"]
	},{
		"title": "Giveaway: Polymo for iPhone",
		"url": "/2014/07/17/giveaway-polymo-for-iphone/",
		"tags": ["appstore","giveaway","iphone"],
		"date": "Jul 17<span>th</span>, 2014",
		"ts": "1405623600",
		"summary": "I recently reviewed Polymo, a new iPhone camera app, for The Unofficial Apple Weblog. It handily lets you tag photos before you start shooting, making organizing your camera roll easier than ever. The developer is offering ten free copies to BrettTerpstra.com readers ($1.99 US value). Sign up with a name and email address below for a chance at a promo code! The Giveaway Robot will draw 10 random winners on Tuesday, July 22nd. Sorry, this giveaway has ended",
		"keywords": ["camera","iphone","photograph","polymo","store","apple","brettterpstra","giveaway","polymo","robot","sorry","tuesday","unofficial","weblog","address","before","below","camera","chance","copies","developer","easier","email","ended","giveaway","handily","iphone","making","offering","organizing","photos","promo","random","readers","recently","reviewed","shooting","value","winners"]
	},{
		"title": "Recap: Jul 17th, 2014",
		"url": "/2014/07/17/recap-jul-17th-2014/",
		"tags": ["recap","tools"],
		"date": "Jul 17<span>th</span>, 2014",
		"ts": "1405606200",
		"summary": "Sponsor: PDFpen 6 (Jul 10th) Thanks again to Smile and PDFpen 6 for sponsoring BrettTerpstra.com this last week. Be sure to check out the new Microsoft® Word export, tools for faster workflows, Retina graphics, autosave and document versions! TagBak, tag backup and restore (Jul 11th) After posting a bit ago about losing OS X tags, I put together a tool for backing up and restoring tag data from the command line or scripts. If you want to make sure your tags aren&rsquo;t lost during backups or transfers with tools like Git and rsync, check it out. Making cd in bash a little better (Jul 12th) Just a quick tip that I think anyone who uses Bash should probably know&hellip; Review: Dropzone 3 (Jul 16th) The latest version fo Dropzone is out, and it&rsquo;s awesome. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["command","interface","pdfpen","smile","brettterpstra","dropzone","making","microsoft","pdfpen","recaps","retina","smile","sponsor","tagbak","thanks","again","anyone","autosave","awesome","backing","backup","backups","brettterpstra","categories","check","class","command","curated","digest","document","dropzone","export","faster","format","graphics","height","hellip","https","image","images","interest","latest","little","loading","losing","making","media","noscript","original","pdfpen","picture","posting","posts","quick","recap","restore","restoring","rsquo","rsync","scripts","source","specifically","sponsor","sponsoring","srcset","subscribe","summary","tagbak","think","title","together","tools","transfers","updates","version","versions","weekly","width","workflows"]
	},{
		"title": "Sponsor: Differential",
		"url": "/2014/07/17/sponsor-differential/",
		"tags": [],
		"date": "Jul 17<span>th</span>, 2014",
		"ts": "1405594800",
		"summary": "Thanks to Differential for sponsoring BrettTerpstra.com this week. Differential helps entrepreneurs turn great ideas into great companies. We partner with entrepreneurs to help launch their MVP’s quickly, often in just weeks. Start building traction, testing assumptions, receiving feedback, and validating your business model as early as possible and give yourself a higher likelihood of long-term success. We work hard to get an MVP out in a few weeks rather than several months. But, equally important, we build quality apps (because MVPs should be half products, not half-assed). How is it possible to launch quality apps so quickly? We build our apps using a (not-so) secret weapon: Meteor. We were one of the first development teams to adopt Meteor as our primary framework, and since we&rsquo;ve gone \"all in\" with Meteor, we’re on our way to becoming Meteor experts. We&rsquo;ve also taken a leadership role in evangelizing & growing the framework. Some of the ways we’re regularly contributing: We have created and contributed to open source Meteor packages We’ve deployed more than 20 Meteor apps in production We founded and organize Meteor Cincinnati meetups We created Crater.io, a leading Meteor news site We host the one and only Meteor Podcast We are currently writing the book Testing with Meteor We&rsquo;ve promoted Meteor hundreds of times in a hundred different ways, but the short answer is this: Meteor is faster than any other framework we have used, and developers & designers love working in it. If that answer doesn’t satisfy you, we offer lots of resources and opinions here. Whether you have an idea, want to learn more about Differential, or just want to talk Meteor, contact us - we’d love to hear from you",
		"keywords": ["meetup","meteor","brettterpstra","cincinnati","crater","differential","launched","meteor","podcast","testing","thanks","adopt","answer","assed","assumptions","because","becoming","brettterpstra","build","building","business","campaign","class","companies","contact","contributed","contributing","crater","created","deployed","designers","developers","development","different","differential","doesn","entrepreneurs","equally","evangelizing","experts","faster","feedback","first","founded","framework","github","great","growing","height","helps","higher","https","hundred","hundreds","ideas","image","important","launch","ldquo","leadership","leading","learn","likelihood","loading","mailto","media","medium","meetup","meetups","meteor","meteorpodcast","model","nofollow","noscript","offer","often","opinions","orange","organize","original","packages","partner","picture","possible","primary","production","products","promoted","quality","quickly","rather","rdquo","receiving","regularly","resources","rsquo","satisfy","secret","several","short","since","source","sponshorship","sponsoring","sponsorship","srcset","success","taken","teams","testing","testingmeteor","times","title","traction","uploads","using","validating","weapon","weeks","width","working","writing"]
	},{
		"title": "Review: Dropzone 3",
		"url": "/2014/07/16/review-dropzone-3/",
		"tags": ["appreview","dropzone","icons","macappstore","macos","productivity"],
		"date": "Jul 16<span>th</span>, 2014",
		"ts": "1405516440",
		"summary": "I&rsquo;m a bit late in covering this major update to one of my favorite applications. I&rsquo;ve been too busy enjoying it, I guess. Dropzone is a menu bar app that lets you add \"Destinations\" &mdash; icons representing actions to take on dragged-and-dropped items. You can have it do anything from open the file(s) in an application to upload images to Flickr, share them through Dropbox, or get really advanced with a bit of scripting1. You simply drag files to the icon in the menu bar and a palette opens up, allowing you to drop the files on any of your destinations. The new release includes some pretty huge changes. It starts small, with things like a larger drop target in the menu bar, and ends big with a whole new bundling system and API for the Destinations. One of the best new features is the Drop Bar, which simply lets you collect files for later actions. You can drag the files back out to Finder for a move or copy operation, or act on them right within Dropzone. Similar to Yoink, but integrated into an app that makes perfect sense for this action. Adding and organizing Destinations used to require a trip to preferences and was split across multiple screens. Now you can just drag folders and applications straight into the grid, and reorganize it with simple drag-and-drop. For long running processes, you also get a progress bar right in the grid. The menu bar icon also animates to show the progress of actions, similar to the way Droplr shows upload progress. It&rsquo;s a truly useful bit of polish on an interface I already thought was pretty great. The most exciting part to me is the new bundle system. Installing actions is easier than ever, and they can receive automatic updates from developers. The Ruby API, which offers the ability to perform any scriptable action, is expanded and improved. SCP uploads, Dropbox actions, image compression&hellip; check out the GitHub repository for a load of examples. I consider Dropzone indispensible, and the latest version is packed with improvements that make it even more so. If you&rsquo;ve never tried it out, give it a shot. Much like PopClip (another indispensible tool for me), it takes a bit of use to truly integrate it into your workflow, but once you do, you won&rsquo;t go back. For a very limited time you can pick up Dropzone 3 on the Mac App Store for $4.99 US (normally $9.99). Get it. Mine can take an image from anywhere, optimize it and upload it for my Jekyll blog, returning a&hellip;",
		"keywords": ["dropbox","store","adding","destinations","dropbox","droplr","dropzone","finder","flickr","github","installing","jekyll","liquid","popclip","readme","screenshot","similar","store","yoink","ability","across","action","actions","advanced","allowing","animates","another","anywhere","apple","applications","aptonic","automatic","backlink","brettterpstra","bundle","bundling","changes","check","class","clipboard","collect","compression","consider","covering","destinations","developers","dragged","dropped","dropzone","easier","endnotes","enjoying","example","examples","exciting","expanded","favorite","features","files","fnref","folders","footnote","footnotes","formatted","github","great","guess","height","hellip","https","icons","image","images","improved","improvements","includes","indispensible","integrate","integrated","interface","items","itunes","larger","later","latest","ldquo","limited","loading","major","makes","master","mdash","media","multiple","normally","noscript","noteref","offers","opens","operation","optimize","organizing","original","packed","palette","picture","pilotmoon","polish","popclip","preferences","processes","proper","rdquo","receive","release","reorganize","repository","representing","returning","reversefootnote","right","rsquo","running","screens","scriptable","scripting","sense","share","shows","similar","simple","simply","sizes","small","source","split","srcset","starts","straight","system","takes","target","thought","through","title","topic","tried","truly","updates","upload","uploads","useful","version","whole","width","within","workflow","yoink"]
	},{
		"title": "Web Excursions for July 14, 2014",
		"url": "/2014/07/14/web-excursions-for-july-14-2014/",
		"tags": ["bookmarks"],
		"date": "Jul 14<span>th</span>, 2014",
		"ts": "1405343520",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Breach - A browser for the HTML5 era A web browser written in JavaScript, modular and hackable. Siteleaf A good looking hosted CMS with full file access. I hadn&rsquo;t heard of it before Elliot Jay Stocks mentioned it recentlly. Mac Word Counter A new Mac app from Christian Tietze that tracks your word counts across all your applications. API Changelog APIs make the web 100x more powerful, allowing brilliant integrations with services to happen. APIs changing makes the stability of those integrations 100x more tenuous. Here&rsquo;s a tool to keep developers posted about the changes they need to keep track of to keep their apps running. gillibrand/launchbar-pinboard LaunchBar 6 actions for accessing Pinboard bookmarks. Not only handy, a great sample set for learning to build with the new Launchbar extension capabilities. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["browser","browsers","clients","interface","javascript","launchbar","programming","backblaze","changelog","check","christian","elliot","javascript","launchbar","launchbar","pinboard","siteleaf","stocks","tietze","access","accessing","across","actions","affordably","allowing","applications","backs","before","bookmarks","brilliant","brought","browser","build","capabilities","changes","changing","cloud","computer","counts","developers","entire","everything","excursions","extension","gillibrand","great","hackable","handy","happen","heard","hosted","integrations","launchbar","learning","looking","makes","mentioned","modular","partnership","pinboard","posted","powerful","recentlly","reliably","rsquo","running","sample","securely","services","stability","tenuous","today","track","tracks","written"]
	},{
		"title": "Making cd in bash a little better",
		"url": "/2014/07/12/making-cd-in-bash-a-little-better/",
		"tags": ["quicktip","terminal"],
		"date": "Jul 12<span>th</span>, 2014",
		"ts": "1405171020",
		"summary": "The Bash command is pretty good with tab completion (though not as good as Z shell). I often want to complete a path like , though, and get caught up on directories such as , which I never need to get to through Terminal. There&rsquo;s an easy way to ignore those pesky directories, though, using the variable. The directories listed in will always be ignored by tab completion. Problem solved",
		"keywords": ["directory","shell","problem","terminal","caught","command","directories","ignore","ignored","listed","often","pesky","rsquo","shell","solved","through","using","variable"]
	},{
		"title": "The Transloader winners",
		"url": "/2014/07/11/the-transloader-winners/",
		"tags": ["giveaway","macos"],
		"date": "Jul 11<span>th</span>, 2014",
		"ts": "1405115700",
		"summary": "If you won and haven&rsquo;t heard from the Giveaway Robot (and have checked your spam folder), drop me a line. If you didn&rsquo;t win, be sure to check out Transloader and its companion iOS app. While you&rsquo;re at it, don&rsquo;t miss Yoink and ScreenFloat, more great utilities from Eternal Storms",
		"keywords": ["apple","icloud","iphone","store","transloader","armstrong","beaudoin","congratulations","eternal","gansrigler","giveaway","haroche","jacobs","jerry","johnson","matthias","michael","newton","robot","screenfloat","storms","thanks","transloader","venturin","while","yoink","check","checked","companion","donating","drawing","folder","giveaways","great","haven","heard","licenses","rsquo","utilities","winners"]
	},{
		"title": "TagBak, tag backup and restore",
		"url": "/2014/07/11/tagbak-tag-backup-and-restore/",
		"tags": ["backup","scripting","tagbak","tagging"],
		"date": "Jul 11<span>th</span>, 2014",
		"ts": "1405092360",
		"summary": "I mentioned a few days ago that there were a few ways to lose your tags in OS X. I began working on the best solution I could come up with for now: TagBak. TagBak is a command line utility (inspired by Michael Simons) which saves all the tags in a directory and its subdirectories in a stash file. This file can be updated before any backup, maintaining a snapshot of tags, potentially versioned (depending on your backup strategy). When TagBak is used to restore tags, it will re-apply the saved tags to all affected files. It can also be used with Git repositories and the like. Run once, and add the resulting file to the repository. Use hooks (probably post-commit and post-receive) to update it before pushing and restore after pulling from another endpoint",
		"keywords": ["backup","folder","operating","rsync","system","michael","simons","tagbak","affected","another","apply","backup","before","began","command","commit","depending","directory","endpoint","files","hooks","inspired","installation","instructions","maintaining","mentioned","potentially","project","pulling","pushing","receive","repositories","repository","restore","resulting","saved","saves","snapshot","solution","stash","strategy","subdirectories","updated","usage","utility","versioned","working"]
	},{
		"title": "Sponsor: PDFpen 6",
		"url": "/2014/07/10/sponsor-pdfpen-6/",
		"tags": [],
		"date": "Jul 10<span>th</span>, 2014",
		"ts": "1405016220",
		"summary": "This week I&rsquo;d like to thank Smile and PDFpen for OS X for sponsoring BrettTerpstra.com. If you work with PDFs, you need PDFpen, the multi-purpose PDF editor. PDFpen can make changes, fix typos, resize images, combine PDFs, and extract pages into a new PDF. It can perform OCR (optical character recognition) to digitize scanned documents as part of a paperless workflow. It can even redact sensitive information by removing it permanently and completely from a PDF. PDFpen 6 includes Microsoft® Word export, an editing bar for faster workflow, Retina graphics, autosave and document versions, and much more. PDFpen 6 is available for $59.95. Download a free demo, and see how easily you can edit PDFs with PDFpen",
		"keywords": ["character","document","format","optical","pdfpen","portable","recognition","smile","brettterpstra","download","microsoft","pdfpen","retina","smile","autosave","available","brett","brettterpstra","changes","character","class","completely","crcampaign","crcat","crsource","digitize","document","documents","download","easily","editing","editor","export","extract","faster","graphics","height","https","image","images","includes","information","loading","macstories","media","multi","nofollow","noscript","optical","original","pages","paperless","pdfpen","permanently","picture","recognition","redact","removing","resize","rsquo","scanned","sensitive","smilesoftware","source","sponsoring","srcset","thank","title","typos","uploads","versions","whatsnew","width","workflow"]
	},{
		"title": "Recap: Jul 09th, 2014",
		"url": "/2014/07/09/recap-jul-09th-2014/",
		"tags": ["recap"],
		"date": "Jul 9<span>th</span>, 2014",
		"ts": "1404946800",
		"summary": "Sponsor: Nozbe (Jul 3rd) A big thank-you to Nozbe for sponsoring BrettTerpstra.com this week. The new beta release of this cross-platform productivity app is definitely worth checking out! How to lose your tags (Jul 4th) After discovering some missing tags on my files, I&rsquo;ve begun a list of services and tools that can cause tag loss. Overtired 3 - Firecracker Fourth of July (Jul 5th) Episode 3 of my new podcast with Christina Warren! bookmark-cli: OS X bookmark data for scripters (Jul 7th) For those who would be interested in such things, I built a CLI for gathering and using \"bookmark\" data for files in OS X. Giveaway: Transloader remote downloader (Jul 9th) This one only runs for a couple more days, so jump in and win a copy of the Transloader system for remote downloads through iCloud! Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["icloud","nozbe","brettterpstra","christina","episode","firecracker","fourth","giveaway","nozbe","overtired","recaps","sponsor","transloader","warren","begun","bookmark","built","cause","checking","couple","cross","curated","definitely","digest","discovering","downloader","downloads","files","format","gathering","icloud","interest","interested","missing","platform","podcast","posts","productivity","quick","release","remote","rsquo","scripters","services","specifically","sponsoring","subscribe","summary","system","thank","through","tools","updates","using","weekly","worth"]
	},{
		"title": "Giveaway: Transloader remote downloader",
		"url": "/2014/07/09/giveaway-transloader-remote-downloader/",
		"tags": ["appstore","giveaway","macos"],
		"date": "Jul 9<span>th</span>, 2014",
		"ts": "1404929820",
		"summary": "After running giveaways for Yoink and ScreenFloat from Eternal Storms, it seems only fitting that I include a third app of theirs in the giveaway lineup. Transloader is an app that you run on your Mac at home and your iOS device while you&rsquo;re out. When you stumble on a link that you want to download &mdash; any kind of file link &mdash; you just pop it into Transloader. iCloud syncs the link back to your Mac and your file is there waiting for you when you get home. The Mac app costs $5, and the iOS companion app is free. Winners of the giveaway will get a code for both, just to make life easy. To enter, just add your name and email address below. Winners will be drawn on Friday, July 11th at 12pm CST. Sorry, this giveaway has ended",
		"keywords": ["apple","icloud","store","transloader","eternal","friday","screenfloat","sorry","storms","transloader","winners","yoink","address","below","companion","device","download","email","ended","enter","fitting","giveaway","giveaways","icloud","lineup","mdash","rsquo","running","seems","stumble","syncs","theirs","third","waiting","while"]
	},{
		"title": "bookmark-cli: OS X bookmark data for scripters",
		"url": "/2014/07/07/bookmark-cli-os-x-bookmark-data-for-scripters/",
		"tags": ["macos","tagging"],
		"date": "Jul 7<span>th</span>, 2014",
		"ts": "1404738000",
		"summary": "I&rsquo;ve been working on a simple solution for backing up and restoring OS X tags after catastrophes. Ultimately this is going to have to be more than a script, but I have most of the pieces in place. As part of the experiment I wanted to be able to handle files being renamed and moved. That&rsquo;s best handled by the file bookmarking portions of the Cocoa API, so I wrote a little CLI to capture and restore bookmark data for a file or folder. It&rsquo;s very rudimentary, but it doesn&rsquo;t need to do much more than it already does. You pass a file path to the command and it returns a base64-encoded string that you can store however you like. Pass that string back to the command and it will tell you where the file is, even if it&rsquo;s been renamed or moved. This is really handy on your local filesystem. Unfortunately, it doesn&rsquo;t do diddly squat if you move the file to an external drive, network drive, or send it through certain sync services. I have those cases mostly covered in my tag backup tool, which I&rsquo;ll post when it&rsquo;s ready. This little tool was built as a handy helper and not something for a script to rely entirely upon. The source is on GitHub if you want to compile it yourself. The download below is a binary that should be usable on any 10.8+ Mac. Let me know if you have issues. bookmark-cli v1 Download bookmark-cli v1 CLI for storing Cocoa bookmark data for a file from scripts and the command line Published 07/05/14. Updated 07/05/14. Changelog Donate &bull; More info&hellip",
		"keywords": ["command","github","interface","management","changelog","cocoa","donate","download","github","published","unfortunately","updated","backing","backup","below","binary","bookmark","bookmarking","built","capture","catastrophes","certain","command","covered","diddly","doesn","download","drive","encoded","entirely","experiment","external","files","filesystem","folder","going","handle","handled","handy","hellip","helper","however","issues","little","local","mostly","moved","network","pieces","portions","ready","renamed","restore","restoring","returns","rsquo","rudimentary","script","scripts","services","simple","solution","source","squat","store","storing","string","through","usable","wanted","where","working","wrote"]
	},{
		"title": "Web Excursions for July 06, 2014",
		"url": "/2014/07/06/web-excursions-for-july-06-2014/",
		"tags": ["bookmarks","fonts","google"],
		"date": "Jul 6<span>th</span>, 2014",
		"ts": "1404651600",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. MindMeister for Glass I doubt I will ever have the opportunity to try this out, but it would be almost cool enough to make wearing Glass worthwhile for me… UI Design Comparison of To-Do Apps Video: Robert McGinley Myers takes on a huge pile of iPhone to-do apps to analyze their UI decisions. Make Writing a Part of Your Identity Christian Tietze on self-perception and what it takes to be a writer. Great piece. Keep an eye on his Zettelkasten project, too. Beautiful web type Ever spend an hour trying to find a decent font in Google&rsquo;s web font collection? This page highlights a few really great fonts/combinations. Beautiful. Using get-location/Google to map your location on a Mac I had some fun with get-location and the Google Geocoding API. Now I can type on the command line and get a street address. Worthless, but fun. I get lost a lot",
		"keywords": ["github","google","iphone","mindmeister","beautiful","christian","cleanmymac","comparison","design","geocoding","glass","google","great","identity","mcginley","mindmeister","myers","robert","tietze","using","video","worthless","writing","zettelkasten","absolute","address","almost","analyze","anxiousmachine","beautiful","border","brettterpstra","brought","christiantietze","class","collection","combinations","command","comparison","decent","decisions","design","disorientation","display","doubt","enough","excursions","fonts","github","glass","google","great","height","hellohappy","hidden","highlighter","highlights","https","iphone","identity","impactradius","language","lindes","location","macpaw","mindmeister","partnership","perception","piece","plaintext","position","posts","project","rouge","rsquo","schedule","serious","speed","spend","street","style","takes","tools","trying","ttscoff","visibility","wearing","whereami","width","worthwhile","writer","writing","zettelkasten"]
	},{
		"title": "Overtired 3 - Firecracker Fourth of July",
		"url": "/2014/07/05/overtired-3/",
		"tags": ["overtired","podcast"],
		"date": "Jul 5<span>th</span>, 2014",
		"ts": "1404590520",
		"summary": "Overtired episode 3 came out yesterday evening, and you were probably watching fireworks while Christina and I were talking about them. &lsquo;Merica, soccer, home entertainment and my obsession with solving tagging problems (and Christina&rsquo;s obsessive backups). It was a good time. If you haven&rsquo;t checked out Overtired yet, it&rsquo;s a fun podcast (I think). It&rsquo;s more free-form and geekier than Systematic. Don&rsquo;t get me wrong, I love doing Systematic, but I wanted one where I could let loose a little more. Thus, Overtired. Check it out",
		"keywords": ["christina","overtired","podcast","studios","systematic","warren","check","christina","merica","overtired","systematic","backups","checked","doing","entertainment","episode","evening","fireworks","geekier","haven","little","loose","lsquo","obsession","obsessive","podcast","problems","rsquo","soccer","solving","tagging","talking","think","wanted","watching","where","while","wrong","yesterday"]
	},{
		"title": "How to lose your tags",
		"url": "/2014/07/04/how-to-lose-your-tags/",
		"tags": ["backup","dropbox","email","macos","productivity","scripting","tagging","tools","utility"],
		"date": "Jul 4<span>th</span>, 2014",
		"ts": "1404487320",
		"summary": "First, Happy July 4th! I was going to take today off from everything, but woke up early with a bug to do some more OS X tagging research. I&rsquo;ll go back to bed after this&hellip; Yesterday I offered a warning about GNU Coreutils and the stripping of extended attributes (like OS X tags). This is a collection of results from some more extensive testing. It&rsquo;s a work in progress and will likely become its own resource after it&rsquo;s fleshed out a bit. I&rsquo;m also writing a book on tagging right now, so this resource is a valuable part of that. It would be great if anyone who tests some additional scenarios (and offer possible solutions) contact me and share the results. You&rsquo;ll make it into the credits! First, the default system utilities in Darwin (such as and ), by and large, have no problem preserving the extended attributes. When transferring files to other systems (or even mirroring locally), though, the common utilities and do not preserve extended attributes by default. Both utilities have a switch, though, which does a fine job keeping all attributes (along with probably-unnecessary resource forks). Update: rsync 3.0 (installable with homebrew) does an even better job of preserving tags by adding the option. Thanks to Emory L for pointing this out. As mentioned yesterday, the GNU Coreutils versions of some commands (e.g. and ) will strip your tags. I&rsquo;d recommend just deleting the symlinks for and in (where brew installs them). Git strips tags when transferring to a repository, and I haven&rsquo;t found any way around that other than compressing tagged files into a zipball or tarball before transfer, which is only useful for files that don&rsquo;t need individual version control. I haven&rsquo;t been using tags in any of my coding projects anyway, so the times that this matters to me are minimal. According to one tester (and my own confirmation), the default FileUtils class in Ruby will preserve tags with , but strip them with . If you have the GNU Coreutils and installed, strips tags as well. Thanks to Juha Ranta for that one. I tested with Ruby 2.1 and it hasn&rsquo;t worked yet, but I need to do some further research. I haven&rsquo;t tested with other languages that are commonly used in scripts that would affect my files yet. I&rsquo;m especially curious about Python, so if anyone beats me to testing it out, I&rsquo;d appreciate the update. Dropbox does preserve tags during sync (as&hellip;",
		"keywords": ["attributes","backblaze","coreutils","crashplan","dropbox","extended","icloud","utilities","apple","backblaze","backup","bittorrent","cloudapp","coreutils","crashplan","darwin","dekstop","desktop","dollydrive","dropbox","droplr","email","emory","fileutils","first","happy","justindaveyb","machine","python","ranta","sharing","summary","thanks","transporter","uploading","yesterday","above","adding","again","alias","aliased","anyone","anyway","appreciate","archived","assume","attached","attributes","backblaze","backlink","backup","beats","before","below","bittorrent","brettterpstra","browser","carefully","check","checking","class","cloud","coding","collection","commands","comment","common","commonly","compressing","concern","confirm","confirmation","confirms","contact","control","coreutils","crafted","credits","curated","curious","default","defaults","deleting","developers","download","downloaded","droplr","ecosystem","either","email","emailed","emails","endnotes","enough","entries","environment","especially","everything","extended","extensive","files","filetransporter","fileutils","fleshed","fnref","folder","footnote","footnotes","forks","found","generally","getcloudapp","gnubin","going","great","group","growing","haven","havoc","haystacksoftware","height","hellip","highlight","highlighter","holiday","homebrew","https","icloud","image","inadvertently","incumbent","individual","input","installable","installed","installs","interface","keeping","keeps","language","languages","libexec","likely","little","loading","local","locally","looks","loses","losing","loving","maintained","maintains","matters","mavericks","mdash","media","mentioned","minimal","mirroring","missing","noscript","noteref","offer","offered","original","party","people","personal","personally","picture","plaintext","pointing","polluting","possible","preferred","preserves","preserving","problem","process","projects","proponent","provides","receiving","recommend","release","remove","repository","research","resource","resources","restore","restored","restores","results","reversefootnote","right","rouge","rsquo","rsync","rsyncalias","samba","scenarios","scripting","scripts","seeing","services","share"]
	},{
		"title": "Mavericks tags and coreutils, a warning",
		"url": "/2014/07/03/mavericks-tags-and-coreutils-a-warning/",
		"tags": ["macos","scripting","tagfiler","tagging","terminal"],
		"date": "Jul 3<span>rd</span>, 2014",
		"ts": "1404432360",
		"summary": "This won&rsquo;t affect too many people, but if you&rsquo;ve installed the GNU Coreutils, you should be aware that the and commands strip extended attributes from your files. If you do any tagging in Mavericks (or with OpenMeta), you&rsquo;ll find your tags disappearing after shell scripts or command line filing act on a file. Ruby&rsquo;s FileUtils also fail to preserve the extended attributes. I&rsquo;m quite sure this wasn&rsquo;t happening to me before, as I&rsquo;ve been using my TagFiler system for quite some time and have always found my files easily. I recently noticed that nothing that&rsquo;s been automatically filed in the last few months has any tags at all. I don&rsquo;t know if (or how) coreutils might affect Ruby&rsquo;s filesystem tools, and I&rsquo;m not sure if the problems are even related. If anyone can enlighten me, I&rsquo;m all ears. As far as the command line goes, you can either uninstall the cp and mv commands, or just override them with: The default utilities that come with Mavericks do preserve the metadata. There&rsquo;s a switch () for the Coreutils command that will avoid stripping the attributes, but it doesn&rsquo;t exist for the command, so you&rsquo;d have to script to and . For TagFiler, for the time being, I&rsquo;ve updated the script to force it to use the system utilities instead of FileUtils. If it turns out that the FileUtils issue is directly related to Coreutils, I&rsquo;ll switch it back and add a warning",
		"keywords": ["command","interface","linux","mavericks","operating","systems","utilities","coreutils","fileutils","mavericks","openmeta","tagfiler","anyone","attributes","automatically","avoid","aware","before","command","commands","coreutils","default","directly","disappearing","doesn","easily","either","enlighten","exist","extended","filed","files","filesystem","filing","force","found","happening","installed","metadata","nothing","noticed","override","people","problems","recently","related","rsquo","script","scripts","shell","strip","stripping","switch","system","tagging","tools","turns","uninstall","updated","using","utilities","warning"]
	},{
		"title": "Sponsor: Nozbe",
		"url": "/2014/07/03/sponsor-nozbe/",
		"tags": [],
		"date": "Jul 3<span>rd</span>, 2014",
		"ts": "1404418680",
		"summary": "I&rsquo;ve been a Nozbe subscriber for years now, and I&rsquo;m pleased to have them as a sponsor this week. Founder Michael Sliwinski is truly passionate about productivity, and it shows in all of his products. Nozbe is a cross-platform time and project management app for busy professionals and their teams. It&rsquo;s collaborative, with delegation and conversations for every task. You can add attachments to any task or project, and it interfaces with Box, Dropbox, and Evernote for sharing and collaborating on all types of content. I&rsquo;ve used Nozbe with great results as a personal task manager, but it shines even more brightly in team environments. You can comment on each other&rsquo;s tasks, collaborate on projects, assign tasks to certain team members, and get updates on all progress within the app and by email digest. Today, Nozbe is launching beta versions of its apps. You can download the Nozbe 2.0 beta (codename OneNozbe) for Mac and Windows, as well as log in to the web app at beta.nozbe.com. You can also sign up to beta test Nozbe apps for the iPhone, iPad and Android, available after July 21. Nozbe has been around since 2007, beginning as a single web application. Now there&rsquo;s an entire suite of apps for Mac, Windows, iPhone, iPad and Android platforms. This newest version of Nozbe focuses on speed, simplicity, and design. It adds some great new features, including batch task management. Nozbe is a free app (up to 5 projects) or $10 per month (with unlimited projects). If you prepay for a full year, you save 20%. BrettTerpstra.com readers can use the coupon code BRETT for an additional 15% off. Check it out",
		"keywords": ["android","dropbox","evernote","iphone","michael","nozbe","sliwinski","windows","android","brett","brettterpstra","check","dropbox","evernote","founder","michael","nozbe","onenozbe","sliwinski","today","windows","assign","attachments","available","batch","beginning","brightly","certain","codename","collaborate","collaborating","collaborative","comment","content","conversations","coupon","cross","delegation","design","digest","download","email","entire","environments","features","focuses","great","iphone","including","interfaces","launching","management","manager","members","newest","nozbe","passionate","personal","platform","platforms","pleased","prepay","productivity","products","professionals","project","projects","readers","results","rsquo","sharing","shines","shows","simplicity","since","single","speed","sponsor","subscriber","suite","tasks","teams","truly","types","unlimited","updates","version","versions","within","years"]
	},{
		"title": "Recap: Jul 2nd, 2014",
		"url": "/2014/07/02/recap-jul-2nd-2014/",
		"tags": ["recap","video"],
		"date": "Jul 2<span>nd</span>, 2014",
		"ts": "1404342000",
		"summary": "Sponsor: WatchMeCode (Jun 26th) A huge thanks to WatchMeCode for sponsoring BrettTerpstra.com this week. Derick is a great programmer doing a fantastic job of sharing his knowledge. If you want to learn JavaScript (and Node.js), this is a great place to start. Minority Report setup: video evidence (Jun 27th) This was a video followup to my report on my futuristic combination treadmill desk and LEAP motion controller. Overtired Episode 2: Attack Of The Phones (Jun 27th) We made it to Episode 2 of Overtired. It&rsquo;s still coming together, but I think you&rsquo;ll enjoy it. Curio 9 winners and 10% off for everyone! (Jun 29th) You might not have won a copy of Curio, but you can still get 10% off for a few more days. Speedy note taking with concurrent topics (Jun 30th) I&rsquo;ve heard from a lot of people with a lot of solutions since I posted this, but I&rsquo;m still convinced that this is the best means for me to take rapid notes in four windows at once. At least until I build something better&hellip; A GitHub README table of contents Service (Jul 1st) This was a little trick to scan GitHub readmes and create linked tables of contents for them. All of the links are referenced in GitHub&rsquo;s header id style, and the TOC is easily updated as the document changes. The coolest way to present a mind map (Jul 2nd) I never get tired of MindMeister. The new features are outstanding. I made you a quick video to help you see what I&rsquo;m saying. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["curio","javascript","mindmeister","minority","report","attack","brettterpstra","curio","derick","episode","github","javascript","mindmeister","minority","overtired","phones","readme","recaps","report","service","speedy","sponsor","watchmecode","build","changes","combination","coming","concurrent","contents","controller","convinced","coolest","create","curated","digest","document","doing","easily","enjoy","everyone","evidence","fantastic","features","followup","format","futuristic","great","header","heard","hellip","interest","knowledge","learn","linked","links","little","motion","notes","people","posted","posts","programmer","quick","rapid","readmes","referenced","report","rsquo","saying","setup","sharing","since","solutions","specifically","sponsoring","style","subscribe","summary","table","tables","taking","thanks","think","tired","together","topics","treadmill","trick","updated","updates","video","weekly","windows","winners"]
	},{
		"title": "The coolest way to present a mind map",
		"url": "/2014/07/02/the-coolest-way-to-present-a-mind-map/",
		"tags": ["mindmapping","mindmeister","productivity"],
		"date": "Jul 2<span>nd</span>, 2014",
		"ts": "1404306000",
		"summary": "Don&rsquo;t get me wrong, I love mind mapping on my Mac and iPad with native apps. iThoughts, iThoughtsX, MindNode and Curio are all things I get excited about. However, I&rsquo;ve been spending a ton of time in MindMeister (a web app) lately. I pay a subscription fee for it. I have a separate Fluid instance for it. Every time one of my maps changes on MindMeister, a Markdown version of it is synced to nvALT for local indexing. But I&rsquo;ve said most of this before. In that MindMeister-to-nvALT post, I mentioned the slideshow functionality. You kind of have to see it to understand why I&rsquo;m enamored with it. MindManager has similar tools, but they&rsquo;re absolutely rubbish next to MindMeister&rsquo;s. I haven&rsquo;t used this for a presentation of any kind yet, but it looks stunning on a 27\" display. I imagine it would look pretty good on a projector, too. And considering how easy MindMeister has made it to turn Markdown outlines into MindMaps, it tickles me to think of what I could pull off. Anyway, here&rsquo;s a brief taste of a small map turned into a slideshow. I used the auto-creator for this one, but you can jump around the map and highlight any topic, branch or group at any time (and fade the others). There are even several transitions to choose from. I digress. I should quickly explain how this is done. You add \"slides,\" or boxes around the topics you want to highlight. They create squares at the bottom of the screen that you can reorder. You can create the boxes by highlighting them and clicking a \"+\" button, or you can just shift drag around a few nodes or branches and it will generate a box that fits automatically. Once you have everything in order, you pick a transition and go! I flipped through this one quickly just to show the animations, but every slide pauses for click and you can add as much explanation as your audience might need. No, I&rsquo;m not getting paid to gush about MindMeister. This referral link is the closest I&rsquo;ll get. And yes, I am actually working on a couple of pieces about mind mapping on the Mac and the process in general. Gotta keep plugging away at that tagging book, too&hellip",
		"keywords": ["fluid","markdown","mindjet","mindmanager","mindmeister","mindnode","anyway","curio","fluid","gotta","however","markdown","mindmanager","mindmaps","mindmeister","mindnode","animations","audience","automatically","before","bottom","boxes","branch","branches","brief","button","changes","choose","click","clicking","closest","considering","couple","create","creator","digress","display","enamored","everything","excited","explain","explanation","flipped","functionality","general","getting","group","haven","hellip","highlight","highlighting","ithoughts","ithoughtsx","imagine","indexing","instance","local","looks","mapping","mentioned","native","nodes","nvalt","others","outlines","pauses","pieces","plugging","presentation","process","projector","quickly","referral","reorder","rsquo","rubbish","screen","separate","several","shift","similar","slide","slides","slideshow","small","spending","squares","stunning","subscription","synced","tagging","taste","think","through","tickles","tools","topic","topics","transition","transitions","turned","understand","version","working","wrong"]
	},{
		"title": "A GitHub README table of contents Service",
		"url": "/2014/07/01/github-toc-service/",
		"tags": ["github","markdown","scripting","service","tagging"],
		"date": "Jul 1<span>st</span>, 2014",
		"ts": "1404238680",
		"summary": "There&rsquo;s probably an existing tool to do this, but I couldn&rsquo;t find it this morning. I have some very long README files on GitHub and I wanted a simple Table of Contents for them. I&rsquo;m too lazy to break most of them up into wikis, so I needed a way to emulate the tag found in the Gollum wiki platform that GitHub has. What I ended up with is a script that works from the command line or as a Service. You can pipe Markdown to it, run it on a file, or select it and change it in place with the Service. You just put a tag in your document where you want the Table of Contents to go, and then run it. Any headers found after the point where the tag is will be indexed and linked using GitHub-style IDs (dashes, lowercase, no other punctuation). You can limit the depth of the TOC from the top-level header found in two ways. First, you can just add a number (1-4) to the tag: . That will keep it to a depth of two levels with the first level being whatever the highest level header is that you have in your document (after the tag). You can also specify it on the command line just by including a number in the arguments, e.g. . As in the example above, you can specify an input and output file. If you specify only one file, it will be read and processed and the output will go to STDOUT for redirection. If you specify a second file, the results will be written to it. Specify the same file twice to process in place. This makes it possible to keep a source file for editing and then output a final README as part of a build process. Neat trick: if the file you&rsquo;re processing already has a TOC generated by this script, it will update it. You can skip adding the every time. You can download the command line script here, and the Service is available below. GitHub TOC Service v0.2.0 Download GitHub TOC Service v0.2.0 A Service for generating tables of contents for GitHub readmes (and other Markdown files). Published 07/01/14. Updated 11/07/14. Changelog Donate &bull; More info&hellip",
		"keywords": ["command","github","gollum","interface","markdown","readme","changelog","contents","donate","download","first","github","gollum","markdown","published","readme","stdout","service","specify","table","updated","above","adding","arguments","available","below","break","build","change","command","contents","couldn","dashes","depth","document","download","editing","emulate","ended","example","files","first","found","generated","generating","header","headers","hellip","highest","including","indexed","input","level","levels","limit","linked","lowercase","makes","morning","needed","output","platform","point","possible","process","processed","processing","punctuation","readmes","redirection","results","rsquo","script","second","simple","source","specify","style","tables","trick","twice","using","wanted","whatever","where","wikis","works","written"]
	},{
		"title": "Speedy note taking with concurrent topics",
		"url": "/2014/06/30/speedy-note-taking-with-concurrent-topics/",
		"tags": ["keyboard","markdownediting","notes","podcast","productivity","sublimetext","tools"],
		"date": "Jun 30<span>th</span>, 2014",
		"ts": "1404133200",
		"summary": "In a recent Systematic with Brian Alvey, he shared with me that he takes all his notes during interviews (and podcasts) with pen and paper. I decided to try it out, and found that there were solid benefits to the method. First, it was quiet. Second, it allowed for freeform organization of notes without having to mouse or keyboard around. The latter was a compelling benefit to me. I used to take all my meeting notes (back when I took meeting notes) on index cards (specifically Frictionless capture cards) for similar reasons. It makes a lot of sense to be able to quickly capture multiple topics instantly. However, I type faster than I write, and my penmanship is awful, so I decided to look into accomplishing a similar method digitally. Things I need to link afterward Potential topics and thoughts I want to return to later in the conversation A section for spur-of-the-moment thoughts that don&rsquo;t pertain to the current guest or conversation, such as topics for future podcasts or guests A general notes scratchpad The solution would need to be something with at least four \"cards\" or panels that I could flip between without any more than one keystroke. Mouse taps take too long to focus and click, and my Magic Trackpad is louder than I like for podcasting when the click resonates on my desk. There are note programs for iPad that could make this work, but I type much faster on my Mac, so I decided to focus there. Mind Mapping is my usual tool for gathering multi-topic notes like this, but navigating multiple branches via keyboard or mouse takes more time than I wanted, too. One solid option was Curio and a freeform layout with multiple index cards, but it still required a mouse action to switch topics, and that wasn&rsquo;t as fast as I wanted it to be. My solution at this time is Sublime Text. Vim aficionados will immediately note that you could do the exact same thing in their chosen editor (and probably Emacs, too), but I&rsquo;m faster in Sublime Text. You can do this in any editor that allows multiple panes and keyboard switching, though. Basically, I set up a Sublime Text window with four panes (or \"groups\"). I&rsquo;m currently using four vertical columns (⌘⌥4) because it&rsquo;s easiest for me to visualize the numeric shortcuts in that format, and I&rsquo;m generally making lists, so taller columns make more sense than a grid format. I hide the sidebar, the minimap, and the tabs at the top. I start a new Markdown GFM file (&hellip;",
		"keywords": ["markdown","sublimetext","taskpaper","alvey","another","brian","control","curio","emacs","first","frictionless","github","however","jumping","leave","magic","manager","mapping","markdown","markdownediting","maybe","mouse","package","plaintasks","potential","return","second","sublime","systematic","taskpaper","trackpad","ability","accomplishing","action","aficionados","afterward","allow","allowed","allows","another","assign","automatically","awful","backlink","because","begins","below","benefit","benefits","between","bolding","branches","brettterpstra","capture","cards","checkboxes","checked","chosen","class","click","column","columns","combination","command","comments","compelling","concurrent","considered","conversation","converting","cover","create","creating","cross","curio","cursor","decided","digitally","doesn","easier","easiest","easily","editor","elements","endnotes","everything","exact","export","faster","files","first","fnref","focus","footnote","footnotes","format","formatted","found","fourcolumns","freeform","frictionless","gathering","general","generally","github","going","great","groups","guest","guests","handle","handy","having","header","height","hiding","highlight","https","hyphen","image","includes","indenting","index","installed","instantly","interface","interviews","items","jumps","keyboard","keystroke","later","latter","layout","ldquo","leaving","lists","loading","louder","makes","making","manipulated","media","meeting","method","minimap","mouse","multi","multiple","navigating","noscript","noteref","notes","numbered","numeric","nvalt","ordering","organization","original","outdenting","outlining","package","packages","panels","panes","paper","penmanship","permanent","pertain","picture","plaintasks","podcast","podcasting","podcasts","position","products","programs","project","quickly","quiet","rapid","rdquo","ready","reasons","recent","required","resonates","retains","return","reversefootnote","rsquo","scratchpad","script","section","sections","sense","shared","shortcuts","sidebar","similar","single","solid","solution"]
	},{
		"title": "Curio 9 winners and 10% off for everyone!",
		"url": "/2014/06/29/curio-9-winners-and-10-percent-off-for-everyone/",
		"tags": ["giveaway"],
		"date": "Jun 29<span>th</span>, 2014",
		"ts": "1404065040",
		"summary": "I&rsquo;m really excited for the winners of the Curio 9 giveaway. It&rsquo;s an amazing piece of software that is not only easy to build in, but can make project management and brainstorming so much fun you&rsquo;ll want to do even more of it. Congratulations to the lucky two: Bummed you didn&rsquo;t win? Go check out the 25-day free trial, and if you think it&rsquo;s a great fit for you, use the coupon code at checkout to get 10% off (good through July 6, only valid for single, new licenses)",
		"keywords": ["curio","evernote","management","project","zengobi","alexander","brand","bummed","congratulations","curio","rosenbauer","winners","zengobi","amazing","brainstorming","build","check","checkout","contacted","coupon","directly","excited","giveaway","great","licenses","lucky","management","piece","project","rsquo","single","software","think","through","trial","valid","winners"]
	},{
		"title": "Web Excursions for June 28, 2014",
		"url": "/2014/06/28/web-excursions-for-june-28-2014/",
		"tags": ["bookmarks","markdown"],
		"date": "Jun 28<span>th</span>, 2014",
		"ts": "1403959860",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. API Introduction - Nest Developer Program More fun to be had. Editorial 1.1: Another Step Forward for iOS Automation Federico Viticci on Editorial 1.1. It will take me months to get through this, but I&rsquo;m learning a lot just skipping around&hellip; Use Markdown Anywhere, on a Mac, With Markdown Service Tools An in-depth tutorial on using the Markdown Service Tools. Sublime Text Word Separator Preferences If you&rsquo;re using Sublime Text, this is a handy trick to know. It makes it possible to double-click/⌘D select hyphenated words. JS NICE: Statistical renaming, Type inference and Deobfuscation This JS de-obfuscator works really well. It uses statistical analysis to rename variables and parameters and guess type annotations using references from open source projects, creating very readable code from previously minified source",
		"keywords": ["federico","markdown","programming","service","sublimetext","tools","viticci","another","anywhere","automation","check","deobfuscation","developer","editorial","federico","introduction","markdown","preferences","program","separator","service","setapp","statistical","sublime","tools","viticci","access","annotations","anywhere","brettterpstra","brought","click","compscientist","computers","creating","depth","developer","double","editorial","excursions","guess","handy","hellip","https","hundreds","hyphenated","inference","intro","jsnice","learning","macstories","makes","markdown","minified","monthly","obfuscator","parameters","partnership","possible","previously","projects","readable","references","rename","renaming","reviews","rsquo","separators","service","setapp","skipping","source","statistical","subscription","through","today","tools","trick","tutorial","tutorials","tutsplus","using","variables","words","works"]
	},{
		"title": "Overtired Episode 2: Attack Of The Phones",
		"url": "/2014/06/27/overtired-episode-2-attack-of-the-phones/",
		"tags": ["overtired","podcast"],
		"date": "Jun 27<span>th</span>, 2014",
		"ts": "1403889540",
		"summary": "I had a great time with Christina this week discussing everything from browser tab management to Google Reader replacements we&rsquo;ve settled on. I&rsquo;m taking this podcast as an opportunity to get really nerdy in a way that I try (mostly) to avoid on Systematic. Hopefully that works out well in the end",
		"keywords": ["christina","podcasts","studios","warren","check","christina","google","hopefully","overtired","reader","systematic","avoid","browser","discussing","everything","great","management","mostly","nerdy","podcast","replacements","rsquo","settled","taking","works"]
	},{
		"title": "Minority Report setup: video evidence",
		"url": "/2014/06/27/minority-report-setup-video-evidence/",
		"tags": ["bettertouchtool","fitness","gestures","personal","video"],
		"date": "Jun 27<span>th</span>, 2014",
		"ts": "1403888280",
		"summary": "I shared details of my walking desk/LEAP setup yesterday and was flooded with requests for video of it in action. I hacked this together with my iPhone and iMovie this morning&hellip; You&rsquo;ll see the basic desk setup, the treadmill, and the primary LEAP gestures in action. I don&rsquo;t do a lot with the music player in the video, but I can play, pause, skip back/forward and mute with gestures as well. Hopefully I put enough in here to make it understandable",
		"keywords": ["imovie","iphone","standing","treadmill","hopefully","action","basic","curiosity","details","enough","flooded","gestures","hacked","hellip","imovie","iphone","morning","music","pause","player","primary","quells","requests","rsquo","setup","shared","together","treadmill","understandable","video","walking","yesterday"]
	},{
		"title": "My Minority Report Treadmill Desk",
		"url": "/2014/06/26/my-minority-report-treadmill-desk/",
		"tags": ["bettertouchtool","fitness","furniture","gestures","personal"],
		"date": "Jun 26<span>th</span>, 2014",
		"ts": "1403791500",
		"summary": "I&rsquo;m still excited about both my treadmill desk and my Leap motion controller. In fact, they complement each other nicely. When I&rsquo;m just reading news feeds or watching video while walking at my desk, I usually turn up the speed of the treadmill because I don&rsquo;t need steady hands for typing. Once I get up to 3mph or faster, I can still hit keys on my keyboard, but typing out an email becomes very laborious. For just reading and media viewing, though, it&rsquo;s fine. I set up my Leap Motion with BetterTouchTool to make it even more enjoyable. I played around with \"Speakable Items\" for additional control, but when I get into these phases I usually have loud music or spoken audio playing that makes giving commands to the computer difficult. I&rsquo;ll probably explore that more in the future with a push-to-talk button (either a gesture or my PowerMate) to mute background audio when I speak. For now, here are the Leap actions that I have set up. Five fingers up reveals my Desktop and all of the information that GeekTool provides me, including current weather conditions and temperature, system information, sales numbers and more Five fingers down centers the current window Five fingers left and right switches spaces Three fingers up toggles fullscreen for the current window Two fingers left or right maximizes the current window to half the screen on either side Two fingers up toggles Mission Control Two fingers down shows Dashboard (which, yes, I still use1, for now) A single finger up or down triggers page up/down in any application Three fingers left and right switches tracks in Spotify, iTunes or Vox (using Simplify), or playlist items in VLC Three finger tap (which is a poking motion) controls play/pause A slow clap toggles mute I also have some application-specific gestures, such as single finger left/right/up/down navigation for SliceReader, and one and two-finger gestures for changing feeds/items/scrolling in ReadKit. There are also gestures for jumping to MailMate, switching mailboxes and navigating, flagging, and tagging messages for dealing with later. With these gestures enabled, I can make the primary apps I want to use full screen and navigate between them using five-finger swipes left and right. For consistency, all of my up/down/left/right gestures use \"natural\" directions, e.g. swiping left goes to the next track, right to the previous. There&rsquo;s still more I can do, such as using Leap and&hellip;",
		"keywords": ["bettertouchtool","controller","geektool","itunes","motion","spotify","audio","bettertouchtool","control","dashboard","desktop","geektool","items","jekyll","mailmate","minority","mission","motion","powermate","readkit","report","sfecgoep","simplify","slicereader","speakable","spotify","switcher","video","youtube","actions","alleviating","audio","background","backlink","because","becomes","between","boastr","bottom","brett","brettterpstra","brisk","building","builds","button","buttons","centers","changing","class","commands","common","complement","computer","concentration","conditions","consistency","container","control","controller","controlling","controls","dealing","delivery","desktop","difficult","directions","either","email","enabled","endnotes","enjoyable","excited","exploration","explore","extra","faster","feeds","feels","figure","finger","fingers","flagging","fnref","footnote","footnotes","freron","fullscreen","gesture","gestures","giving","griffintechnology","group","hands","hashes","height","higher","hitting","https","itunes","image","including","information","interface","items","jumping","keyboard","laborious","later","ldquo","leapmotion","lifespan","lights","loading","mailboxes","makes","maximizes","media","messages","minority","motion","mouse","music","natural","navigate","navigating","navigation","nextdesks","nicely","noscript","noteref","numbers","original","package","padding","paging","pause","performing","phases","picture","played","playing","playlist","poking","powermate","preset","presets","previews","primary","provides","quickly","rdquo","reading","readkitapp","report","reveals","reversefootnote","right","rsquo","sales","screen","scrolling","setup","shows","simplify","single","slicereader","source","spaces","speak","specific","speed","speeds","spoken","srcset","stats","steady","store","style","swipe","swipes","swiping","switch","switches","switching","system","tagging","takes","tasks","temperature","thinking","title","toggle","toggled","toggles","track","tracking","trackpad","tracks","treadmill","triggering","triggers","typing","uploads","using","usually","various"]
	},{
		"title": "Sponsor: WatchMeCode",
		"url": "/2014/06/26/sponsor-watchmecode/",
		"tags": [],
		"date": "Jun 26<span>th</span>, 2014",
		"ts": "1403780400",
		"summary": "Master the art of JavaScript with this week&rsquo;s sponsor, WatchMeCode. Read on for a special BrettTerpstra.com discount code! WatchMeCode is a subscription service that does exactly what the name implies: it lets you watch a JavaScript expert code. A subscription includes the back catalog and a new screencast every week. The screencasts are designed as bite-size videos exploring a single topic or solving a specific problem, from language fundamentals to the most recent tooling, techniques, and tricks. They&rsquo;re easy to watch and learn from, and JavaScript/NodeJS programmers at all levels are sure to come away with new knowledge. Subscribers can download the videos and keep them forever, or stream them from the site on any HTML5-capable device. Topics include NodeJS, browser-based JavaScripting, language fundamentals for any environment, testing with Jasmine, Browserify workflows and much more. The WatchMeCode guarantee: You&rsquo;ll learn something or you&rsquo;ll get your money back, and you get to keep all the videos you&rsquo;ve downloaded. You can take a look at 4 NodeJS videos for free on the WatchMeCode blog. BrettTerpstra.com readers can get a special discount using the code . That will get you a subscription for $9/month (regularly $14/month). If you work in JavaScript in any form, check it out",
		"keywords": ["browserify","javascript","languages","nodejs","programming","watchmecode","brettterpstra","browserify","jasmine","javascript","javascripting","master","nodejs","subscribers","topics","watchmecode","based","browser","capable","catalog","check","designed","device","discount","download","downloaded","environment","expert","exploring","forever","fundamentals","guarantee","implies","includes","knowledge","language","learn","levels","money","problem","programmers","readers","recent","regularly","rsquo","screencast","screencasts","service","single","solving","special","specific","sponsor","stream","subscription","techniques","testing","tooling","topic","tricks","using","videos","watch","workflows"]
	},{
		"title": "Recap: Jun 25th, 2014",
		"url": "/2014/06/25/recap-jun-25th-2014/",
		"tags": ["recap"],
		"date": "Jun 25<span>th</span>, 2014",
		"ts": "1403737200",
		"summary": "Sponsor: Assistant.io (Jun 19th) A big thanks to Assistant.io, my favorite way to schedule meetings, for sponsoring BrettTerpstra.com this week. Nick Cave, disorientation, and EXIF data (Jun 22nd) I found out later that the built-in Photos app (which I never open) can do this as well, but geolocation saved me from having to get a hotel room and admit to my wife that I&rsquo;d lost the convertible. Marker, Grablinks, and Bullseye fixes (Jun 23rd) If you&rsquo;re using any of my bookmarklets and they recently broke, here are the fixes. Curio 9 adds all kinds of awesome (Jun 24th) Curio 9 came out this week, and it&rsquo;s amazing. Also be sure to enter the giveaway for a chance at your own free copy ($99). Overtired is go (Jun 24th) My new podcast with Christina Warren launched this week! Systematic 102 with Brian Alvey (Jun 25th) My guest Brian Alvey has created tools that almost everybody probably comes into contact with regularly. We have a great chat about startups and more. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["alvey","brian","bullseye","alvey","assistant","brettterpstra","brian","bullseye","christina","curio","grablinks","marker","overtired","photos","recaps","sponsor","systematic","warren","admit","almost","amazing","awesome","bookmarklets","broke","built","chance","comes","contact","convertible","created","curated","digest","disorientation","enter","everybody","favorite","fixes","format","found","geolocation","giveaway","great","guest","having","hotel","interest","kinds","later","launched","meetings","podcast","posts","quick","recently","regularly","rsquo","saved","schedule","specifically","sponsoring","startups","subscribe","summary","thanks","tools","updates","using","weekly"]
	},{
		"title": "Win a copy of Curio 9!",
		"url": "/2014/06/25/win-a-copy-of-curio-9/",
		"tags": ["giveaway","macos","productivity"],
		"date": "Jun 25<span>th</span>, 2014",
		"ts": "1403726580",
		"summary": "I mentioned yesterday that Curio 9 is out, and I&rsquo;m really excited about the plethora of new features and enhancements. I talked with developer George Browning and he was happy to provide two copies of Curio 9 to give away on brettterpstra.com. Curio 9 sells for $99, so this is one of the highest-value giveaways this site has seen. For a chance at one of the two Curio licenses, just enter your name and email address below (email address is only used for notifying winners and creating licenses, nothing is stored on this site). The giveaway will end on Sunday, June 29th at Noon Central. Winners will be drawn at random and notified shortly after. Check out the Zengobi site for more Curio details (and take the free 25-day trial for a spin)! Sorry, this giveaway has ended",
		"keywords": ["browning","curio","evernote","george","zengobi","browning","central","check","curio","george","sorry","sunday","winners","zengobi","address","below","brettterpstra","chance","copies","creating","details","developer","email","ended","enhancements","enter","excited","features","giveaway","giveaways","happy","highest","licenses","mentioned","nothing","notified","notifying","plethora","random","rsquo","sells","shortly","stored","talked","trial","value","winners","yesterday"]
	},{
		"title": "Systematic 102 with Brian Alvey",
		"url": "/2014/06/25/systematic-102-with-brian-alvey/",
		"tags": ["podcast","systematic"],
		"date": "Jun 25<span>th</span>, 2014",
		"ts": "1403712540",
		"summary": "I met Brian Alvey at WWDC this year and had a great chat with him over drinks. Given that he built the CMS platform that I spent a few years working on over at AOL, it was surprising we&rsquo;d never crossed paths before. Brian is a \"serial entreprenuer,\" though he dislikes the phrasing of that title. He&rsquo;s a witty guy with a laid back demeanor but a high-energy approach to life, productivity, and startups. He knows a thing or two about startups, too",
		"keywords": ["alvey","brian","calacanis","crowdfusion","facebook","jason","alvey","brian","approach","before","built","crossed","demeanor","dislikes","drinks","energy","entreprenuer","great","interview","knows","listen","paths","phrasing","platform","productivity","rsquo","serial","spent","startups","surprising","title","witty","working","years"]
	},{
		"title": "Overtired is go",
		"url": "/2014/06/24/overtired-is-go/",
		"tags": ["overtired","podcast"],
		"date": "Jun 24<span>th</span>, 2014",
		"ts": "1403632260",
		"summary": "My new podcast with Christina Warren is live! It&rsquo;s a bit wandering at this point, but we agreed after recording this episode that we would make some attempt to \"theme\" future episodes a little more. I think it&rsquo;s a great start and I&rsquo;m sure it&rsquo;s going to be a lot of fun to keep it going",
		"keywords": ["christina","podcasts","studios","warren","check","christina","warren","agreed","episode","episodes","going","great","little","podcast","point","recording","rsquo","theme","think","wandering"]
	},{
		"title": "Curio 9 adds all kinds of awesome",
		"url": "/2014/06/24/curio-9-adds-all-kinds-of-awesome/",
		"tags": ["brainstorming","macos","productivity"],
		"date": "Jun 24<span>th</span>, 2014",
		"ts": "1403620980",
		"summary": "One of my favorite brainstorming applications, Curio, has just released version 9. It includes an complete revamp of the interface for Mavericks and Yosemite, along with dozens of new features and improvements. I&rsquo;ve been playing with Curio 9 for a little while now. The number of new features is overwhelming enough that I&rsquo;m going to cheat and summarize from the press release a bit. I hope to have time to do a more in-depth look at how I use Curio in the near future. You can pick up Curio 9 for $99.99 US, or upgrade for $49.99 US",
		"keywords": ["brainstorming","curio","mavericks","among","curio","mavericks","modernized","photo","status","yosemite","advanced","album","applications","arrangements","bottom","brainstorming","cheat","clipping","collections","depth","dozens","enough","export","favorite","features","flowcharting","going","goodies","goodness","ithoughts","import","improvements","includes","interface","latest","little","mapping","mirroring","options","overwhelming","pinboard","playing","press","project","release","released","revamp","rsquo","shapes","shelf","summarize","updates","upgrade","version","website","while"]
	},{
		"title": "Marker, Grablinks, and Bullseye fixes",
		"url": "/2014/06/23/marker-grablinks-and-bullseye-fixes/",
		"tags": ["bookmarklet","bullseye","grablinks","markdown","marker","scripting"],
		"date": "Jun 23<span>rd</span>, 2014",
		"ts": "1403532420",
		"summary": "Recently a few of my bookmarklets broke due to conflicts in the way GitHub serves raw gists and Chrome security settings. I&rsquo;ve moved all of the gists that the bookmarklets previously loaded from GitHub to my own server and updated the main bookmarklet code. This change affects users of Marker, GrabLinks, and Bullseye. You&rsquo;ll need to overwrite your current bookmarklets with the versions below. After that I&rsquo;ll be updating the source files on my server and no further changes should be needed in the future. I&rsquo;ve also updated the code for any instances of these bookmarklets on the site, so installing from their project or announcement pages will give you the correct version as well",
		"keywords": ["bookmarklet","browsers","github","grablinks","markdown","source","bullseye","chrome","github","grablinks","marker","recently","affects","announcement","below","bookmarklet","bookmarklets","broke","change","changes","conflicts","files","gists","installing","loaded","moved","needed","overwrite","pages","previously","problems","project","rsquo","security","server","serves","settings","source","updated","updating","users","version","versions"]
	},{
		"title": "Nick Cave, disorientation, and EXIF data",
		"url": "/2014/06/22/nick-cave-disorientation-and-exif-data/",
		"tags": ["personal"],
		"date": "Jun 22<span>nd</span>, 2014",
		"ts": "1403466600",
		"summary": "This is a tale of woe &mdash; spawned from a navigational \"disability\" &mdash; and redemption via technology. It has very little point, but I feel like documenting it. Take it as you will. Last night I went to the Nick Cave concert in Minneapolis. My friend Ben and I made the two-hour drive in the TT early in the afternoon so we could grab a stress-free dinner and deal with will-call lines before the 7:30 doors. We drove past the venue (State Theater) and turned into the first convenient parking ramp we found. As I always do, I snapped a picture of the nearest column marker in the parking ramp so we&rsquo;d be able to locate the car again easily. We wandered down to Nicollet Mall and looked for a restaurant that wasn&rsquo;t already packed on a Saturday evening. After a few trips back and forth and some Yelping, we ended up at the News Room and had a great meal (and a couple of scotches). Despite knowing the area pretty well (I used to live there), we took some wrong turns after dinner and got thoroughly lost before running into a friend who got us back on track. I should explain the directional confusion. I have a complete inability to picture spatial coordinates. Once I learn some landmarks and do some rote memorization, I can find my way around familiar areas, but taking a new route means the landmarks get out of order and I&rsquo;m as good as lost. In my small town of Winona (population 25,000), I can pull into a driveway, and when I pull back out I&rsquo;m completely disoriented. It turned out that Ben shared my orientation disability. We got to the show in plenty of time, though, and watched Warpaint open. I feel like the sound and lighting didn&rsquo;t do them justice, as I looked them up on Spotify afterward and enjoyed their music much more than I did in the theater. There was a 30-minute break between the opener and the headliner, which was annoying to me, but Nick Cave was worth the wait. The set was awesome, and he&rsquo;s a great performer. As the set came to a close I realized that my evening medications were in the trunk of my car. Missing my meds means I get very dizzy and have trouble functioning, so we decided to beeline for the car right after the encore. It was about then that it dawned on both of us that we didn&rsquo;t know which lot we had parked in. There are about 15 lots within the 10-block radius we were wandering, and neither of us could piece together the events that had led us to the lot we chose. Meanwhile, my&hellip;",
		"keywords": ["iphone","minneapolis","nicollet","seeds","store","warpaint","energy","eventually","exifwizard","marriott","maybe","meanwhile","minneapolis","missing","nicollet","resevoir","saturday","spotify","store","theater","where","warpaint","winona","yelping","address","afternoon","afterward","again","alone","annoying","areas","asked","awesome","bartender","battery","beeline","before","between","bizzarely","block","break","bring","carrying","charge","charged","chose","claimed","close","column","communication","completely","conceirge","concert","confusion","convenient","coordinates","counteract","couple","dawned","decided","demeanor","dependent","details","dinner","direction","directional","disability","disabled","disoriented","dizzier","dizzy","documenting","doors","downloaded","drank","drive","driveway","dropped","drove","easily","elegant","encore","ended","enjoyed","evening","events","evolved","explain","familiar","finally","first","folded","forth","found","friend","functioning","geolocation","getting","gloomy","grateful","great","guiding","headliner","hellip","highway","hotel","hours","iphone","inability","irritable","jumped","justice","knowing","landmarks","later","learn","lighting","little","location","logically","looked","marker","mdash","medications","memorization","memory","minute","mostly","music","navigational","nearest","neither","night","opener","orientation","packed","parked","parking","performer","phone","phones","photo","photos","picture","piece","plenty","plugged","point","population","quickly","radius","realized","recharge","redemption","remained","remember","restaurant","right","route","rsquo","running","scotches","seconds","senses","serious","severely","shared","small","snapped","social","solution","sound","spatial","spawned","started","straight","stress","taken","taking","technology","theater","think","thirsty","thoroughly","tired","together","track","trips","trouble","trunk","trying","turned","turns","unattentive","understatement","upbeat","venue","waited","walked","wandered","wandering","watched","water","weren","where","within"]
	},{
		"title": "Sponsor: Assistant.io",
		"url": "/2014/06/19/sponsor-assitant-dot-io/",
		"tags": [],
		"date": "Jun 19<span>th</span>, 2014",
		"ts": "1403175600",
		"summary": "Thanks to Assistant.io for sponsoring BrettTerpstra.com this week. I&rsquo;ve fallen in love with this service for scheduling any kind of meeting (or my podcast) and encourage anyone who schedules anything with other people to check it out! Chances are, you probably have a Google account. Whether at work or at home, there are over 500 million Gmail users, and many of them use (and depend on) Google calendar. GCalendar works well on its own for many things, but it doesn&rsquo;t make scheduling group meetings any easier&ndash;enter Assistant.io. Remember that time when you tried to schedule lunch with a few friends, but it STILL hasn&rsquo;t happened because no one could agree on a time and date? Or, that time (you know, like every week) that you had to schedule a meeting with a few co-workers and a potential client, and it took a ridiculous total of, like, 15 emails just to decide when to hold the meeting? How about that time that you proposed a meeting to a few different people and, forgetting what times you sent to who, you accidentally double-booked yourself? We&rsquo;ve run into all of the above situations and then some. That&rsquo;s why we created Assistant.io: to save ourselves (and now you) from the embarrassment of double-booking, the painful overflow of emails caused by choosing a meeting time, and the inconvenience of sharing your calendar with everyone that you&rsquo;ve ever had to meet with. Log in with your Google account (takes seconds) Create a meeting with Assistant, propose a few times that work for you, and send it out to the people you want to attend. Sit back and wait for everyone to accept the times that work for them (or let them propose new times). All the while, the proposed times are blocked off on your calendar so you don&rsquo;t get double booked. Once everyone has responded, Assistant picks the time that worked, sends out an email, and automatically sends a calendar invite (on your behalf) to everyone! The people you invite won&rsquo;t even have to create an account (they can respond right from their email OR by clicking through and selecting what works for them). We dare you to try it out right now (it&rsquo;s free!), and tell us that it didn&rsquo;t make meetings just a little less painful (sorry, we can&rsquo;t actually make meetings fun!)",
		"keywords": ["calendar","google","assistant","brettterpstra","chances","create","gcalendar","gmail","google","remember","thanks","above","accept","accidentally","account","agree","anyone","automatically","because","blocked","booked","booking","calendar","caused","check","choosing","clicking","client","create","created","decide","depend","different","doesn","double","easier","email","emails","embarrassment","encourage","enter","everyone","fallen","forgetting","friends","group","happened","inconvenience","invite","little","lunch","meeting","meetings","million","ndash","ourselves","overflow","painful","people","picks","podcast","potential","propose","proposed","respond","responded","ridiculous","right","rsquo","schedule","schedules","scheduling","seconds","selecting","sends","service","sharing","situations","sorry","sponsoring","takes","through","times","tried","users","while","worked","workers","works"]
	},{
		"title": "Recap: Jun 18th, 2014",
		"url": "/2014/06/18/recap-jun-18th-2014/",
		"tags": ["recap"],
		"date": "Jun 18<span>th</span>, 2014",
		"ts": "1403132400",
		"summary": "Sponsor: PDFpen for iPad (Jun 12th) With the addition of Transporter support, PDFpen for iPad is better than ever. Thanks to Smile and PDFpen for sponsoring brettterpstra.com this week! Fast, fuzzy directory navigation for Tag Filer (Jun 12th) For users of my Tag Filing system, here&rsquo;s a fast way to jump around your tagged folders from the command line. Web Excursions for June 13th and June 17th Lots going on out there on the web these days&hellip; Systematic 101 with Jordan Cooper (Jun 18th) I had Jordan Cooper, a comedian, punk rocker, and great guest on Systematic this week. Training Dragons and dispelling myths (Jun 18th) Off the beaten path for me, but I shared some thoughts on positive reinforcement (clicker) training and the myth of the Alpha dog. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["pdfpen","smile","alpha","cooper","dragons","excursions","filer","filing","jordan","pdfpen","recaps","smile","sponsor","systematic","thanks","training","transporter","beaten","brettterpstra","clicker","comedian","command","curated","digest","directory","dispelling","folders","format","fuzzy","going","great","guest","hellip","interest","myths","navigation","positive","posts","quick","reinforcement","rocker","rsquo","shared","specifically","sponsoring","subscribe","summary","support","system","tagged","thoughts","training","updates","users","weekly"]
	},{
		"title": "Training Dragons and dispelling myths",
		"url": "/2014/06/18/training-dragons-and-dispelling-myths/",
		"tags": ["personal","training"],
		"date": "Jun 18<span>th</span>, 2014",
		"ts": "1403110800",
		"summary": "My wife Aditi is a professional dog trainer, and I absorb a lot of information just being around her. She studies animal behavior and researches constantly to provide training that is based on science, not television shows. This post was inspired by her, as well as a movie I&rsquo;ll talk about in a minute. It&rsquo;s a strong departure from my usual fare. I don&rsquo;t apologize for that, as I think more people need to know about these things. I saw How To Train Your Dragon 2 this weekend and I loved it. Aside from being the sequel to one of my favorite animated movies of late, it illustrated two issues that do not receive enough attention: Positive reinforcement vs. positive punishment, and the myth of the Alpha. How to Train Your Dragon focuses on coexistence with once-feared dragons. The animal behavior displayed by the dragons in the movie is a mix of bird, cat, dog and horse behavior, among other mannerisms familiar to pet owners of various ilk. The movie explores the concept of \"alpha\" &mdash; most pertinent to dogs in our society &mdash; and the harm that the myth does. The idea of the \"alpha\" canine stemmed from a study done in the 40s with a \"pack\" of wolves. The problem with the study was that it wasn&rsquo;t a natural pack; it was a concocted group of wolves with very little familiarity with each other. The behaviors observed were not indicative of a pack in any real way, and the study has since been debunked. Personalities like Cesar Milan (The Dog Whisperer) continue to perpetrate the Alpha myth, along with the idea of having to dominate an animal to earn its respect (e.g. \"Alpha Rolls\"). This behavior creates a relationship where dogs obey out of fear, proven to create potentially aggressive animals. It&rsquo;s rarely publicized, but Cesar himself is regularly bitten as a result of his own tactics, and families who receive his special brand of training often report serious new issues with their pets. This concept has somehow been translated to people, and people with leadership skills are often referred to as Alphas. It&rsquo;s also used to explain the behavior of people who are, in reality, just assholes. Positive punishment means adding something to the environment that has a negative effect on the subject, physically or mentally. Alpha Rolls, choke/prong collars, kicks, scoldings, rolled up newspapers, etc., are all forms of positive punishment. Even the \"tsst\" sound that Cesar Milan uses is technically positive punishment&hellip;",
		"keywords": ["aditi","alpha","cesar","clicker","dragon","millan","terpstra","train","training","aditi","alpha","alphas","aside","cesar","clicker","conversely","dragon","milan","personalities","positive","punishment","rolls","train","training","whisperer","absorb","accidental","adding","again","aggressive","alpha","among","animal","animals","animated","apologize","assholes","based","behaves","behavior","behaviors","bitten","brand","canine","canines","choke","coexistence","collars","commonly","companions","compiled","concept","concocted","constantly","consultations","continue","create","creates","culminates","debunked","defeat","departure","displayed","dominate","dragons","earning","effective","enough","environment","excellent","explain","explores","familiar","familiarity","families","favorite","feared","focuses","forms","gaining","generally","great","group","happened","harsh","having","himself","hopefully","horse","human","humane","ignores","illustrated","indicative","information","inspired","interest","interested","issues","kicks","leadership","learning","little","loved","loyalty","mannerisms","mdash","mentally","message","methods","minute","moral","motivation","motivators","movie","movies","natural","negative","newspapers","observed","offering","often","owners","packaged","parents","people","perpetrate","pertinent","physically","planning","positive","potentially","praise","problem","professional","prong","proven","publicized","punishment","rarely","reality","receive","regularly","reinforcement","relationship","remote","report","researches","resources","results","rewarding","rewards","rolled","rsquo","running","science","scoldings","seeing","sequel","serious","sessions","shown","shows","since","skills","society","somehow","sound","special","spoiler","started","stemmed","strong","studies","study","submission","tactics","technically","television","theme","think","through","trainer","training","translated","treatment","treats","unpredictable","various","veiled","video","website","weekend","where","wolves"]
	},{
		"title": "Systematic 101 with Jordan Cooper",
		"url": "/2014/06/18/systematic-101-with-jordan-cooper/",
		"tags": ["podcast","systematic"],
		"date": "Jun 18<span>th</span>, 2014",
		"ts": "1403090880",
		"summary": "I was joined this week by Jordan Cooper. He&rsquo;s a comedian, web marketer and general internet guy. I had mentioned in episode 100 with Merlin Mann that I&rsquo;d played a show at a venue called The Temple in Brooklyn, and it turned out that Jordan was the one who booked that show. Small world. We talked punk rock, the DIY ethic, comedy hecklers and underground poker, among other things. Jordan also has his own podcast, soon to be on 5by5. Check out the episode",
		"keywords": ["brooklyn","cooper","jordan","studios","brooklyn","check","cooper","jordan","merlin","small","temple","among","booked","called","comedian","comedy","episode","ethic","general","hecklers","internet","joined","marketer","mentioned","played","podcast","poker","rsquo","talked","turned","underground","venue","world"]
	},{
		"title": "Web Excursions for June 17, 2014",
		"url": "/2014/06/17/web-excursions-for-june-17-2014/",
		"tags": ["bookmarks","launchbar"],
		"date": "Jun 17<span>th</span>, 2014",
		"ts": "1403013120",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Fenix Web Server A static desktop web server that accepts PUT and POST requests and lets you browse data and results. Growl support and Markdown rendering included. Red Sweater Blog &ndash; Red Sweater T-Shirt Support a great indie dev by buying a great-looking t-shirt. Command Space: A Review of LaunchBar and a History of Application Launchers &ndash; Shawn Blanc Great LaunchBar writeup by Shawn Blanc. austinzheng/swift-2048 A port of 2048 (iOS) to Swift. wantedly/swift-rss-sample \"An RSS reader app written in Swift. About 100 lines of code and written within about an hour. Proved Swift is a good programming language.\" Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["apple","blanc","markdown","shawn","swift","blanc","check","command","fenix","great","growl","history","launchbar","launchers","markdown","mindmeister","proved","server","shawn","shirt","space","support","sweater","swift","accepts","austinzheng","boosting","brainstorming","brought","browse","buying","collaborating","collaborative","desktop","excursions","great","included","indie","language","looking","mapping","ndash","partnership","productivity","programming","reader","rendering","requests","results","sample","server","shirt","software","static","support","swift","wantedly","within","writeup","written"]
	},{
		"title": "Web Excursions for June 13, 2014",
		"url": "/2014/06/13/web-excursions-for-june-13-2014/",
		"tags": ["bookmarks","comments","evernote"],
		"date": "Jun 13<span>th</span>, 2014",
		"ts": "1402672500",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Steady.js If you&rsquo;ve ever worked with throttling onScroll handlers in a web page, this looks like a clever solution. I&rsquo;ve been doing ok with a jQuery debounce/throttle combination, but this allows a callback function to delay the handler until a task is finished. AlchemyAPI An intriguing API for text analysis, language detection, sentiment recognition and semantic keywords. Something to explore soon. Wikify (Evernote Wiki-Helper) An interesting Alfred workflow for \"wikifying\" Evernote with Markdown support. Isso &ndash; a commenting server similar to Disqus Recommended by a friend on Twitter, I&rsquo;m seriously considering the switch. I don&rsquo;t love the idea of hosting a database for the website these days, but full control of my comments would be fun. Here, Look Solves one of my biggest annoyances with showing people photos on my iPhone. I actually told someone I was going to create this app once. I take full credit for it. I kid because I love. Launched A web-based interface for creating launchd tasks. Handy for people who don&rsquo;t want to run Launch Control, I would think. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["design","development","evernote","iphone","markdown","markup","alchemyapi","alfred","backblaze","check","control","disqus","evernote","handy","helper","launch","launched","markdown","recommended","solves","steady","twitter","wikify","affordably","allows","annoyances","backs","based","because","biggest","brought","callback","clever","cloud","combination","commenting","comments","computer","considering","control","create","creating","credit","database","debounce","detection","doing","entire","everything","excursions","explore","finished","friend","function","going","handler","handlers","hosting","iphone","interesting","interface","intriguing","jquery","keywords","language","launchd","looks","ndash","onscroll","partnership","people","photos","recognition","reliably","rsquo","securely","semantic","sentiment","seriously","server","showing","similar","solution","support","switch","tasks","think","throttle","throttling","today","website","wikifying","worked","workflow"]
	},{
		"title": "Fast, fuzzy directory navigation for Tag Filer",
		"url": "/2014/06/12/fast-fuzzy-directory-navigation-for-tag-filer/",
		"tags": ["scripting","tagfiler","tagging","terminal"],
		"date": "Jun 12<span>th</span>, 2014",
		"ts": "1402584720",
		"summary": "This script provides an easy way to jump around the filesystem if (and only if) you&rsquo;re using my Tag Filer system. In that system, you tag main \"context\" folders with \"=Tagname,\" and target subfolders (project folders) with \"@projecttag.\" The Tag Filing system allows me to tag individual files and folders with a \"#Tagname\" (target context) and \":project:chain\" tags to have Hazel automatically move them to their destination and maintain both a shallow folder system and a tag-based search system. Get more info here. If you have such a setup, you can source the function below in your profile and have a command available. Then, typing will jump to the folder tagged \"@projectx\" inside of the context folder tagged \"=Work.\" The command requires a context as the first argument, and any subsequent tags are project folders, but it&rsquo;s forgiving about capitalization and partial tags. In fact, it&rsquo;s even fuzzy, so you could type . You can also reach subfolders in sequence, which is handy because after the project folder I often have subfolders (e.g. asset folders) with the same name as other projects&rsquo; folders. In this scenario, will jump me to instantly",
		"keywords": ["folders","hazel","filer","filing","hazel","tagname","allows","argument","asset","automatically","available","based","because","below","capitalization","chain","command","context","destination","files","filesystem","first","folder","folders","forgiving","function","fuzzy","handy","individual","inside","instantly","maintain","often","partial","profile","project","projects","projecttag","projectx","provides","reach","requires","rsquo","scenario","script","search","sequence","setup","shallow","source","subfolders","system","tagged","target","typing","using"]
	},{
		"title": "Sponsor: PDFpen for iPad",
		"url": "/2014/06/12/sponsor-pdfpen-for-ipad/",
		"tags": [],
		"date": "Jun 12<span>th</span>, 2014",
		"ts": "1402570800",
		"summary": "This week, BrettTerpstra.com is sponsored by PDFpen for iPad from Smile: PDFpen for iPad lets you edit PDFs anywhere you are. Now it comes with Transporter integration that lets you access PDFs on your own private, secure cloud. Sign a contract, fix a typo, correct a price list, or fill out a form while you&rsquo;re on the go. Take PDF documents with you&hellip; and add notes, highlighting, and other markup during your downtime. Grab and save PDFs using Dropbox, Evernote, Google Drive, Box, and now Transporter. PDFpen for iPad is available on the App Store. Transporter is available from FileTransporter.com ",
		"keywords": ["document","drive","dropbox","evernote","format","google","icloud","pdfpen","portable","slideshare","store","transporter","brettterpstra","drive","dropbox","evernote","filetransporter","google","pdfpen","smile","store","transporter","access","anywhere","available","cloud","comes","contract","documents","downtime","hellip","highlighting","icloud","integration","markup","notes","price","private","rsquo","secure","sponsored","using","while"]
	},{
		"title": "Recap: Jun 11th, 2014",
		"url": "/2014/06/11/recap-jun-11th-2014/",
		"tags": ["recap","systematic"],
		"date": "Jun 11<span>th</span>, 2014",
		"ts": "1402527600",
		"summary": "Sponsor: Doxie Portable Scanners (Jun 5th) A big thanks to Doxie and their line of amazing portable scanners for sponsoring BrettTerpstra.com this week. Systematic 99 with Dave Hamilton and Moisés Chiullan (Jun 5th) Episode 99 of Systematic was broadcast from WWDC at New Relic studios with an unprecedented number of special guests (I&rsquo;ve never had more than one&hellip;). Even better random filenames (Jun 9th) It started here with a script that used the Aspell dictionary to create random combinations of words, but grew into one that specifically combined an adjective and a noun to create humorous-but-memorable filenames. Systematic 100 with Merlin Mann (Jun 10th) The 100th episode of Systematic went live this week with one of my favorite guests. Don&rsquo;t miss it! Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["apple","conference","developers","doxie","hamilton","merlin","relic","scanners","worldwide","aspell","brettterpstra","chiullan","doxie","episode","hamilton","merlin","portable","recaps","relic","scanners","sponsor","systematic","adjective","amazing","brettterpstra","broadcast","categories","chiullan","class","combinations","create","curated","dictionary","digest","doxie","episode","favorite","filenames","format","funny","guests","hamilton","height","hellip","https","humorous","image","images","interest","loading","media","memorable","merlin","moises","noscript","original","picture","portable","posts","potentially","quick","random","recap","rsquo","scanners","script","scripts","source","special","specifically","sponsor","sponsoring","srcset","started","studios","subscribe","summary","systematic","thanks","title","unprecedented","updates","weekly","width","words"]
	},{
		"title": "Systematic 100 with Merlin Mann",
		"url": "/2014/06/10/systematic-100-with-merlin-mann/",
		"tags": ["podcast","systematic"],
		"date": "Jun 10<span>th</span>, 2014",
		"ts": "1402443060",
		"summary": "Episode 100! I was joined by Merlin Mann-about-town for this anniversary episode. It was a great talk about WWDC and Apple, sleep habits and some fun top picks. Don&rsquo;t take my word for it, go check out the show at 5by5! A big thanks to Merlin for taking the time. Also, be sure to tune in on Friday (I think) for an episode of \"Overtired,\" my new podcast with Christina Warren. It&rsquo;s going to be a blast",
		"keywords": ["apple","merlin","podcast","programs","studios","television","apple","christina","episode","friday","merlin","overtired","warren","anniversary","blast","check","episode","going","great","habits","joined","picks","podcast","rsquo","sleep","taking","thanks","think"]
	},{
		"title": "Even better random filenames",
		"url": "/2014/06/09/even-better-random-filenames/",
		"tags": ["lipsum","scripting","terminal"],
		"date": "Jun 9<span>th</span>, 2014",
		"ts": "1402329060",
		"summary": "This is an evolution of the random filename generator I posted last week. Based on comments from BrianEnigma, this script allows you to specify \"starts with\" arguments to get an adjective and a noun using the WordNet dictionaries. You can use the ready-made set I have here, or download the \"Database files only\" from WordNet and run this on the index.adj and index.noun files to create your libraries: Edit the script below to point to the location of your dictionary files. Then just install and source it to start using. If you provide a single alphabet character as an argument, both the adjective and the noun will start with that letter. Provide two, separated by a space, and the adjective will start with the first one, the noun with the second. You can still provide no arguments to get random words from the full alphabet. I&rsquo;m using this with a script that generates large blocks of random lorem ipsum (based on the Lorem Ingsoc scripts) in a series of files with a Marked index file for testing Marked 2. Here&rsquo;s the basic idea, just for reference. It&rsquo;s truncated, but shows how to use the function above in a script",
		"keywords": ["adjective","dictionary","wordnet","based","brianenigma","database","examples","ingsoc","lorem","marked","wordnet","above","adjective","allows","alphabet","argument","arguments","based","basic","below","blocks","character","comments","create","dictionaries","dictionary","download","evolution","filename","files","first","function","generates","generator","index","install","ipsum","letter","libraries","location","lorem","point","posted","random","ready","rsquo","script","scripts","second","separated","series","shows","single","source","space","specify","starts","testing","truncated","using","words"]
	},{
		"title": "The Screenfloat giveaway winners",
		"url": "/2014/06/08/the-screenfloat-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jun 8<span>th</span>, 2014",
		"ts": "1402248420",
		"summary": "Thanks to everyone who entered, and congrats to the winners. If you didn&rsquo;t win, I highly recommend checking it out anyway. It&rsquo;s immensely useful in a broad range of applications, and only $6.99 on the Mac App Store",
		"keywords": ["apple","screenshot","store","betty","deutsch","graessle","jason","latenightlizzie","sackett","screenfloat","store","taylor","thanks","anyway","applications","broad","checking","congrats","entered","everyone","giveaway","highly","immensely","lucky","range","recommend","rsquo","useful","winners"]
	},{
		"title": "(Potentially) funny random filenames for Bash scripts",
		"url": "/2014/06/07/potentially-funny-random-filenames-for-bash-scripts/",
		"tags": ["lipsum","scripting","terminal"],
		"date": "Jun 7<span>th</span>, 2014",
		"ts": "1402146000",
		"summary": "It&rsquo;s been a busy week, and I&rsquo;ll be writing up my WWDC thoughts and a couple of TUAW posts after a plane ride today. In the meantime, I made you a thing. Numbered files are boring, and truly random character sequences aren&rsquo;t much fun. Aspell has a master dictionary that happens to contain a lot of potentially funny words. I decided to dump those and randomly pick two to string together as filenames. The function uses a dictionary file (single word per line) and , available through Homebrew in the Gnu package (). You can create a dictionary file using Aspell () with the command (or just grab the one I made). Be sure to edit the \"wordfile\" variable in the function to point to the location of your dictionary",
		"keywords": ["aspell","checker","dictionary","spell","aspell","homebrew","markdown","marked","numbered","available","before","boring","character","command","contain","couple","create","decided","dictionary","filenames","files","filled","function","funny","happens","index","lipsum","location","master","meantime","multiple","package","plane","point","posts","potentially","quick","random","randomly","results","rsquo","sample","script","sequences","single","string","testing","thoughts","through","today","together","truly","using","variable","wordfile","words","writing","wrote"]
	},{
		"title": "Web Excursions for June 06, 2014",
		"url": "/2014/06/06/web-excursions-for-june-06-2014/",
		"tags": ["bookmarks"],
		"date": "Jun 6<span>th</span>, 2014",
		"ts": "1402080540",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Defensive BASH programming Some pretty smart stuff in here for Bash scripters. Torchpad A simple, elegant wiki based on Git and Markdown (GFM). Responsive design, code highlighting, and you can even download the git repository for backup. qunb A beautiful web app for visualizing and presenting Google Analytics stats. holygeek/git-number I&rsquo;ve been looking for something like this. Adds numeric references to filenames returned by various git commands so you can easily act on them with just a number instead of a path. Hugo - A fast and modern static website engine An interesting static site generator that looks like it has some possibilities. On quick review it&rsquo;s missing some typical blog functionality (e.g. pagination), but it seems to have a pretty good architecture for extension",
		"keywords": ["analytics","github","google","markdown","analytics","cleanmymac","defensive","google","markdown","responsive","torchpad","architecture","backup","based","beautiful","brought","commands","design","download","easily","elegant","engine","excursions","extension","filenames","functionality","generator","highlighting","holygeek","interesting","looking","looks","missing","modern","numeric","pagination","partnership","possibilities","presenting","programming","quick","references","repository","returned","rsquo","scripters","seems","simple","smart","speed","static","stats","stuff","tools","typical","various","visualizing","website"]
	},{
		"title": "Systematic 99 with Dave Hamilton and Moisés Chiullan",
		"url": "/2014/06/05/systematic-99-with-dave-hamilton-and-moises-chiullan/",
		"tags": ["podcast","systematic"],
		"date": "Jun 5<span>th</span>, 2014",
		"ts": "1401986340",
		"summary": "I had a great time in the New Relic studios in San Francisco recording Systematic this week. I was joined by not one, but two awesome guests: Dave Hamilton of Mac Observer and Mac Geek Gab (and the Macworld All Star band), and Moisés Chiullan of ScreenTime and the Electric Shadow Network. We talked about drummers, networking and routers and a lighting round of top three picks. Check out the episode at 5by5",
		"keywords": ["davehamilton","francisco","macworld","relic","studios","check","chiullan","electric","episode","francisco","hamilton","macworld","network","observer","relic","screentime","shadow","systematic","awesome","brettterpstra","class","drummers","episode","features","great","guests","highlight","highlighter","https","joined","language","lighting","loading","macobserver","macworldallstarband","media","networking","noscript","original","picks","picture","plaintext","recording","rouge","round","routers","screentime","source","srcset","studios","systematic","systematiclogo","talked","title","uploads","width"]
	},{
		"title": "Sponsor: Doxie Portable Scanners",
		"url": "/2014/06/05/sponsor-doxie-portable-scanners/",
		"tags": [],
		"date": "Jun 5<span>th</span>, 2014",
		"ts": "1401966000",
		"summary": "This week, brettterpstra.com is sponsored by Doxie and their line of portable scanners. I&rsquo;m a big fan of Doxie and have been happily using their products from day one. Doxie Go is the smart, cordless portable document scanner that works anywhere without a computer and syncs seamlessly with your Mac. Doxie stores up to 400 scans in memory, then syncs to your desktop. Doxie&rsquo;s Mac app makes it easy to organize and create multi-page PDFs on your desktop or in the cloud. Doxie&rsquo;s just about the size of an empty paper towel roll, so it&rsquo;s easy to scan then tuck away in a drawer when you&rsquo;re not using it. Doxie is all about different paperless workflows &ndash; that is, Doxie&rsquo;s app is like an inbox for your scans, and you&rsquo;re in complete control of what happens next. Some Doxie users save off to a local folder structure; others save to a cloud app like Dropbox, OneNote, or Evernote. It&rsquo;s up to you. Doxie offers complete flexibility for organizing all your paper. Here&rsquo;s another neat workflow: Use Hazel to create character recognition workflows that automatically sort your Doxie searchable PDFs. By creating a rule that looks for, for example, your power company account number, Hazel automatically files all your scans instantly. You can store them on your local drive, or in Dropbox for instant access anywhere. See Shawn Blanc&rsquo;s article for tips on how to set up Hazel and Doxie to work together, and check out his video review too. Finally: this week, Doxie Go is on sale for $164.67 on Amazon (about $35 off)",
		"keywords": ["document","doxie","dropbox","evernote","format","hazel","iphone","portable","amazon","blanc","doxie","dropbox","evernote","finally","hazel","onenote","shawn","access","account","another","anywhere","article","automatically","brettterpstra","character","check","cloud","company","computer","control","cordless","create","creating","desktop","different","document","drawer","drive","empty","example","files","flexibility","folder","happens","happily","inbox","instant","instantly","local","looks","makes","memory","multi","ndash","offers","organize","organizing","others","paper","paperless","portable","products","recognition","rsquo","scanner","scanners","scans","seamlessly","searchable","smart","sponsored","store","stores","structure","syncs","together","towel","users","using","video","workflow","workflows","works"]
	},{
		"title": "Recap: Jun 04th, 2014",
		"url": "/2014/06/04/recap-jun-04th-2014/",
		"tags": ["recap"],
		"date": "Jun 4<span>th</span>, 2014",
		"ts": "1401922800",
		"summary": "Sponsor: Infragistics (May 29th) Thanks to Infragistics and the NucliOS framework for sponsoring BrettTerpstra.com this week. iOS developers, you really should check this out. Marked 2 sneak peek: bookmarks and navigation (Jun 3rd) This has already been refined a bit, but this preview of one of the new features in Marked 2 is, in my opinion, prety cool. The sweet giveaways continue: ScreenFloat (Jun 3rd) The ScreenFloat giveaway runs until Sunday, enter now! Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["infragistics","iphone","nuclios","brettterpstra","infragistics","marked","nuclios","recaps","screenfloat","sponsor","sunday","thanks","bookmarks","check","continue","curated","developers","digest","enter","features","format","framework","giveaway","giveaways","interest","navigation","posts","prety","preview","quick","refined","rsquo","sneak","specifically","sponsoring","subscribe","summary","updates","weekly"]
	},{
		"title": "The sweet giveaways continue: ScreenFloat",
		"url": "/2014/06/03/the-sweet-giveaways-continue-screenfloat/",
		"tags": ["giveaway","macappstore","macos"],
		"date": "Jun 3<span>rd</span>, 2014",
		"ts": "1401820020",
		"summary": "ScreenFloat is another indispensible Mac utility from the author of Yoink. It allows you to capture any part of your screen and quickly turn it into a floating window that you can reference while you work in other applications. I use it frequently to grab specs from a web page while I&rsquo;m writing about something, preventing me from having to switch back to the browser should my mind lose a bit of the information. The latest version has full library features and support for pulling in images and text. It&rsquo;s become a robust solution without growing obtrusive. Much like Yoink, it stays out of the way but is ready to save you hassle when you need it. I&rsquo;ve been using ScreenFloat for a few years now and I still consider it the best in class. That&rsquo;s why I&rsquo;m really happy that Matthias decided to offer seven ScreenFloat codes to give away to my readers. Just fill in the form below to enter. Open to everybody (who has the ability to redeem a Mac App Store promo code, anyway). I&rsquo;ll be drawing the winners right after I get back from San Francisco, so we&rsquo;ll say 12:00PM CST on Sunday, June 8th. Sorry, this giveaway has ended",
		"keywords": ["apple","store","window","yoink","francisco","matthias","screenfloat","sorry","store","sunday","yoink","ability","allows","another","anyway","applications","author","below","browser","capture","class","codes","consider","decided","drawing","ended","enter","everybody","features","floating","giveaway","growing","happy","hassle","having","images","indispensible","information","latest","library","obtrusive","offer","preventing","promo","pulling","quickly","readers","ready","redeem","right","robust","rsquo","screen","seven","solution","specs","stays","support","switch","using","utility","version","while","window","winners","writing","years"]
	},{
		"title": "Marked 2 sneak peek: bookmarks and navigation",
		"url": "/2014/06/02/marked-2-sneak-peek-bookmarks-and-navigation/",
		"tags": ["marked","video"],
		"date": "Jun 2<span>nd</span>, 2014",
		"ts": "1401764760",
		"summary": "I know I&rsquo;ve been quiet this week as I try to wrap up a lot of things and plan for a week in San Francisco during WWDC (I&rsquo;ll be flying in tomorrow). I spent some time this weekend working on a new feature for the Mac App Store release of Marked 2 that I thought I&rsquo;d show off. (It will, of course, be available in the non-MAS version, too). It&rsquo;s about bookmarking your document when reviewing. I was very unsatisfied with Marked&rsquo;s current bookmarking capability. It&rsquo;s not a highly-used feature, but why have it there at all if it&rsquo;s going to suck, right? Most of my efforts in this next release have been related to popular requests, sandboxing and overall functionality improvements, but this one I just had to try. It&rsquo;s easier to show&hellip; I&rsquo;m looking forward to meeting up with as many people at WWDC as I can find time for, so don&rsquo;t be shy about pinging me for coffee (etc.)! I&rsquo;ll be writing for TUAW and podcasting, too, by the way, and I&rsquo;ll let you know what I put up as the week goes on",
		"keywords": ["apple","conference","developers","francisco","store","worldwide","francisco","marked","store","available","bookmarking","capability","coffee","document","easier","efforts","feature","flying","functionality","going","hellip","highly","improvements","looking","meeting","overall","people","pinging","podcasting","popular","quiet","related","release","requests","reviewing","right","rsquo","sandboxing","spent","thought","tomorrow","unsatisfied","version","weekend","working","writing"]
	},{
		"title": "Sponsor: Infragistics",
		"url": "/2014/05/29/sponsor-infragistics/",
		"tags": [],
		"date": "May 29<span>th</span>, 2014",
		"ts": "1401361200",
		"summary": "I&rsquo;m pleased to have Infragistics as a sponsor this week. Their NucliOS toolset makes creating complex data-based iOS applications a breeze. If you develop mobile applications for iOS, you&rsquo;ll want to check this out. Introducing your solution for a world gone BYOD (Bring Your Own Device): NucliOS. Our newest toolset delivers the core controls you need to create high performance, highly visual, totally native iPad and iPhone applications. Built with performance and style in mind, NucliOS offers an advanced Data Grid and a powerful set of versatile charts perfect for mobile applications in the consumer marketplace or the enterprise. Render iOS charts with hundreds of thousands of data points that are capable of millisecond updates - sparing nothing to achieve lightning speed. Enable heavy-duty iPad data visualization and analysis on large volumes of data with more than 40 different chart types, including Scientific and Financial Series, a new Pie Chart, and a Radial Gauge. Support for the Motion Framework within the Data Chart control allows you to build highly engaging visualizations and provides smooth playback of changes in data over time, giving life to data through fluid animations. Take advantage of a powerful API that is familiar to all iOS developers. You can use NucliOS controls in native iOS projects built with Objective C and Xcode. You can even build in C#; with Xamarin.ioS support, NucliOS includes final MonoTouch bindings for all of our iOS controls.  Find more info and a free trial at infragistics.com, and check out the free Sample Browser in the App Store! Also be sure to take a look at the YouTube channel, where you can view a range of videos from introductory guides to advanced tutorials",
		"keywords": ["infragistics","iphone","monotouch","nuclios","youtube","bring","browser","built","chart","device","financial","framework","gauge","infragistics","introducing","monotouch","motion","nuclios","radial","sample","scientific","series","store","support","xamarin","xcode","youtube","achieve","advanced","advantage","allows","animations","apple","applications","based","bindings","breeze","brettterpstra","build","built","capable","changes","channel","chart","charts","check","class","complex","consumer","control","controls","create","creating","delivers","develop","developers","different","engaging","enterprise","familiar","fluid","giving","guides","heavy","height","highly","https","hundreds","iphone","image","includes","including","infragistics","introductory","itunes","lightning","loading","makes","marketplace","media","millisecond","mobile","native","newest","noscript","nothing","nuclios","offers","original","performance","picture","playback","pleased","points","powerful","products","projects","provides","range","rsquo","smooth","solution","source","sparing","speed","sponsor","srcset","style","support","thousands","through","title","toolset","totally","trial","tutorials","types","updates","uploads","versatile","videos","visual","visualization","visualizations","volumes","where","width","within","world","youtube"]
	},{
		"title": "The history of Rock and Roll in reverse",
		"url": "/2014/05/28/the-history-of-rock-and-roll-in-reverse/",
		"tags": ["music","personal"],
		"date": "May 28<span>th</span>, 2014",
		"ts": "1401325140",
		"summary": "I love music. I love discovering new music. I love discovering old music. I didn&rsquo;t have any guides to the world of music, really. I struck out on my own and found what I love by buying, trading and stealing until things made sense. And it all went backwards. I was born in 1978. My mom loved Elvis, but had kind of stopped there. My dad really only ever appreciated classical music. The most cutting edge music of my early years was Peter, Paul, and Mary records and the Boston Pops. I think I was about 10 when I first started hearing real \"pop\" music. My parents gave me a pair of FM radio headphones that I would listen to when I was rollerskating in the driveway. I wasn&rsquo;t supposed to listen to certain stations, but I did. The Bangles, Prince, and other stuff made my head bop. Then, in 5th grade, I made friends with some older kids who introduced me to rock and roll. It made my pulse race and my head bang. I was hooked. I was 12 when I moved to Winona, MN (for the first time). There was a record store that I can&rsquo;t even remember the name of now. They had piles and piles of casette tapes. They were cheap, and I started buying everything I could find. Motley Crüe was the first band I latched on to. Then Poison and other fluff. My parents took a lot of it away from me. I remember being told that the cover of Aerosmith&rsquo;s \"Pump\" was indecent, and the skull on \"Dr. Feelgood\" was of the devil. Then I found Kreator, a cassete that I kept well-hidden. In a reverse archeological dig, Kreator led to Suicidal Tendencies, which led to Metallica, which led to Maiden and Priest, Exodus and Slayer. I was listening to Bonded in Blood and Ride the Lightning on the schoolbus where a bunch of kids were reciting Vanilla Ice lyrics. I should have felt isolated, but somehow I felt warm and fuzzy listening to thrash metal. It&rsquo;s surprising to me that I didn&rsquo;t really get into Motörhead until I was already down the punk rock avenue a ways. Like I said, reverse chronology. I&rsquo;ve spent most of my adult life digging backwards through music history. I didn&rsquo;t buy Doors or Emerson, Lake, and Palmer records until I was 18. Along the way, Zeppelin, AC/DC, Guns N&rsquo; Roses, and more bands than I can name passed by, but many of them didn&rsquo;t make sense to me until I understood the context. I learned that you have to know what came before to understand what is. You have to know the political and social context for any music before&hellip;",
		"keywords": ["bangles","kreator","maiden","metal","metallica","ramones","thrash","aerosmith","bangles","blood","bonded","boston","conflict","doors","elvis","emerson","exodus","exploited","feelgood","hammet","kreator","lightning","maiden","metallica","motley","palmer","peter","pistols","poison","priest","prince","ramones","roses","screeching","slayer","suicidal","tendencies","vanilla","weasel","winona","zeppelin","accessible","adult","appreciate","appreciated","archeological","attractive","avenue","backwards","bands","before","began","begun","behind","between","blues","bunch","buying","casette","cassete","certain","cheap","choices","chronology","classical","clubs","compilations","context","cover","cutting","dangerous","define","defined","devil","difference","digging","discovered","discovering","driveway","dying","eventually","everything","fascination","finally","first","fluff","found","friends","fuzzy","garage","generation","generations","going","gotten","grade","grunge","guides","headphones","heard","hearing","hidden","history","hooked","identity","indecent","introduced","isolated","latched","ldquo","learned","listen","listened","listening","loved","lyrics","making","maybe","mdash","metal","moved","movements","music","musical","older","parents","passed","peers","people","personality","piles","played","playing","political","pulse","radio","rdquo","reciting","record","remember","reverse","rhead","rollerskating","roots","rsquo","scares","schoolbus","searching","sense","skull","social","solos","somehow","spent","squarely","started","stations","stealing","stopped","store","struck","stuck","stuff","supposed","surprising","tapes","teenage","think","thrash","through","today","trading","understand","where","world","years"]
	},{
		"title": "Recap: May 28th, 2014",
		"url": "/2014/05/28/recap-may-28th-2014/",
		"tags": ["recap"],
		"date": "May 28<span>th</span>, 2014",
		"ts": "1401318000",
		"summary": "Sponsor: OmniFocus 2 for Mac (May 22nd) A big thanks to Omni for sponsoring BrettTerpstra.com this week. OmniFocus 2 has a lot to offer! Markdown: here, let me show you (May 23rd) My video tutorial on Markdown is available now, check the post for a discount code! Because it&rsquo;s my day off: just breathe (May 26th) My plecostomus fish was enjoying memorial day, so I made a video. It&rsquo;s goofy, but I like it. Mirror your MindMeister maps to nvALT (May 27th) This is how I&rsquo;m brainstorming lately. Mind map on MindMeister.com, then sync down to Markdown notes for easy searching and reference. Pretty nerdy, but you might find it useful. Systematic 98 with Brett Kelly (May 27th) A great chat with an old friend. Check it out. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["brett","kelly","markdown","mindmeister","because","brett","brettterpstra","check","kelly","markdown","mindmeister","mirror","omnifocus","recaps","sponsor","systematic","available","brainstorming","breathe","check","curated","digest","discount","enjoying","format","friend","goofy","great","interest","memorial","nerdy","notes","nvalt","offer","plecostomus","posts","quick","rsquo","searching","specifically","sponsoring","subscribe","summary","thanks","tutorial","updates","useful","video","weekly"]
	},{
		"title": "Systematic 98 with Brett Kelly",
		"url": "/2014/05/27/systematic-98-with-brett-kelly/",
		"tags": ["podcast","systematic"],
		"date": "May 27<span>th</span>, 2014",
		"ts": "1401220980",
		"summary": "I had a great time talking with Brett Kelly (@inkedmn) this week. He&rsquo;s recently gone independent, so it was another great chance for me to bounce some ideas about my own new work life off someone in the same boat (and maybe even offer some advice&hellip;). Mathematics, vaping, and note-taking tools were all fair game. Check out the episode at 5by5",
		"keywords": ["apple","brett","iphone","kelly","studios","twitter","brett","check","kelly","mathematics","advice","another","bounce","chance","episode","great","hellip","ideas","independent","inkedmn","maybe","offer","recently","rsquo","taking","talking","tools","vaping"]
	},{
		"title": "Mirror your MindMeister maps to nvALT",
		"url": "/2014/05/27/mirror-your-mindmeister-maps-to-nvalt/",
		"tags": ["brainstorming","markdown","mindmapping","mindmeister","notes","nvalt","scripting","search","spotlight"],
		"date": "May 27<span>th</span>, 2014",
		"ts": "1401210000",
		"summary": "I love iThoughtsX, MindNode Pro and Mindjet MindManager for a lot of the local brainstorming I do on my Mac, but I&rsquo;ve found myself doing a lot of work with MindMeister in a Fluid browser (and on iOS) lately. MindMeister is great for creating mind maps for sharing, collaboration and even presentation (with slideshow functionality), and has import and export functionality for all the other apps I use. The one thing I wanted was to be able to search my MindMeister maps and brainstorms as part of my nomal notes setup, meaning nvALT and Spotlight. So I modified a project I worked on with Donald Curtis called mindmeister2md to do just that. The original script allowed for selecting and exporting a single map as Markdown. My modified version exports every map in your account to separate Markdown files, intended to be stored in my nvALT folder as plain text files. It also saves copies of my maps in PDF and Mindjet MindManager formats in a separate export folder. These can be searched with Spotlight and maintain their original formatting. This is not a 2-way sync, it just gives you local, searchable copies of your work. Each of the Markdown notes contains a direct link back to the map, and stores additional details in MultiMarkdown metadata format. It has some rudimentary TaskPaper support for maps that contain due dates and priorities, but that part isn&rsquo;t fully fleshed out yet. The script will check the last updated date of the maps and if no changes have been made since the last export, it will ignore them. This allows the script to be run as a recurring task using launchd. I run it every 10 minutes in the background, making a quick ping to the API and checking to see if any maps have been updated. If not, it quietly exits. If there are new changes, it updates the related files accordingly. To use it, save the script from GitHub as and run it once to initialize the config file at . You&rsquo;ll need an API key from MindMeister, which you can apply for here. Edit the configuration file with your API key and secret. While you&rsquo;re in there, edit the and keys to point to your notes folder and where you want any exported files (pdf, mindmanager, etc.) to be stored. Available options also include \"freemind\" and \"rtf.\" I haven&rsquo;t set up image exports yet, mostly because they&rsquo;re not searchable with Spotlight and there&rsquo;s no point for me if I have the PDF and MindManager versions. Next, you&rsquo;ll need to run it at&hellip;",
		"keywords": ["github","ithoughtsx","mindmanager","mindnode","multimarkdown","taskpaper","available","control","curtis","description","donald","fluid","github","installation","launch","lingon","markdown","mindmanager","mindmeister","mindnode","mindjet","multimarkdown","spotlight","taskpaper","while","account","again","allowed","allows","apply","assigned","background","based","because","brainstorming","brainstorms","browser","called","cccfb","changes","check","checking","collaboration","config","configuration","contain","contains","copies","creating","dates","details","direct","doing","example","exits","export","exported","exporting","exports","extension","files","fleshed","folder","format","formats","formatting","found","freemind","fully","functionality","github","gives","great","haven","https","ithoughtsx","ignore","image","import","initialize","intended","interval","intervals","launchd","local","maintain","making","meaning","metadata","mindmanager","mindmeister","minutes","modified","mostly","myself","nomal","notes","nvalt","often","options","original","point","preference","presentation","priorities","project","quick","quietly","reasonable","recurring","related","rsquo","rudimentary","saves","script","search","searchable","searched","secret","selecting","separate","setup","sharing","since","single","slideshow","stored","stores","suggest","support","trial","ttscoff","updated","updates","using","version","versions","wanted","where","worked"]
	},{
		"title": "Because it's my day off: just breathe",
		"url": "/2014/05/26/because-its-my-day-off-just-breathe/",
		"tags": ["personal"],
		"date": "May 26<span>th</span>, 2014",
		"ts": "1401080400",
		"summary": "BrettTerpstra.com",
		"keywords": ["chillout","frank","chillout","frank","music","pleco","right","think"]
	},{
		"title": "Web Excursions for May 23, 2014",
		"url": "/2014/05/23/web-excursions-for-may-23-2014/",
		"tags": ["bookmarks","coffee","icons","launchbar","omnifocus","search"],
		"date": "May 23<span>rd</span>, 2014",
		"ts": "1400875200",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. How to Brew Coffee Without a Coffee Maker It happens rarely in my life, but there are some great tips here to bring out the coffee survivalist in you. Single Element CSS Spinners If you design web pages, you&rsquo;re going to need one of these eventually. Nice collection of CSS \"spinners\" for loading feedback. Launchbar Actions For those of us sticking with LaunchBar, here are some great actions including (for beta 6) a DuckDuckGo search with live search suggestions. A Year of Icons Discovered via The Sweet Setup, this is a collection of unique and useful pictograms for just about any icon needs. OmniFocus 2 for Mac from a Reminders User&rsquo;s Perspective I do love Federico Viticci&rsquo;s reviews. Also see Stephen Hacket&rsquo;s and Shawn Blanc&rsquo;s reviews. All excellent",
		"keywords": ["apple","federico","group","omnifocus","viticci","actions","blanc","check","coffee","discovered","duckduckgo","element","federico","hacket","icons","launchbar","launchbar","maker","omnifocus","perspective","reminders","setapp","setup","shawn","single","spinners","stephen","viticci","access","actions","bring","brought","coffee","collection","design","eventually","excellent","excursions","feedback","going","great","happens","hundreds","including","loading","monthly","needs","pages","partnership","pictograms","rarely","reviews","rsquo","search","spinners","sticking","subscription","suggestions","survivalist","today","unique","useful"]
	},{
		"title": "Markdown: here, let me show you",
		"url": "/2014/05/23/markdown-here-let-me-show-you/",
		"tags": ["markdown","video"],
		"date": "May 23<span>rd</span>, 2014",
		"ts": "1400865960",
		"summary": "I hear frequently from people who are new to Markdown. While it&rsquo;s not a terribly complex syntax, it can be a little hard to grasp when you&rsquo;re starting from scratch. This is especially true if you don&rsquo;t already have a background in HTML coding. So I made a video to help out. The video is available through Peachpit&rsquo;s Learn By Video series. You can see a preview and purchase a copy through their website. As a friend of mine, you can use the coupon code to get 40% off the list price when you check out. Because I like you. Markdown is the easiest way to create web content, and can be used to generate PDFs, Word and other documents with all the flexibility of CSS styling. The syntax is easy to learn and the various flavors of Markdown extend it to a point where it&rsquo;s adaptable enough to handle most needs. This course begins by explaining the basic syntax of Markdown, as defined by John Gruber and goes on to explore other versions of Markdown, including MultiMarkdown, GitHub Flavored Markdown, Kramdown and others. It finishes by showing how to turn your Markdown into web content and polished documents. The video is wrapped in a unique interface that allows you to jump to any topic and also bookmark individual sections for later review. The unique \"Watch and Work\" mode shrinks the video into a small window to allow you to work alongside in Markdown as you view the video. Project files used in the lessons are included on the video so you can practice what you’ve learned. I think beginners and people who feel like they could be doing more with Markdown will find it full of useful information. Take a look for yourself",
		"keywords": ["gruber","kramdown","markdown","multimarkdown","because","flavored","github","gruber","kramdown","learn","markdown","markdown","markdownvideo","multimarkdown","peachpit","project","video","watch","while","adaptable","allow","allows","alongside","available","background","basic","beginners","begins","blockquote","blurb","bookmark","brettterpstra","check","class","click","coding","complex","content","coupon","create","defined","documents","doing","easiest","enough","especially","explaining","explore","extend","files","finishes","flavors","flexibility","friend","grasp","handle","height","highlighter","https","image","included","including","individual","information","interface","language","later","ldquo","learn","learned","lessons","linksynergy","little","loading","markdownlearnbyvideo","media","needs","noscript","offerid","original","others","people","picture","plaintext","point","polished","practice","preview","price","rdquo","rouge","rsquo","scratch","sections","series","showing","shrinks","small","source","srcset","starting","styling","subid","syntax","terribly","think","through","title","topic","unique","uploads","useful","various","versions","video","website","where","width","window","wrapped"]
	},{
		"title": "Sponsor: OmniFocus 2 for Mac",
		"url": "/2014/05/22/sponsor-omnifocus-2-for-mac/",
		"tags": [],
		"date": "May 22<span>nd</span>, 2014",
		"ts": "1400781600",
		"summary": "I&rsquo;m excited to have OmniFocus 2 for Mac as this week&rsquo;s sponsor. Hot off the press, the new version has a lot to offer! OmniFocus 2 is easier to use than ever. All of the features, palettes and interface have been redesigned, and not just to look better. Entering tasks, notes, and details like contexts, \"defer dates\" and recurring tasks is more intuitive than ever. What&rsquo;s more, OmniFocus 2 is even cheaper than ever. The \"advanced\" features that have previously only made new users feel uncomfortable with settling in have been moved out to OmniFocus 2 Pro. This includes Custom Perspectives, Focus mode and advanced scripting support, leaving all the rest of the power of OmniFocus 2 in the standard package at a lower entry price. If you&rsquo;ve ever used OmniFocus on the iPad, you&rsquo;re familiar with the \"Forecast\" view, which shows you all of your upcoming due dates combined with calendar events and more. It&rsquo;s extremely useful, and one of the primary reasons that I&rsquo;ve always reviewed my tasks on my iPad instead of my desktop. Well, it&rsquo;s on my desktop now, and it&rsquo;s awesome. Reviewing in general is slicker, too, and I can flip through my projects, update tasks and catch \"blocks\" in my workflow quickly and easily. OmniFocus 2 is available for $39.99, or you can get a Pro License for $79.99 to add the more advanced features. If you&rsquo;re looking for some help getting started, Omni provides \"Support Short\" videos shot just for OmniFocus 2&rsquo;s new interface. There&rsquo;s also a whole new website called Inside OmniFocus to collect helpful information on workflows, systems, tools, and services that all work with OmniFocus. Check out OmniFocus 2 for yourself",
		"keywords": ["group","macintosh","omnifocus","workflow","check","custom","entering","focus","forecast","inside","license","omnifocus","perspectives","reviewing","short","support","advanced","available","awesome","blocks","calendar","called","catch","cheaper","collect","contexts","dates","desktop","details","easier","easily","entry","events","excited","familiar","features","general","getting","helpful","includes","information","interface","intuitive","leaving","looking","lower","moved","notes","offer","package","palettes","press","previously","price","primary","projects","provides","quickly","reasons","recurring","redesigned","reviewed","rsquo","scripting","services","settling","shows","slicker","sponsor","standard","started","support","systems","tasks","through","tools","uncomfortable","upcoming","useful","users","version","videos","website","whole","workflow","workflows"]
	},{
		"title": "Recap: May 21st, 2014",
		"url": "/2014/05/21/recap-may-21st-2014/",
		"tags": ["recap"],
		"date": "May 21<span>st</span>, 2014",
		"ts": "1400713200",
		"summary": "Sponsor: Dream Hosting (May 15th) Thanks to this week&rsquo;s sponsor, Dream Hosting, for helping to support brettterpstra.com. Great support, 99.9% uptime and one-click installs make it a solid and affordable web hosting choice. tmux even easier: tm with fuzzy completion (May 15th) Last week I introduced a shell script that would automatically connect to/create tmux sessions by name. This script adds fuzzy tab-completion for the easiest command line tmux experience! iThoughts updated for extra awesome (and iOS 7) (May 20th) iThoughts for iOS updated this week with a Universal release, an iOS 7 redesign and more new features than you can shake a stick at. Check it out. The new DuckDuckGo (May 21st) My favorite search engine pushed their new look and features live this week. Take it for a spin and see why you don&rsquo;t have to give your info to Google. Systematic 97 with Phillip Broughton (May 21st) This was an intensely interesting episode of Systematic. Be sure to catch it! Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["command","duckduckgo","google","interface","broughton","check","dream","duckduckgo","google","great","hosting","phillip","recaps","sponsor","systematic","thanks","universal","affordable","automatically","awesome","brettterpstra","catch","choice","click","command","connect","create","curated","digest","easier","easiest","engine","episode","experience","extra","favorite","features","format","fuzzy","helping","hosting","ithoughts","installs","intensely","interest","interesting","introduced","posts","pushed","quick","redesign","release","rsquo","script","search","sessions","shake","shell","solid","specifically","sponsor","stick","subscribe","summary","support","updated","updates","uptime","weekly"]
	},{
		"title": "Systematic 97 with Phillip Broughton",
		"url": "/2014/05/21/systematic-97-with-phillip-broughton/",
		"tags": ["podcast","systematic"],
		"date": "May 21<span>st</span>, 2014",
		"ts": "1400691600",
		"summary": "This week&rsquo;s episode was with the lively Phillip Broughton, the health physicist from UC Berkely who brought us Black Blood of the Earth, the cold-pressed and ultra-caffeinated coffee mentioned on a couple of previous episodes. Phillip&rsquo;s stories of bartending at the South Pole, the hazards of working with grad students in radioactive conditions and his own fascinating interests made for a very interesting conversation which, at many points, I wished we&rsquo;d had more time for. Don&rsquo;t be put off by the language warning on the episode. I think there are all of two swear words in the whole episode, and neither are words you wouldn&rsquo;t hear while waiting in line at the grocery store. At least at my grocery store",
		"keywords": ["berkeley","black","blood","broughton","california","earth","health","phillip","physics","south","university","berkely","black","blood","broughton","check","earth","phillip","south","bartending","brought","caffeinated","coffee","conditions","conversation","couple","episode","episodes","fascinating","grocery","hazards","health","interesting","interests","language","lively","mentioned","neither","physicist","points","pressed","radioactive","rsquo","store","stories","students","swear","think","ultra","waiting","warning","while","whole","wished","words","working","wouldn"]
	},{
		"title": "The new DuckDuckGo",
		"url": "/2014/05/21/the-new-duckduckgo/",
		"tags": ["privacy","search"],
		"date": "May 21<span>st</span>, 2014",
		"ts": "1400680140",
		"summary": "DuckDuckGo, my search engine of choice, has updated. Same great privacy, same great instant answers, same great keyboard navigation, but all new presentation and smarter features. The update brings a new look on all devices, powerful search suggestions that don&rsquo;t source from your own search history, multiple results for ambiguous search terms&hellip; it&rsquo;s quite a list. You should really just go try it. The instant weather forecasts are great, too, and sourced from Forecast.io. DuckDuckGo&rsquo;s search continues to improve, and I would say I get my required answer on the first page 95% of the time. I can always resort to \"!g search term,\" which launches a private, encrypted Google search for my terms, but that just becomes an extension of DuckDuckGo to me. I also do instant GitHub searches (!gh) and MacUpdate searches (!mu). These are \"bang\" searches, and there are tons of them. Below are highlights of a few of my favorite improvements, and reasons why I continue to choose DuckDuckGo over Google search. The search suggestion feature is outstanding. If you use Google, you&rsquo;re already familiar with the concept. If you&rsquo;re a DuckDuckGo user, you might not have realized how much you missed it! The instant answers have always meant that you get what is often the spot-on correct answer for your query not just as the first link, but as a box with all of most important details, be it a definition, a code sample, movie synopsis or more. The presentation is improved and even more question types get instant answers now. My favorite part of the redesign is that image and video search results are available on the main search page. All of the !bang searches still work (I used to do most image searches with !img, which takes you to a Google Image search without passing any referrer or personal info), but haven&rsquo;t found the need to with the new design. If you&rsquo;re not a DuckDuckGo user yet, go give it a whirl. What you won&rsquo;t see is all of the data collection and privacy concerns you get every time you use Google. You might just find yourself making it your default search engine. The Help Section offers plenty of ways to do that",
		"keywords": ["duckduckgo","engine","github","google","image","macupdate","search","video","answers","below","duckduckgo","forecast","github","google","image","instant","macupdate","search","section","suggestions","video","ambiguous","answer","answers","available","becomes","brings","choice","choose","collection","concept","concerns","continue","continues","default","definition","design","details","devices","encrypted","engine","extension","familiar","favorite","feature","features","first","forecasts","found","great","haven","hellip","highlights","history","image","important","improve","improved","improvements","instant","keyboard","launches","making","meant","missed","movie","multiple","navigation","offers","often","passing","personal","plenty","powerful","presentation","privacy","private","query","realized","reasons","redesign","referrer","required","resort","results","rsquo","sample","search","searches","smarter","source","sourced","suggestion","suggestions","synopsis","takes","terms","types","updated","video","weather","whirl"]
	},{
		"title": "iThoughts updated for extra awesome (and iOS 7)",
		"url": "/2014/05/20/ithoughts-updated-for-extra-awesome-and-ios-7/",
		"tags": ["iphone","mindmapping"],
		"date": "May 20<span>th</span>, 2014",
		"ts": "1400601840",
		"summary": "iThoughts , the most powerful mind mapping app on iOS, has been updated (well, re-released, really) with a bevy of new features. It&rsquo;s now a universal app (both iPhone and iPad), and requires a new purchase. At the $2 US intro price, though, there&rsquo;s really no reason for anyone to not grab it. iThoughts&rsquo; UI has been fully updated to the iOS7 design philosophy. It&rsquo;s beautiful and easy to use. Creating relationships between nodes is improved, and you can easily drag the actual curve and reattach end points to other nodes. The canvas is now \"infinite\" and grows to accomodate your map, and you can set default colors for callouts. That combination makes reviewing, expanding and annotating your map better than ever. One of the biggest \"under the hood\" improvements is extensive support for Bluetooth keyboards. That&rsquo;s always been the biggest sticking point for me with iOS mind mapping in general: I work and brainstorm more fluidly when I&rsquo;m using a keyboard and an app that has great keyboard shortcuts. It&rsquo;s there now. A more reliable sync structure means your maps are available on all of your devices (including iThoughtsX on your Mac). Combined with the amazing number of export options that iThoughts provides, you can turn your brainstorms into almost anything you need. It can even export a multi-page PDF for printing and combining into a poster, or a website with clickable images and attachments. The website export is pretty cool, too; I had a lot of fun playing with that during the beta. Another thing I had fun testing is Markdown import. Turn your Markdown outlines directly into mind maps on iOS with no OPML fiddling at all. It also imports Mindnode Speaking of websites, the \"Research\" feature can now save your reference web pages as webarchive files and store them for offline access. That&rsquo;s good for productivity and peace of mind. As I mentioned, the new iThoughts is available for just $1.99 US right now, but that price is only for a little while. Even if you&rsquo;ve never tried mind mapping, this is a great time to grab a powerful tool and learn how to incorprate it into your workflow. I can&rsquo;t promise mind mapping is going to work for you and the way you think, but I can assure you this is one of the most frugal way to find out! For information on migrating and caveats, see this page on the toketaWare website",
		"keywords": ["bluetooth","ithoughts","markdown","mindnode","another","bluetooth","creating","markdown","mindnode","research","speaking","access","accomodate","almost","amazing","annotating","anyone","assure","attachments","available","beautiful","between","biggest","brainstorm","brainstorms","callouts","canvas","caveats","clickable","colors","combination","combining","curve","default","design","devices","directly","easily","expanding","export","extensive","feature","features","fiddling","files","fluidly","frugal","fully","general","going","great","grows","iphone","ithoughts","ithoughtsx","images","import","imports","improved","improvements","including","incorprate","infinite","information","intro","keyboard","keyboards","learn","little","makes","mapping","mentioned","migrating","multi","nodes","offline","options","outlines","pages","peace","philosophy","playing","point","points","poster","powerful","price","printing","productivity","promise","provides","reattach","relationships","released","reliable","requires","reviewing","right","rsquo","shortcuts","sticking","store","structure","support","testing","think","toketaware","tried","under","universal","updated","using","webarchive","website","websites","while","workflow"]
	},{
		"title": "The Yoink giveaway winners",
		"url": "/2014/05/16/the-yoink-giveaway-winners/",
		"tags": ["giveaway","macappstore","macos"],
		"date": "May 16<span>th</span>, 2014",
		"ts": "1400263320",
		"summary": "Congratulations to the seven winners of Yoink promo codes. I hope you find it as useful as I do! For everybody else, check out Yoink on the Mac App Store",
		"keywords": ["finder","macintosh","store","yoink","aaron","congratulations","frederik","justin","kelley","kunal","lamarche","ridgewell","store","wenner","yoink","check","codes","everybody","promo","seven","useful","winners"]
	},{
		"title": "Web Excursions for May 16, 2014",
		"url": "/2014/05/16/web-excursions-for-may-16-2014/",
		"tags": ["bookmarks","markdown"],
		"date": "May 16<span>th</span>, 2014",
		"ts": "1400257200",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. App.net State of the Union I admit, I had my hopes up that a paid social network could be sustainable. I&rsquo;ll continue to support it, I have some stimulating conversations there and the feature improvements over Twitter are highly worth it for me. The Markdown Payoff Hilton Lipschitz&rsquo; answers his own question, \"Was switching to Markdown a good call?\" Markdownify Pocket items & save to Dropbox A great example of integrating Marky into your automation workflow using IFTTT. The Display Designers Have Been Waiting For I used dual 21\" monitors for years, then dual 24\", but when I got my 27\" Thunderbolt, I let go of the need for two-headed computing. This 21:9 34\" beast might make me yearn for more screen real estate once again. Queuing tasks for batch execution with Task Spooler I really want to get this working on OS X, but haven&rsquo;t had any luck yet. It&rsquo;s in homebrew, but&hellip; if anyone gets this working, I&rsquo;d love to know how. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["markdown","marky","network","social","check","designers","display","dropbox","hilton","ifttt","lipschitz","markdown","markdownify","marky","mindmeister","payoff","pocket","queuing","spooler","thunderbolt","twitter","union","waiting","admit","again","answers","anyone","automation","batch","beast","boosting","brainstorming","brought","collaborating","collaborative","computing","continue","conversations","estate","example","excursions","execution","feature","great","haven","headed","hellip","highly","homebrew","hopes","improvements","integrating","items","mapping","monitors","network","partnership","productivity","rsquo","screen","social","software","stimulating","support","sustainable","switching","tasks","using","workflow","working","worth","yearn","years"]
	},{
		"title": "tmux even easier: tm with fuzzy completion",
		"url": "/2014/05/15/tmux-even-easier-tm-with-fuzzy-completion/",
		"tags": ["terminal"],
		"date": "May 15<span>th</span>, 2014",
		"ts": "1400158800",
		"summary": "You may have seen the \"fuzzy\" Bash completion I linked to in my post yesterday. I applied the same technique to my utility for completing tmux session and window names. I find this handy because if I type part of a name thinking I&rsquo;m jumping to a session, but that session has ended, I end up creating a new session with a partial name. With completion, I can type my partial name and hit tab to be sure there will be a match before running. If you have no arguments and hit tab, it will list all sessions. Typing any part of a session name will begin matching, e.g. will expand to a session named \"jekyll,\" as will . Any part of the name is valid for matching, and it&rsquo;s case insensitive. If you have a session in the arguments already, it will begin completing window names for that session, or listing all windows if you hit tab after a space following the session name. Window names are entirely optional in . Yes, I cheated a little and defaulted to Ruby for some of the string handling, but I decided a while ago that there&rsquo;s really no crime in that. If you&rsquo;re still reading and are a tmux user, I&rsquo;ll assume you know what to do with this script. That&rsquo;s fair, right",
		"keywords": ["emulator","operating","systems","terminal","typing","window","applied","arguments","assume","because","before","begin","cheated","completing","creating","crime","decided","defaulted","ended","entirely","expand","fuzzy","handling","handy","insensitive","jekyll","jumping","linked","listing","little","match","matching","named","names","optional","partial","reading","right","rsquo","running","script","session","sessions","space","string","technique","thinking","utility","valid","while","window","windows","yesterday"]
	},{
		"title": "Sponsor: Dream Hosting",
		"url": "/2014/05/15/sponsor-dream-hosting/",
		"tags": [],
		"date": "May 15<span>th</span>, 2014",
		"ts": "1400151600",
		"summary": "Thanks to Dream Hosting for sponsoring BrettTerpstra.com this week! High end, feature-rich web hosting from Dream Hosting. Whether for a simple Wordpress blog or a highly scalable cloud server, Dream Hosting&rsquo;s service is rock-solid and super-fast! Thanks to our high-end hardware in a cloud architecture, Dream Hosting is able to consistently offer a 99.9% uptime guarantee - a must for today’s on-demand world. Customer service forms the backbone of the service with a 24/7 technical support team, who is ready and willing to help no matter how big or small the issue, and an easy-to-use client area that makes working with Dream Hosting a pleasure. Dream Hosting offers feature-rich packages at the industry&rsquo;s most competitive prices. All packages include daily backups with 6-month retention and a one-click software installation for over 300 apps, such as Wordpress, Joomla, Magento, and more. Cloudflare integration allows for global CDN delivery, in turn providing super-fast page loads no matter the location of your target audience, and search engine tools give you the ability to promote and fine-tune your site to receive maximum exposure. We cater to everyone from novice to expert. And upcoming in 2014, a brand-new, best-in-class website builder aimed at the absolute beginner, which will allow you to choose from beautiful templates that work automatically on mobile, insert your own photos and text, and customise every detail to your heart’s content. After that, add multi-device email and a domain name for the complete web presence with a professional look. Dream Hosting, the perfect choice. http://www.dream-hosting.co.uk",
		"keywords": ["computers","content","delivery","hosting","internet","joomla","magento","network","service","wordpress","brettterpstra","cloudflare","customer","dream","hosting","joomla","magento","syndicate","thanks","wordpress","ability","absolute","aimed","allow","allows","architecture","audience","automatically","backbone","backups","beautiful","beginner","blockquote","brand","brett","brettterpstra","builder","cater","choice","choose","class","click","client","cloud","competitive","consistently","content","customise","daily","delivery","demand","detail","device","domain","dream","dreamhostingsponsorimage","email","engine","everyone","expert","exposure","feature","forms","global","guarantee","hardware","heart","height","highly","hosting","https","image","industry","installation","integration","loading","loads","location","makes","maximum","media","mobile","multi","noscript","novice","offer","offers","original","packages","photos","picture","presence","prices","professional","promote","providing","ready","receive","retention","rsquo","scalable","search","server","service","simple","small","software","solid","source","sponsoring","srcset","strong","super","support","syndicateads","target","technical","templates","terpstra","title","today","tools","upcoming","uploads","uptime","website","width","willing","working","world"]
	},{
		"title": "Recap: May 14th, 2014",
		"url": "/2014/05/14/recap-may-14th-2014/",
		"tags": ["recap"],
		"date": "May 14<span>th</span>, 2014",
		"ts": "1400108400",
		"summary": "It&rsquo;s been a busy week. If you listen to Systematic, you probably know why&hellip; Sponsor: PDFpen Scan+ (May 8th) A huge thanks to Smile for their continued support. PDFpen Scan+ is an amazing iOS app that turns your mobile device into a document scanner, complete with OCR! Install SearchLink without the Terminal hassle (May 8th) SearchLink is one of my projects that I continue to find is the most useful part of my workflow (that I&rsquo;ve given away for free). It&rsquo;s now possible to install it with a double-click, with no more Terminal requirements. Bash and Dash (May 10th) If you spend time in Terminal, you should probably also be a Dash user. Connect them up! Making my tmux life easier (May 11th) A script for users to make creating and switching to sessions and windows an easy task. Watch for the \"fuzzy\" bash completion script soon! PopMaker: a PopClip extension generator (May 12th) It turns out there are a lot of PopClip users who found this as useful as I&rsquo;d hoped they would. If you&rsquo;ve ever needed a PopClip extension to search or do basic text manipulation on a selection, this little app puts the power in your hands. MultiMarkdown upgrades for Marky the Markdownifier (May 12th) I&rsquo;m really excited about the updates to Marky. Read up on the page, and then go try it out. Seriously. Giveaway: 5 codes for Yoink (May 14th) The Yoink giveaway just started today and runs until Friday. Go enter! Systematic 96 with Matthew Ward (May 14th) Another great conversation on Systematic, this one with writer Matthew Ward, who&rsquo;s also a PhD in Computational Biology. up: fuzzy navigation up a directory tree (May 14th) An update to the utility by Vigneshwaran Raveendran. Fuzzy, case-insensitive matching for jumping to any location above the current folder in Terminal. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["biology","computational","marky","matthew","multimarkdown","pdfpen","another","biology","computational","connect","friday","fuzzy","giveaway","install","making","markdownifier","marky","matthew","multimarkdown","pdfpen","popclip","popmaker","raveendran","recaps","searchlink","seriously","smile","sponsor","systematic","terminal","vigneshwaran","watch","yoink","above","amazing","basic","click","codes","continue","continued","conversation","creating","curated","device","digest","directory","document","double","easier","enter","excited","extension","folder","format","found","fuzzy","generator","giveaway","great","hands","hassle","hellip","hoped","insensitive","install","jumping","listen","little","location","manipulation","matching","mobile","navigation","needed","possible","posts","projects","quick","rsquo","scanner","script","search","selection","sessions","specifically","spend","started","subscribe","summary","support","switching","thanks","today","turns","updates","upgrades","useful","users","utility","weekly","windows","workflow","writer"]
	},{
		"title": "up: fuzzy navigation up a directory tree",
		"url": "/2014/05/14/up-fuzzy-navigation-up-a-directory-tree/",
		"tags": ["scripting","terminal"],
		"date": "May 14<span>th</span>, 2014",
		"ts": "1400097600",
		"summary": "Here&rsquo;s a (relatively) simple shell function for navigating up the tree from your current working directory. It was inspired by bd, but I got frustrated with some aspects (and the fact that it&rsquo;s not really OS X-compatible anymore). allows fuzzy matching as long as the characters are in order. So, if you&rsquo;re in and you type , you&rsquo;ll jump up to your Dropbox folder. There&rsquo;s a helper function called that you can call directly to integrate into other commands. It simply echoes out the match with no newline, so you can do things like . Mix it into other functions along with something like sentaku and have some fun. is designed to be sourced in your login profile. This is partly because I prefer funtions to scripts scattered everywhere, but primarily because scripts run in a child process and the command doesn&rsquo;t affect your current shell unless you source it with . That&rsquo;s an inconvenience. If you&rsquo;re interested in fuzzy Bash completion for , see this Gist. It will let you type (or even ) and expand it to using standard Bash completion. Just as an aside, my target directory is very often the root level of my current git repository. This alias will jump you straight to the top level folder of any git-based project (with an update from Bernd Goldschmidt): I love and , too. Anything that makes moving around the system as fast and as intuitive as possible. I often jump to Terminal from Finder, move to the folder I need and type , which I have aliased to . It&rsquo;s just faster, even with ⌘⇧G available. Have fun",
		"keywords": ["script","shell","bernd","blockquote","dropbox","finder","goldschmidt","stdin","terminal","users","acdcd","alias","aliased","allows","anymore","argument","aside","aspects","available","based","bashmarks","because","called","characters","child","class","command","commands","comment","compatible","designed","directly","directory","doesn","echoes","everywhere","expand","faster","figcaption","figure","first","folder","frustrated","function","functions","funtions","fuzzy","github","githubusercontent","helper","highlight","highlighter","https","huyng","inconvenience","inspired","integrate","interested","intuitive","language","level","local","login","makes","match","matching","moving","navigating","newline","often","parse","partly","plaintext","popclipext","popclipextensions","possible","prefer","primarily","print","process","profile","project","rcmdnk","relatively","repository","rouge","rsquo","scattered","scripts","sentaku","shell","simple","simply","source","sourced","split","standard","straight","system","target","toplevel","traverses","ttscoff","updir","using","vigneshwaranr","within","working"]
	},{
		"title": "Systematic 96 with Matthew Ward",
		"url": "/2014/05/14/systematic-96-with-matthew-ward/",
		"tags": ["podcast","systematic"],
		"date": "May 14<span>th</span>, 2014",
		"ts": "1400090400",
		"summary": "Matthew Ward writes reviews of audio listening equipment for Macworld and TechHive. He knows his stuff. What I found most interesting was his ability &mdash; despite being an \"audiophile\" &mdash; to look beyond price and find true quality in inexpensive products. I could stand to learn a thing or two about that. The conversation included some talk about his \"other\" job working in scientific writing and Computational Biology, as well as whiskey and bi-polar issues. Good times",
		"keywords": ["biology","computational","macworld","matthew","techhive","biology","check","computational","macworld","matthew","techhive","ability","audio","audiophile","beyond","conversation","episode","equipment","found","included","inexpensive","interesting","issues","knows","learn","listening","mdash","polar","price","products","quality","reviews","scientific","stand","stuff","times","whiskey","working","writes","writing"]
	},{
		"title": "Giveaway: 5 codes for Yoink",
		"url": "/2014/05/14/giveaway-5-codes-for-yoink/",
		"tags": ["appstore","giveaway","macos"],
		"date": "May 14<span>th</span>, 2014",
		"ts": "1400086800",
		"summary": "I first mentioned Yoink back in 2011, and I&rsquo;ve run it every day since. It&rsquo;s a small utility that shows up when you start dragging files and gives you a convenient shelf to collect them on until you&rsquo;re ready to drag them out into another folder or application. It&rsquo;s extremely handy. I ran one giveaway for Yoink shortly after its release, but it&rsquo;s time for more: Eternal Storms has provided 5 7 more Yoink codes to hand out. It&rsquo;s a $4.99 utility on the App Store, and worth every penny, but you can sign up below for a chance at a free copy. Open to all readers, email required, giveaway ends on Friday, May 16th at 12pm CST. Sorry, this giveaway has ended",
		"keywords": ["apple","finder","quick","store","yoink","eternal","friday","sorry","store","storms","yoink","another","below","chance","codes","collect","convenient","dragging","email","ended","files","first","folder","giveaway","gives","handy","mentioned","penny","readers","ready","release","required","rsquo","shelf","shortly","shows","since","small","utility","worth"]
	},{
		"title": "The Painless Vim giveaway winners",
		"url": "/2014/05/13/the-painless-vim-giveaway-winners/",
		"tags": ["books","giveaway"],
		"date": "May 13<span>th</span>, 2014",
		"ts": "1400014620",
		"summary": "Thanks to everyone who entered, and best of luck honing your Vim skills. If you didn&rsquo;t win a copy of Painless Vim, go buy one. It&rsquo;s an excellent way to get acquainted with a very powerful editor. It also now includes a very well-designed and quick-to-scan cheat sheet. It&rsquo;s one of the most helpful I&rsquo;ve seen",
		"keywords": ["dickson","editors","arotxa","backman","congratulations","darrin","dickson","donnelly","frank","giveaway","hanna","hanson","painless","porter","thanks","acquainted","author","cheat","copies","designed","editor","entered","everyone","excellent","experience","helpful","honing","includes","learning","lucky","powerful","quick","rsquo","sharing","sheet","skills","winners"]
	},{
		"title": "MultiMarkdown upgrades for Marky the Markdownifier",
		"url": "/2014/05/12/multimarkdown-upgrades-for-marky-the-markdownifier/",
		"tags": ["markdown","markdownifier","marky","multimarkdown"],
		"date": "May 12<span>th</span>, 2014",
		"ts": "1399921200",
		"summary": "I&rsquo;ve updated Marky the Markdownifier with a few key fixes and improvements. It&rsquo;s getting more and more traffic and has some dedicated users, so it seemed like it was about time to solve some of the more annoying issues. It still needs a usability overhaul and some kind of iOS solution, but these issues were the ones that bothered me the most. does not choke on linked headlines1 converts curly quotes (single and double) to straight quotes handles definition list markup and converts to MMD format does not indent reference link definitions properly indents list items for MultiMarkdown (4 spaces) uses quotes instead of parenthesis on title attributes in link definitions includes unicode characters instead of replacing them with ASCII equivalents doesn&rsquo;t choke on API requests without trailing slashes returns proper CORS headers and JSON formats switching between HTML preview and markdown in the web interface syncs scroll position (within reason) In the markdown preview on the website, click format links and see where they link to in a tooltip (my favorite new feature, works with mobile, too) URLS and reference links are clickable in the markdown preview Night mode2 I have a very basic parser written for converting HTML tables to MMD format, but it chokes on more complex and nested tables, so it&rsquo;s not live yet. It&rsquo;s something I would really like to have, though, so I&rsquo;ll try to wrap that up. needs an update, too&hellip; Lastly, I&rsquo;ve given the styling a small kick in the pants. It&rsquo;s not as bad as it was, but it still not great for smaller mobile screens. It&rsquo;s pretty good on iPad, but it still mostly works like the Desktop app it was built as, and lacks mobile usability. I&rsquo;ve started playing with mobile solutions. I&rsquo;ve adjusted most of the click handlers to watch for taps, and fixed up the elements of the design that Mobile Safari had the most issues with. It&rsquo;s still rough, though. There&rsquo;s no elegant way I can find to get your Markdown to your clipboard, or even programtically select text for copying in iOS 7. If anyone knows different, please let me know. The site current looks good on iPhone and especially on iPad, but doing anything other than reading the text is difficult. As an aside, there&rsquo;s an in-flux Reader-only version that uses the same back end. Feel free to play with it, but it&rsquo;s my \"playground\" and may or may not funciton&hellip;",
		"keywords": ["import","interface","languages","markup","programming","ascii","desktop","lastly","markdown","markdownifier","marky","mobile","multimarkdown","night","python","readability","reader","safari","access","adjusted","annoying","antique","anyone","aside","attributes","available","backlink","basic","because","between","bookmarklet","bookmarklets","bothered","brettterpstra","bugging","built","characters","choke","chokes","class","click","clickable","clipboard","complex","consistent","control","converting","converts","copying","curly","dedicated","definition","definitions","demand","design","different","difficult","doesn","doing","double","elegant","elements","endnotes","equivalents","especially","extend","favorite","feature","fixed","fixes","fnref","footnote","footnotes","format","formats","formatted","formatting","funciton","getting","great","handlers","handles","haven","headers","headlines","heckyesmarkdown","height","hellip","highlighter","https","iphone","image","improvements","includes","indent","indents","integrations","interface","inverted","issues","items","knows","lacks","language","ldquo","learn","linked","links","loading","looks","markdown","markdownifier","markdownrules","markup","marky","markylogo","media","mention","messy","methods","minimalism","mobile","modifying","mostly","needs","nested","noscript","noteref","options","original","overhaul","pants","parenthesis","parser","people","picture","plaintext","planned","playground","playing","position","preview","programtically","proper","properly","query","quotes","rdquo","readability","reading","reintroductions","replacing","requests","returns","reversefootnote","rewrite","rouge","rough","rsquo","screens","scroll","seemed","semantic","services","single","slashes","small","smaller","solid","solution","solutions","solve","source","spaces","speckyboy","srcset","started","straight","string","style","styling","switching","syncs","tables","through","title","tooltip","traffic","trailing","tried","unicode","updated","updates","uploads","usability","users","version","watch","website","where","width","within","works","written"]
	},{
		"title": "PopMaker: a PopClip extension generator",
		"url": "/2014/05/12/popmaker-popclip-extension-generator/",
		"tags": ["popclip","popmaker","video"],
		"date": "May 12<span>th</span>, 2014",
		"ts": "1399899600",
		"summary": "I don&rsquo;t know yet if this project is going any further, but I thought I&rsquo;d share what I&rsquo;ve been experimenting with. It occurred to me &mdash; after a couple dozen request for \"can you make a PopClip extension for this?\" &mdash; that I could probably put the power in the hands of people who aren&rsquo;t necessarily comfortable editing PLIST files. I present PopMaker. PopMaker is an OS X app for generating PopClip extensions. It&rsquo;s currently limited in scope to \"search\" extensions and \"surround\" extensions. You simply fill in the fields and hit the button to save to disk or install immediately. It even lets you import your own icons (more info below). As a usage example, I added an extension to my PopClip Extensions collection that searches a selected \"texting\" abbreviation (e.g. LOL) on textingabbreviations.ca. It took me under 15 seconds to create it and install it. It&rsquo;s ugly right now, but it works. I&rsquo;ll explain it further in a second, but here&rsquo;s a video that may or may not answer all your questions. Music based on work by Grapes, licensed under Creative Commons 3.0. Ok, on with the show. Any extension can optionally have an icon which replaces the Menu Title. Icons have certain requirements, but PopClip is actually more flexible than the documentation would lead you to believe. For the best results, though, an extension&rsquo;s icon should be a square PNG file at least 256x256 pixels in size. It should consist only of a solid black figure on a transparent background. The black areas will show up white when displayed on the PopClip bar. Like I said, PopMaker only does two things right now. If I decide to push the project any further, this will expand and ultimately include the ability to include custom scripts. Maybe. For now, you get&hellip; Search extensions can point to any URL, and you use (verbatim) anywhere in the url string to insert the text you have selected when you click the extension. The inserted text will be url escaped automatically. You can use this extension type to create local file urls, too, for handlers such as nvALT or Evernote. You can even use it to send Messages. You just have to know the url scheme. Create a Search extension by opening PopMaker, filling in the fields at the top, and choosing Search from the dropdown menu. Then simply fill in the url, substituting for the variable part. Surround extensions do just what you&rsquo;d think: surround selected text on&hellip;",
		"keywords": ["markdown","applications","author","changelog","commons","contents","create","creative","criticmarkup","donate","download","evernote","extension","extensions","finder","grapes","icons","markdown","maybe","messages","music","plist","package","popclip","popmaker","published","saving","search","store","surround","title","twitter","updated","abbreviation","ability","added","answer","anywhere","areas","arrow","automatically","background","based","basic","basics","before","believe","below","black","broader","button","capabilities","certain","characters","checkbox","checked","choose","choosing","click","collection","comfortable","comment","comments","completed","compressed","configuration","consist","corner","couple","create","curious","custom","customizable","decide","develop","directly","displayed","distribution","dozen","dropdown","edges","editing","either","escaped","example","expand","experimenting","explain","extension","extensions","field","fields","figure","files","filling","flexible","folder","gauge","general","generated","generating","going","handlers","hands","handy","hellip","helpful","icons","implicitly","import","inserted","install","interested","keyboard","knowledge","launch","licensed","limited","local","mdash","necessarily","nvalt","occurred","opening","optionally","package","pairing","palette","people","pixels","point","potential","prefix","prevents","primarily","project","questions","replaces","required","resulting","results","right","rsquo","saving","scheme","scope","scripting","scripts","search","searches","second","seconds","seeing","selected","selection","share","sharing","short","shortcuts","shown","simplistic","simply","solid","space","specify","square","string","style","substituting","suffix","surround","surrounding","switch","syntax","texting","textingabbreviations","think","thought","title","transparent","trying","tweak","types","under","unzip","usage","usefulness","variable","verbatim","version","video","whatever","white","whitespace","working","works","zipped"]
	},{
		"title": "Making my tmux life easier",
		"url": "/2014/05/11/making-my-tmux-life-easier/",
		"tags": ["scripting","terminal"],
		"date": "May 11<span>th</span>, 2014",
		"ts": "1399827600",
		"summary": "Have you heard of ? Do you ache for terminal mutiplexing and persistent shell sessions? If not, you can probably skip this post. Hang tight, I have something more generally palatable in the works. In the meantime, if you want to read up, head to the tmux homepage. I&rsquo;ve been enjoying for a while now. I was never a big user, but I&rsquo;d played with it as a basic replacement for on remote sessions. just clicked for me when I sat down to figure it out, though, and I&rsquo;ve been using it in various ways since. I&rsquo;m aware that there&rsquo;s a method to the madness behind the varying flags used when calling \"attach\" vs. \"new,\" for example, but I always get my , , and switched up. I wrote a wrapper to help me out. Because it only wraps the \"attach\" and \"new\" commands, this would generate nested sessions if run within . It&rsquo;s only really handy if you detach from your sessions regularly instead of just flying between multiple sessions/windows like a pro. I use primarily for setting up remote connections and running on remote servers, so I drop back to Terminal frequently and jump back to sessions as needed. When sourced in your or , it gives you a command that you can run with one or two arguments. The first argument is always a session name, the second can specify a window. If the session name you provide matches an existing session (partial names work), you&rsquo;ll be connected to it, and optionally to a specific window in the session if you supply that argument. The window name can be partial, too. So if I have a session named \"jekyll\" and a window called \"dev,\" I can connect to that window just by running , or just if there are no other sessions starting with \"j\" and \"dev\" was my last-used window. If multiple sessions or windows match your partial, the first one alphabetically will be selected. If no matches are found for the session name, a new session will be created and attached. The second argument can be used to name the first window upon connection. Here&rsquo;s the script, do with it what you will. (Updated 2019-12-17) Here&rsquo;s a quick snippet you can use in your bash_profile to display a \"session:window\" banner when you connect to a new window. It uses Figlet, but you can do whatever you want with the and variables. You can also split the session and window names up and use them in a PROMPT_COMMAND, but if you&rsquo;re in tmux you already have a status bar. If you use iTerm 2&rsquo;s tmux integration, all tabs&hellip;",
		"keywords": ["figlet","iterm","pseudo","terminal","window","because","command","figlet","prompt","terminal","updated","whatever","alphabetically","argument","arguments","attach","attached","aware","banner","basic","behind","between","called","calling","clicked","command","commands","connect","connected","connections","created","detach","display","enjoying","example","figure","first","flags","flying","found","generally","gives","handy","heard","homepage","iterm","integration","jekyll","madness","match","matches","meantime","method","multiple","mutiplexing","named","names","needed","nested","optionally","palatable","partial","persistent","played","pointless","primarily","profile","quick","regularly","remote","replacement","rsquo","running","script","second","selected","servers","session","sessions","setting","share","shell","since","snippet","sourced","specific","specify","split","starting","status","switched","terminal","tight","using","variables","various","varying","whatever","while","window","windows","within","works","wrapper","wraps","wrote"]
	},{
		"title": "Bash and Dash",
		"url": "/2014/05/10/bash-and-dash/",
		"tags": ["scripting","terminal"],
		"date": "May 10<span>th</span>, 2014",
		"ts": "1399733220",
		"summary": "I know, \"bash and dash\" sounds like a sadistic game for frat boys. But it rhymed and was so apropos. Here&rsquo;s a quick tip for Dash users. If you want to put Dash&rsquo;s powerful browsing and search features to use from the command line, a couple quick shell aliases will make life that much more fun. First an easy script to open any arguments as a search in Dash. (Thanks to kavu for the note about vs. ). With that combination, you can just type on the command line and have Dash open your Ruby docset, locate the FileUtils class, and search the page for . Anything that works in the Dash search field works in a url. One last quickie&hellip; I love being able to open man pages in Dash, search them, bookmark them, and have them float while I try things out in a Terminal window. Assuming you have the man page docset enabled (and your shortcut is ), you can make a quick shortcut that will let you do and pop open the man page. If you were so inclined, you could name it and just have it replace the built-in command, but that seems drastic. Note that you can start searches immediately from the command line as well: ",
		"keywords": ["script","shell","assuming","fileutils","first","terminal","thanks","aliases","apropos","arguments","bookmark","browsing","built","class","combination","command","couple","docset","drastic","enabled","features","field","float","hellip","inclined","pages","powerful","quick","quickie","replace","rhymed","rsquo","sadistic","schemes","script","search","searches","seems","shell","shortcut","sounds","users","while","window","works"]
	},{
		"title": "Giveaway: 5 copies of \"Painless Vim\"",
		"url": "/2014/05/09/giveaway-5-copies-of-painless-vim/",
		"tags": ["books","editor","giveaway"],
		"date": "May 9<span>th</span>, 2014",
		"ts": "1399640400",
		"summary": "If you&rsquo;re a text editing, Terminal surfing kind of computer user, you probably find the venerable text editor Vim to be fascinating. Either because you&rsquo;re a whiz at it and fully understand it, or because you&rsquo;re like me and have spent years listening to the cool kids talk about it. I&rsquo;ve gotten good enough with it to understand the appeal for hardcore fans, but never good enough to feel as comfortable as I do in other editors. I&rsquo;ve been through a dozen tutorials and have numerous cheat sheets, but have been looking for a really good guide to dig into. Painless Vim is one of those really good guides. It&rsquo;s written from a very human perspective by Nate Dickson , who&rsquo;s basically documented the frustrations and victories of learning Vim. To quote him: &hellip;my quasi newbie status is part of why I&rsquo;m writing this book right now. I&rsquo;ve spent the last few months combing blogs and websites, buying or borrowing books on vim and grabbing onto the arm of anyone I know who uses vim and begging them to help me fix whatever mess I&rsquo;ve most recently gotten myself into. Now that I&rsquo;m fairly comfortable, I&rsquo;d like to pass what I&rsquo;ve learned along to ease the learning curve for everyone else. The book is on Leanpub, which I love because it means once you buy a copy, you&rsquo;ll continue to get free updates for as long as the author is revising and updating, and you can offer feedback and be part of the process. Painless Vim is currently in \"beta\" status and will continue to grow and receive polish. All of the chapters are there, and the amount of useful information for getting over the initial Vim learning curve is great. So here&rsquo;s the deal. I have five codes to give away. Each code gets you access to Epub and PDF formats with free updates for the lifespan of the \"development cycle.\" Enter below with your full name and email address. The giveaway is open to everybody, so jump on in! Winners will be randomly selected on Tuesday, May 13 at 12pm CST. If you want to go ahead and get your hands on a copy (and support an independent author), Leanpub has a flexible pricing scheme. The suggested price is $14.99 or higher with a minimum of $5.99. Sorry, this giveaway has ended",
		"keywords": ["dickson","editor","editors","leanpub","publishing","dickson","either","enter","leanpub","painless","sorry","sounds","terminal","tuesday","winners","access","address","ahead","amount","anyone","appeal","author","because","begging","below","blogs","books","borrowing","buying","chapters","cheat","codes","combing","comfortable","computer","continue","curve","cycle","development","documented","dozen","editing","editor","editors","email","ended","enough","everybody","everyone","fairly","familiar","fascinating","feedback","flexible","formats","frustrations","fully","getting","giveaway","gotten","grabbing","great","guide","guides","hands","hardcore","hellip","higher","human","independent","information","initial","learned","learning","lifespan","listening","looking","myself","newbie","offer","perspective","polish","price","pricing","process","quasi","quote","randomly","receive","recently","revising","right","rsquo","scheme","selected","sheets","spent","status","suggested","support","surfing","through","tutorials","understand","updates","updating","useful","venerable","victories","websites","whatever","writing","written","years"]
	},{
		"title": "Install SearchLink without the Terminal hassle",
		"url": "/2014/05/08/install-searchlink-without-the-terminal-hassle/",
		"tags": ["searchlink","service"],
		"date": "May 8<span>th</span>, 2014",
		"ts": "1399568400",
		"summary": "I just wanted to drop a quick note to let everyone know that SearchLink can now be installed without any command line mucking around. It&rsquo;s just a matter of downloading and double-clicking to enjoy all of the SearchLink magic. Thanks to the \"Stupid JSON\" script by Mislav Marohnić I was able to embed the JSON parser directly into the Service, meaning no more required. I&rsquo;ve tested it on Ruby 1.8.7 (Lion/Mountain Lion) and 2.0 (Mavericks) and haven&rsquo;t run into any issues1. Because of the new structure of the script &mdash; and just because it&rsquo;s way smarter &mdash; it&rsquo;s highly recommended that you make use of the file for configuration instead of directly editing the script. There&rsquo;s more information on this in the documentation. Download the latest version below, and if you&rsquo;re new to SearchLink, be sure to check out the project page. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip; Aside from initial encoding errors, but that always happens and they should be fixed now.&nbsp;↩",
		"keywords": ["click","double","itunes","languages","mavericks","programming","searchlink","aside","because","changelog","donate","download","markdown","marohni","mavericks","mislav","mountain","published","searchlink","service","stupid","tuvbv&#39;","thanks","updated","background","backlink","because","below","brettterpstra","changelog","check","class","clicking","command","configuration","cover","description","directly","dlbox","donate","double","download","downloading","editing","editor","embed","encoding","endnotes","enjoy","errors","everyone","fathom","fixed","fnref","footnote","footnotes","github","gradient","happens","haven","hellip","highlighter","highly","https","information","initial","install","installed","issues","language","latest","ldquo","leaving","linear","links","magic","mdash","meaning","mislav","mucking","noteref","onclick","parser","plaintext","project","projects","published","quick","rdquo","recommended","releases","repeat","required","reversefootnote","rouge","rsquo","script","searches","searchlink","searchlinkconfig","smarter","structure","style","tested","thumbnail","title","trackgoal","ttscoff","updated","uploads","version","wanted"]
	},{
		"title": "Sponsor: PDFpen Scan+",
		"url": "/2014/05/08/sponsor-pdfpen-scan-plus/",
		"tags": [],
		"date": "May 8<span>th</span>, 2014",
		"ts": "1399546800",
		"summary": "This week, BrettTerpstra.com is sponsored by the amazing PDFpen Scan+ from Smile. Scan and OCR directly from your iPhone or iPad camera using PDFpen Scan+. Batch scanning is speedy with post-process image editing, and cropping is fast and precise. Built-in OCR technology means you get searchable text that you can copy and paste right from your scanned photo. You can share your scanned PDF &mdash; with the embedded OCR text &mdash; by email or via your favorite cloud service. PDFpen Scan+ was recently updated with a refined interface, multi-page scanning, improved OCR accuracy with overlay preview and more. The app is universal, and works on both your iPhone and your iPad. It&rsquo;s available on the App Store, and if you&rsquo;ve ever needed to turn printed pages into editable text, go check it out",
		"keywords": ["character","image","iphone","optical","pdfpen","recognition","scanner","smile","store","batch","brettterpstra","built","pdfpen","smile","store","accuracy","amazing","available","camera","check","cloud","cropping","directly","editable","editing","email","embedded","favorite","iphone","image","improved","interface","mdash","multi","needed","overlay","pages","paste","photo","precise","preview","printed","process","recently","refined","right","rsquo","scanned","scanning","searchable","service","share","speedy","sponsored","technology","universal","updated","using","works"]
	},{
		"title": "Recap: May 07th, 2014",
		"url": "/2014/05/07/recap-may-07th-2014/",
		"tags": ["recap"],
		"date": "May 7<span>th</span>, 2014",
		"ts": "1399503600",
		"summary": "Sponsor: MailMate (May 2nd) Thanks to MailMate for sponsoring BrettTerpstra.com this week. I know utilitarian, ultra-flexible, super-powerful email clients aren&rsquo;t for everyone, but if you&rsquo;ve been trying every email client that comes out and always finding fault, you should check MailMate out. spl, a CLI for Spotlight searches (May 2nd) Spotlight searches from the command line, with a graphical selection menu and the ability to specify a command to run on the selected search result. Folderize - Sync nvALT notes to nested folders (May 4th) A handy (I think) way to sort your nvALT notes into folders when you need to, with sync to get you there and back. Two-day Marked Sale! (May 7th) Don&rsquo;t miss out. Systematic 95 with Robert McGinley Myers (May 7th) A great chat about anxiety and public radio, amidst other topics. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["brettterpstra","client","email","mailmate","markdown","notational","velocity","brettterpstra","folderize","mailmate","marked","mcginley","myers","recaps","robert","sponsor","spotlight","systematic","thanks","ability","amidst","anxiety","check","client","clients","comes","command","curated","digest","email","everyone","fault","finding","flexible","folders","format","graphical","great","handy","interest","nested","notes","nvalt","posts","powerful","public","quick","radio","rsquo","search","searches","selected","selection","specifically","specify","sponsoring","subscribe","summary","super","think","topics","trying","ultra","updates","utilitarian","weekly"]
	},{
		"title": "Systematic 95 with Robert McGinley Myers",
		"url": "/2014/05/07/systematic-95-with-robert-mcginley-myers/",
		"tags": ["podcast","systematic"],
		"date": "May 7<span>th</span>, 2014",
		"ts": "1399482000",
		"summary": "This week was another fun episode of Systematic with a guest I met through the AudioDrop. Robert McGinley Myers chatted with me about anxiety, and how to conquer it. It was a great chat, and I learned a few new things. Be sure to catch Robert&rsquo;s followup post",
		"keywords": ["audiodrop","mcginley","myers","robert","studios","audiodrop","check","mcginley","myers","robert","systematic","another","anxiety","catch","chatted","conquer","episode","followup","great","guest","learned","rsquo","through"]
	},{
		"title": "Two-day Marked Sale!",
		"url": "/2014/05/07/two-day-marked-sale/",
		"tags": ["marked"],
		"date": "May 7<span>th</span>, 2014",
		"ts": "1399467600",
		"summary": "Starting right now, Marked 2 is on sale for $9.99 US (normally $11.99). This sale will only last for two days. If you&rsquo;ve been waiting to buy the latest version of Marked and just needed a nudge, now&rsquo;s the time. Go to marked2app.com Click the Buy Button Check out with PayPal or Credit Card No coupon needed, sale price will be reflected immediately You can, of course, download the trial and test it out for a week with no limitations on functionality. The secondary agenda behind this sale is to test out a new checkout system on the website, though, so it would be swell if you used the Buy Button on the site when you purchase. If you&rsquo;re holding out for the Mac App Store version, fear not. I have 90% of the issues worked out and should be starting a round of closed beta testing in the next 1-2 weeks. Prior beta testers will be contacted first and there are only going to be a few spots available, but if you think you&rsquo;d make a great test case, let me know and I&rsquo;ll add you to the candidate list",
		"keywords": ["discount","marked","software","button","check","click","credit","marked","paypal","starting","store","agenda","available","behind","candidate","checkout","closed","contacted","coupon","download","first","functionality","going","great","holding","issues","latest","limitations","marked","needed","normally","nudge","price","reflected","right","round","rsquo","secondary","spots","starting","swell","system","testers","testing","think","trial","version","waiting","website","weeks","worked"]
	},{
		"title": "Web Excursions for May 05, 2014",
		"url": "/2014/05/05/web-excursions-for-may-05-2014/",
		"tags": ["bookmarks","jquery","productivity","scripting","taskpaper","webdesign"],
		"date": "May 5<span>th</span>, 2014",
		"ts": "1399297860",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. How to (Sort of) Sync TaskPaper files with BusyCal Craig Eley has a solution for syncing TaskPaper task lists to BusyCal. I haven&rsquo;t tried it, but for those who use both apps, it looks like a good way to &mdash; at the very least &mdash; get solid one-way sync to BusyCal with a slightly rougher way of getting things synced back to TaskPaper. Marvel - Turn Sketches Into Prototypes Not the first to do it, but a really easy way to create clickable mockups using just your iPhone. Free app, Dropbox sync and export capabilities. rcmdnk/sentaku I&rsquo;ve been looking for this for a while. It&rsquo;s a great standalone bash script for providing a graphical selection menu on the command line, as used in my spl script. LiveNote is open-source The collaborative text editor LiveNote is now open source. Interested in how it works? Grab a copy on GitHub. Velocity.js This replacement for jQuery&rsquo;s claims to outperform jQuery and CSS3 animations. I haven&rsquo;t implemented it yet, but it looks promising, especially for iOS browsers. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["dropbox","github","iphone","source","taskpaper","backblaze","busycal","check","craig","dropbox","github","interested","livenote","marvel","prototypes","sketches","taskpaper","velocity","affordably","animations","backs","brought","browsers","capabilities","claims","clickable","cloud","collaborative","command","computer","create","editor","entire","especially","everything","excursions","export","files","first","getting","graphical","great","haven","iphone","implemented","jquery","lists","looking","looks","mdash","mockups","outperform","partnership","promising","providing","rcmdnk","reliably","replacement","rougher","rsquo","script","securely","selection","sentaku","slightly","solid","solution","source","standalone","synced","syncing","today","tried","using","while","works"]
	},{
		"title": "Folderize - Sync nvALT notes to nested folders",
		"url": "/2014/05/04/folderize-sync-nvalt-notes-to-nested-folders/",
		"tags": ["hazel","notes","nvalt","productivity","scripting"],
		"date": "May 4<span>th</span>, 2014",
		"ts": "1399213200",
		"summary": "This script is designed for people who want to sync a flat folder of notes (a la nvALT) to a more organized system of nested folders. It serves as a system for creating a structure that&rsquo;s easier to navigate in iOS note apps, or for separating notes that might be compiled into different books or projects. First, back up the files in your main folder. I make no guarantees and take no responsibility for lost data. To use Folderize, save this script as to disk (you can right click the link and Save). Make it executable with . A sample configuration file is generated at this location the first time you run . Run it once, and then edit to define your configuration. Folderize works off a configuration file that&rsquo;s written to your Mac user&rsquo;s home folder the first time it&rsquo;s run. The file contains paths for your \"flat\" folder, and the root folder for your nested hierarchy. Most importantly, it lets you define the prefix-to-folder-name conversion, allowing you to sync notes with simple title prefixes into more intuitively-named container folders. The prefixes, such as &lsquo;xxx&rsquo; above, denote the first word/characters of a note title that will be filed into folders. Thus, if I had a note called &lsquo;xxx Ideas for nvALT.md&rsquo;, it would be synced with the file based on the above configuration. Running after configuration will automatically set up the initial structure, creating folders for defined prefixes and syncing matching notes. Running the script directly with no arguments will simply parse all of your files in both your flat folder and your nested directory, looking for files that match any of your defined prefixes. If a version of the file in one folder has a newer modified date than its parallel version, the newer file is copied over the older one. Note that if you make changes to both files before running the script, only the changes in the most recently-edited file will be preserved. This method can be run on a schedule using or . The second method is to run with specific files as arguments. This method works well with something like Hazel (or anything that can watch both folders for file changes). Just set up a trigger that runs any time it detects a changed file. This method is more likely to prevent accidental overwrites as it will update both versions immediately when one changes. Many, many people have asked for direct folder support in nvALT (along with myriad other requests). This isn&rsquo;t&hellip;",
		"keywords": ["computer","folder","hazel","hierarchy","notational","velocity","caveats","changing","configuration","files","first","folderize","folders","hazel","hopefully","ideas","installation","modifying","notational","running","usage","velocity","above","accidental","allowing","arguments","asked","automatically","background","based","before","books","built","called","changed","changes","characters","click","codebase","common","compiled","configuration","configured","container","contains","continue","conversion","copied","copies","create","created","creating","define","defined","designed","detects","development","different","direct","directly","directory","easier","edited","everyone","executable","expect","feature","filed","files","first","folder","folders","generated","going","guarantees","happen","heard","hierarchy","ignored","importantly","impossible","incorporate","initial","intervals","intuitively","issues","knowledge","likely","location","looking","looks","lsquo","major","match","matching","meantime","method","modern","modified","myriad","named","navigate","nearly","nested","newer","notes","nvalt","older","oldest","organized","overwrite","overwrites","pairs","parallel","parse","paths","people","point","prefix","prefixes","preserved","prevent","projects","recently","requests","responsibility","rewrite","right","rsquo","running","sample","satisfy","schedule","script","scripts","second","separating","serves","setup","simple","simply","solution","specific","structure","support","synced","syncing","system","takes","tasks","title","trigger","using","valid","version","versions","watch","where","working","works","written"]
	},{
		"title": "spl, a CLI for Spotlight searches",
		"url": "/2014/05/02/spl-cli-for-spotlight/",
		"tags": ["spotlight"],
		"date": "May 2<span>nd</span>, 2014",
		"ts": "1399043340",
		"summary": "I&rsquo;ve been playing with wrappers for OS X&rsquo;s command line Spotlight tool for a while now. I&rsquo;ve gone through many permutations, including a tool that maintains \"smart folders\" by symlinking the results of a Spotlight search for the contents of a .query file in a folder. That one&rsquo;s not ready for prime time yet, but I found another (probably handier) solution. A Bash/zsh script called Sentaku provided exactly the interface I needed to make this work. This script is just a quick example of how it could be used, but it&rsquo;s already become a handy tool for me. It simply runs a spotlight query from the command line and gives you a \"graphical\" menu for selecting one of the results. You then provide a command (or just hit Enter to run on it) and it executes the result. Queries are the same as (man page), which can use interpreted syntax () or raw query strings. To use the script, unzip the download and place both files into a folder in your path (probably ). Make sure they&rsquo;re executable (). Then you can just run and get a menu of all the text files created in the last day. Select one and hit Enter and it will ask you what command to run. Enter a command (,,etc.) or just hit Enter to open in your default text editor. Like I said, this is a quick example. I&rsquo;ll probably develop it further, and if you have any ideas for it, let me know. The main script is quite simple, so feel free to play with it (or fork and send pull requests). spl v1 Download spl v1 A CLI tool for Spotlight searches Published 05/02/14. Updated 05/02/14. Changelog Donate &bull; More info&hellip",
		"keywords": ["command","interface","management","spotlight","changelog","donate","download","enter","published","queries","sentaku","spotlight","updated","another","called","command","contents","created","default","develop","download","editor","example","executable","executes","files","folder","folders","found","gives","graphical","handier","handy","hellip","ideas","including","interface","interpreted","maintains","needed","permutations","playing","prime","query","quick","ready","requests","results","rsquo","script","search","searches","selecting","simple","simply","smart","solution","spotlight","strings","symlinking","syntax","through","unzip","while","wrappers"]
	},{
		"title": "Sponsor: MailMate",
		"url": "/2014/05/02/sponsor-mailmate/",
		"tags": ["bundle","email","extension","mailmate"],
		"date": "May 2<span>nd</span>, 2014",
		"ts": "1399035600",
		"summary": "Thanks to MailMate for sponsoring BrettTerpstra.com this week. MailMate is the most powerful email client available on the Mac market. The thing that always kept me clinging to Apple&rsquo;s Mail was smart mailboxes (pseudo-mailboxes based on search criteria), but MailMate took those to a new level. I&rsquo;ve been a happy user for months now. It also has extensive and customizable keyboard navigation, and (currently experimental) \"Bundles\" that allow custom commands and integration with almost anything you can imagine. If you&rsquo;ve ever used TextMate, the bundle system is very similar and completely customizable and extensible by the user. The automation possible with \"Rules\" is also amazing. As an example, you can create a rule like this: There&rsquo;s even Markdown support for email composition, OpenPGP and S/MIME, and support for tagging. MailMate has a free 30-day trial. Also be sure to check out the screenshots and the manual to get an idea what powerful features it offers",
		"keywords": ["access","client","email","internet","mailmate","markdown","message","privacy","protocol","apple","archive","brettterpstra","bundles","mailmate","markdown","openpgp","rules","textmate","thanks","allow","almost","amazing","automation","available","based","bundle","check","client","clinging","commands","completely","composition","create","criteria","custom","customizable","email","emails","example","experimental","extensible","extensive","features","happy","imagine","integration","keyboard","level","mailbox","mailboxes","manual","market","navigation","offers","possible","powerful","pseudo","rsquo","screenshots","search","sender","similar","single","smart","sponsoring","support","system","tagging","trial"]
	},{
		"title": "Recap: Apr 30th, 2014",
		"url": "/2014/04/30/recap-apr-30th-2014/",
		"tags": ["macos","plugin","recap","service","xcode"],
		"date": "Apr 30<span>th</span>, 2014",
		"ts": "1398898800",
		"summary": "Sponsor: Backblaze (Apr 24th) Thanks to Backblaze for their gracious support of brettterpstra.com this week. If you&rsquo;re not running offsite backups, you&rsquo;re taking a big risk. Check out Backblaze for $5/month! Thinking in the shell (Apr 24th) Some ideas for extrapolating the semantic philosophy of my recent project. My favorite Xcode plugins (Apr 28th) A collection of the most awesome Xcode plugins I&rsquo;ve found recently. Systematic 94 with David Chartier (Apr 29th) This was a great episode, and David is worth getting to know. Bitlyize link shortening OS X Service (Apr 30th) An OS X service for shortening links, including the ability to shorten all links found in a selected block of text. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["backblaze","brettterpstra","chartier","david","iphone","twitter","backblaze","bitlyize","chartier","check","david","recaps","service","sponsor","systematic","thanks","thinking","xcode","ability","awesome","backups","block","brettterpstra","collection","curated","digest","episode","extrapolating","favorite","format","found","getting","gracious","great","ideas","including","interest","links","offsite","philosophy","plugins","posts","project","quick","recent","recently","rsquo","running","selected","semantic","service","shell","shorten","shortening","specifically","subscribe","summary","support","taking","updates","weekly","worth"]
	},{
		"title": "Bitlyize link shortening OS X Service",
		"url": "/2014/04/30/bitlyize-link-shortening-service/",
		"tags": ["productivity","service"],
		"date": "Apr 30<span>th</span>, 2014",
		"ts": "1398864000",
		"summary": "I know that most major social services automatically shorten URLs for you now, but there are still times I personally need to create a short url, often for the purpose of preserving query strings when submitting to various services. This is the OS X System Service I use to quickly create short urls. It will scan selected text and shorten any url it finds. Additionally, if you configure an iTunes affiliate string, it will intelligently append it to any itunes.apple.com links prior to shortening. The only configuration required is a Bitly API key and username1. If you have a bit.ly account set up, you can find this on your advanced settings page under \"Legacy API Key.\" Open the Service in Automator (you can just double click it to install and/or open it) and you&rsquo;ll see the configuration section at the top of the script action. You can also add a Bit.ly custom domain if you have one set up, and clear out or customize the iTunes affiliate link info (mine is in there by default as an example). Once configured, just select a url or any text containing one or more long urls, right click and choose \"Bitlyize\" from the contextual menu. Bitlyize Service v2.0.0 Download Bitlyize Service v2.0.0 An OS X Service for quickly creating bit.ly short urls Published 04/30/14. Updated 12/24/23. Changelog Donate &bull; More info&hellip; Thanks to bachya for catching my earlier mistake on this and updating the script.&nbsp;↩",
		"keywords": ["bitly","interface","itunes","locator","programming","resource","shortening","additionally","automator","bitly","bitlyize","changelog","clipboard","donate","download","legacy","published","service","system","tuvbv&#39;","thanks","updated","account","action","advanced","affiliate","append","apple","automatically","bachya","background","backlink","bitly","bitlyicon","bitlyize","bitlypostimage","brettterpstra","catching","changelog","choose","class","clear","click","clipboard","command","comment","configuration","configure","configured","containing","contextual","corrected","cover","create","creating","custom","customize","default","description","dlbox","domain","donate","double","download","downloads","earlier","endnotes","example","fathom","fields","finds","fnref","footnote","footnotes","gradient","height","hellip","https","itunes","image","includes","information","install","intelligently","itunes","ldquo","linear","links","loading","major","media","mistake","noscript","noteref","often","onclick","original","output","personally","picture","preserving","published","query","quickly","rdquo","repeat","required","results","reversefootnote","right","rsquo","script","section","selected","service","services","settings","short","shorten","shortening","showing","social","source","srcset","string","strings","strong","style","submitting","times","title","trackgoal","under","uneditable","updated","updating","uploads","username","various","width"]
	},{
		"title": "Systematic 94 with David Chartier",
		"url": "/2014/04/29/systematic-94-with-david-chartier/",
		"tags": ["podcast","systematic"],
		"date": "Apr 29<span>th</span>, 2014",
		"ts": "1398797400",
		"summary": "David Chartier joined me this week on Systematic to talk about blue icons, dealing with work overload and more. It was a great conversation with someone I&rsquo;ve known for years but haven&rsquo;t talked to nearly enough. Don&rsquo;t forget, I&rsquo;m always interested in hearing from potential guests. Just record a 2-5 minute intro and upload it to the AudioDrop. I might not get back to you immediately, but I&rsquo;m keeping a growing catalog of interesting people and enjoying having them on Systematic regularly",
		"keywords": ["apple","audiodrop","chartier","david","iphone","studios","systematic","audiodrop","chartier","check","david","systematic","catalog","conversation","dealing","enjoying","enough","episode","forget","great","growing","guests","haven","having","hearing","icons","interested","interesting","intro","joined","keeping","minute","nearly","overload","people","potential","record","regularly","rsquo","talked","upload","years"]
	},{
		"title": "Web Excursions for April 29, 2014",
		"url": "/2014/04/29/web-excursions-for-april-29-2014/",
		"tags": ["bookmarks","macos","ulysses"],
		"date": "Apr 29<span>th</span>, 2014",
		"ts": "1398786840",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Introducing Clear with Reminders Great news for Clear users. Add reminders to any task in your Clear lists, including support in the Mac version! Ulysses III 1.2 just hit the Mac App Store! If you&rsquo;re a Ulysses III user, there&rsquo;s some exciting stuff in here, including the new Style Exchange for sharing custom themes. A full changelog is available here. Cakebrew If you use homebrew (brew) to install utilities, this is a great little UI for installing, updating and managing your collection. Send text, files from Mac to iOS via Messages This seems painfully obvious, but I hadn&rsquo;t considered it. Sending a URL, text snippet or image to your iPhone doesn&rsquo;t require any special apps&hellip; Quip API Did you know Quip has an API? Combined with Marky, that means you can import and export Markdown documents&hellip; fun to be had",
		"keywords": ["apple","interface","iphone","markdown","programming","store","ulysses","cakebrew","cleanmymac","clear","exchange","great","introducing","markdown","marky","messages","reminders","sending","store","style","ulysses","available","brought","changelog","collection","considered","custom","documents","doesn","exciting","excursions","export","files","great","hellip","homebrew","iphone","image","import","including","install","installing","lists","little","managing","obvious","painfully","partnership","reminders","rsquo","seems","sharing","snippet","special","speed","stuff","support","themes","tools","updating","users","utilities","version"]
	},{
		"title": "My favorite Xcode plugins",
		"url": "/2014/04/28/my-favorite-xcode-plugins/",
		"tags": ["editor","programming","xcode"],
		"date": "Apr 28<span>th</span>, 2014",
		"ts": "1398699900",
		"summary": "This post is for the Mac coders, and won&rsquo;t be of much interest to those not using Xcode for development. If you are, however, and haven&rsquo;t explored some of the available plugins, this might be enlightening. Or frustrating if you already know all of this, but you can&rsquo;t please everyone. The Xcode IDE has some pretty awesome tools for navigation, refactoring, alignment and more. There are some great plugins for extending and improving that functionality, though, no matter kind of development you use Xcode for. These are a few of my current favorites for Xcode 5+. This post isn&rsquo;t about my favorite themes, which is obviously a very personal choice, but I will mention that when I&rsquo;m not using a custom version of Twilight, I love Spacedust. First, do yourself a favor and install Alcatraz. It&rsquo;s a package manager that gives you one-click access to themes, plugins and templates. You just bring up \"Package Manager\" from the Window menu in Xcode (or ⌘⇧9), browse available items and click the icon to the left of them to install. On the right you can click the arrow to go to the homepage for the theme, plugin or template and read more about it. All of the packages listed below are available through Alcatraz. tyeen/BlockJump Quick navigation between methods in Objective-C code with Control-]/[. insanehunter/XCode4beginningofline I&rsquo;ve become overly accustomed to Sublime Text&rsquo;s ability to make Command-&larr; jump to the first character of the line, rather than all the way to the left margin. This does exactly that, and repeating the keystroke will provide the default behavior. fortinmike/XcodeBoost Provides Paste Lines (with or without reindent), Regex Match Highlighting, Copy Method Declarations, Method Definition and Signature Selection and Symbol Highlighting. My favorite right now is \"Copy Method Declarations,\" which lets you select methods in your file and paste their declarations into your header file automatically. travisjeffery/ClangFormat-Xcode Format and indent code using clang-format. Operates on a selection or the entire current file. qfish/XAlign Another great plugin for tidying up your code. Select text and have it align equal signs, property or definition groups. FuzzyAutocomplete/FuzzyAutocompletePlugin Adds \"fuzzy\" string matching to Xcodes autocomplete, meaning your misspellings or short versions will still bring up method and string completions. ksuther/KSImageNamed-Xcode&hellip;",
		"keywords": ["alcatraz","apple","developer","management","package","source","sublime","system","xcode","alcatraz","another","apple","autocomplete","automatically","bbudebuggertuckaway","blockjump","clangformat","command","control","declarations","definition","developer","digger","fixme","first","format","formatting","fuzzyautocomplete","fuzzyautocompleteplugin","generally","hostringsense","highlighting","imagenamed","ksimagenamed","manager","managin","match","method","navigation","operates","organizer","package","paste","pattern","plugin","provides","quick","regex","selection","signature","spacedust","sublime","symbol","twilight","window","xalign","xcode","xtodo","xcode","xcodeboost","xcodes","ability","access","accustomed","alcatraz","align","alignment","apple","arrow","assets","assign","autocomplete","automatically","available","awesome","based","beginning","behavior","below","between","brettterpstra","bring","browse","brunodecarvalho","built","character","choice","clang","class","click","coders","comments","completions","console","custom","debug","declarations","default","definition","development","digger","docsets","editor","enlightening","entire","escaped","escaping","everyone","explored","extending","favor","favorite","favorites","first","format","formatting","fortinmike","frustrating","fully","functionality","fuzzy","gathering","generally","github","gives","great","groups","handy","haven","header","height","highlighter","holtwick","homepage","however","https","ignoring","image","improvement","improving","including","indent","insanehunter","install","interest","items","itunes","keystroke","ksuther","language","ldquo","listed","listing","literal","loading","manager","managin","margin","matching","meaning","media","mention","method","methods","mhallendal","misspellings","navigation","neonichu","newlines","noscript","original","overly","overrides","package","packages","paste","pattern","personal","picture","plaintext","plugin","plugins","popup","project","property","qfish","quickly","rather","rdquo","refactoring","reindent","repeating","replace","required","right","rouge","rsquo","selection","short","shortcut","signs","source","spacedust","srcset","string","strong","system","template","templates"]
	},{
		"title": "Thinking in the shell",
		"url": "/2014/04/24/thinking-in-the-shell/",
		"tags": ["doing","productivity","terminal"],
		"date": "Apr 24<span>th</span>, 2014",
		"ts": "1398353940",
		"summary": "My project has been a great tool for me, and it&rsquo;s evolved into a fairly complete time tracking system of sorts. Using the , , and commands, you can include time intervals for your entries and see them with in most and variations. I&rsquo;ll need to do a whole post on that to explain it properly, but I wanted to mention something different today. Using shell aliases, you can actually expand to do a lot more. For example, I have an alias called in my which adds random ideas I come up with to an \"Ideas\" section of my doing file and tags them automatically: You can also set up custom views for these lists in , perhaps omitting the date or handling notes differently, and call it with . You could also add the switch to the alias to always open up an editor so you can add notes to any idea. You get the idea. There&rsquo;s also a flag which allows you to specify a different file for the command, so if you want to separate these contexts completely, you can. I like keeping them in one file, in their own section, and then just using (to view a single section) or (to view all tagged items). You can alias things like \"playing,\" \"planning,\" \"reading,\" or even reminders like \"buy,\" \"read,\" or \"remember.\" It allows for fairly natural commands that are intuitive and easy to remember, without bothering with the extra flags and switches that would always be the same. It&rsquo;s just a handy trick I figured most people hadn&rsquo;t considered. If you spend time on the command line and are prone to forgetting what you&rsquo;ve been up to, check out ",
		"keywords": ["command","interface","linux","ideas","using","alias","aliases","allows","automatically","bothering","called","check","command","commands","completely","considered","contexts","custom","different","differently","doing","editor","entries","evolved","example","expand","explain","extra","fairly","figured","flags","forgetting","gives","great","handling","handy","ideas","intervals","intuitive","items","keeping","lists","mention","natural","notes","omitting","people","perhaps","planning","playing","project","prone","properly","random","reading","remember","reminders","rsquo","running","section","separate","shell","single","sorts","specify","spend","switch","switches","system","tagged","today","tracking","trick","using","variations","views","wanted","whole"]
	},{
		"title": "Sponsor: Backblaze",
		"url": "/2014/04/24/sponsor-backblaze/",
		"tags": [],
		"date": "Apr 24<span>th</span>, 2014",
		"ts": "1398337200",
		"summary": "A big thanks to Backblaze for sponsoring BrettTerpstra.com this week. 50% of computer users lose data each year. Protect yourself from data loss. Back up all your data with Backblaze online backup. It&rsquo;s unlimited, unthrottled, uncomplicated, and inexpensive at just $5/month. Backblaze backs up your music, movies, photos, and whatever you&rsquo;re working on or editing for just $5/month. Backblaze continuously and securely backs up all the data on your computer and external hard drives, plus it&rsquo;s native on the Mac and PC. Accessing and restoring files is easy. Quickly download and share files with the iPhone app. Need to restore all of your data? Use any web browser to download it or have Backblaze FedEx you a flash key or USB hard drive. Whether it&rsquo;s a broken hard drive, lost external, or a stolen computer, data loss happens all the time. For less than a cup of coffee, just $5/month, Backblaze can back up all the data on your computer. It’s easy. Stop putting it off. Start your free trial, and get your backup started today ",
		"keywords": ["backblaze","backup","drive","flash","accessing","backblaze","brettterpstra","fedex","protect","quickly","backblaze","backs","backup","brettterpstra","broken","browser","class","coffee","computer","continuously","download","drive","drives","editing","external","files","flash","happens","height","https","iphone","image","inexpensive","loading","media","movies","music","native","noscript","online","original","photos","picture","putting","restore","restoring","rsquo","securely","share","source","sponsor","sponsoring","srcset","started","stolen","thanks","title","today","trial","uncomplicated","unlimited","unthrottled","uploads","users","whatever","width","working"]
	},{
		"title": "Recap: Apr 23rd, 2014",
		"url": "/2014/04/23/recap-apr-23rd-2014/",
		"tags": ["recap"],
		"date": "Apr 23<span>rd</span>, 2014",
		"ts": "1398294000",
		"summary": "Sponsor: MultiMarkdown Composer (Apr 17th) Thanks to my favorite Markdown editor for sponsoring BrettTerpstra.com this week. If you&rsquo;re interested in sponsorship, see here for more info. Moviedo, your todo list for movies (Apr 22nd) A great app for tracking movies you want to see or collecting movies in any kind of list. Systematic 93 with Alex Enkerli (Apr 22nd) This was a great chat with ethnographer Alex Enkerli. Check it out. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["apple","enkerli","markdown","multimarkdown","store","twitter","brettterpstra","check","composer","enkerli","markdown","moviedo","multimarkdown","recaps","sponsor","systematic","thanks","collecting","curated","digest","editor","ethnographer","favorite","format","great","interest","interested","movies","posts","quick","rsquo","specifically","sponsoring","sponsorship","subscribe","summary","tracking","updates","weekly"]
	},{
		"title": "Web Excursions for April 23, 2014",
		"url": "/2014/04/23/web-excursions-for-april-23-2014/",
		"tags": ["bookmarks"],
		"date": "Apr 23<span>rd</span>, 2014",
		"ts": "1398262920",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. AppleScript to close iCal Alerts I have been meaning to figure this out. When you get a slew of notifications in OS X 10.8+, you have to dismiss them one at a time by clicking \"Close.\" I miss Growl&rsquo;s Option-click-dismiss-all, but this solves the problem in most cases (some notifications refuse to be dismissed for me, and others take multiple executions of the script). Add a hotkey with FastScripts or run it from a launcher for instant notification clearing. Photo Geotag Tools Great script from Evan Lovely that lets you run and open Google Maps to the location the photo was taken (assuming it has location data). Also available as an Alfred workflow. Find out what&rsquo;s keeping your Mac awake Good tip for those annoying times when your Mac just won&rsquo;t sleep and you can&rsquo;t figure out why. Jeet Grid System A Sass grid system for web designers which allows for more \"human\" syntax and less nesting of elements. Towards a Better App Store A well-considered list of actionable items for improving Apple&rsquo;s App Store. Via MacStories",
		"keywords": ["apple","applescript","fastscripts","google","growl","store","alerts","alfred","apple","applescript","check","close","fastscripts","geotag","google","great","growl","lovely","macstories","photo","setapp","store","system","tools","towards","access","actionable","allows","annoying","assuming","available","awake","brought","clearing","click","clicking","close","considered","designers","dismiss","dismissed","elements","excursions","executions","figure","hotkey","human","hundreds","improving","instant","items","keeping","launcher","location","meaning","monthly","multiple","nesting","notification","notifications","others","partnership","photo","problem","refuse","rsquo","script","sleep","solves","subscription","syntax","system","taken","times","today","workflow"]
	},{
		"title": "Systematic 93 with Alex Enkerli",
		"url": "/2014/04/22/systematic-93-with-alex-enkerli/",
		"tags": ["ethnography","podcast","systematic"],
		"date": "Apr 22<span>nd</span>, 2014",
		"ts": "1398201840",
		"summary": "I didn&rsquo;t know what ethnography was until I chatted with Alex Enkerli on this week&rsquo;s episode of Systematic. It&rsquo;s a topic I now find fascinating, and one that would have served me well when I was more focused on UX design. We talk about technology appropriation, understanding users and the fact that users innovate products, and not vice versa. Thanks to Alex for taking the time. Check out the episode at 5by5! I&rsquo;m still working my way through all of the great submissions to the Audiodrop, but don&rsquo;t forget that if you have an interesting job or pursuit that you think is changing things for people around you, I&rsquo;d love to hear from you",
		"keywords": ["studios","systematic","twitter","audiodrop","check","enkerli","systematic","thanks","appropriation","changing","chatted","design","episode","ethnography","fascinating","focused","forget","great","innovate","interesting","people","products","pursuit","rsquo","served","submissions","taking","technology","think","through","topic","understanding","users","versa","working"]
	},{
		"title": "Moviedo, your todo list for movies",
		"url": "/2014/04/22/moviedo-your-todo-list-for-movies/",
		"tags": ["appreview","iphone","movies"],
		"date": "Apr 22<span>nd</span>, 2014",
		"ts": "1398179820",
		"summary": "I got an advance preview of the app Moviedo and I&rsquo;ve been loving it. It was officially released today. If you love movies and keep lists of movies to watch, movies you&rsquo;ve loved or any other collection of movies, this app is for you. Moviedo sources from RottenTomatoes and iTunes and provides you a list of hot movies, as well as a search function that hasn&rsquo;t failed me yet. From the main feed you can find synopses, ratings, reviews, links to trailers on YouTube and iTunes, and more. Then, you can create iCloud-synced lists and add any movie you find to any of your lists. \"To watch,\" \"Wedding movies,\" \"Brutal documentaries&hellip;\" whatever kind of collection you need. Tapping a movie in a list gives you all the same information you had before, which helps people like me remember why they added a movie to that list to begin with. Movies in lists can be removed/checked off as you watch them (or decide that maybe it only looked good in certain impaired states). You can quickly see if a movie is available on iTunes or Netflix, which is great for those of us who only stream movies these days. If you&rsquo;re like my wife and I and spend a lot of time watching trailers of upcoming movies on your Apple TV, you can also get alerts when movies come out in theaters or become available to rent. It&rsquo;s a very flexible database application, specifically geared to movies and with a lot of features to back that up. It doesn&rsquo;t try to be any more than that, though. It&rsquo;s everything I want in a movie listing app, and nothing I don&rsquo;t need. Moviedo is currently free on the iTunes App Store. If you like movies, I highly recommend checking it out",
		"keywords": ["apple","icloud","itunes","netflix","rottentomatoes","store","youtube","apple","brutal","moviedo","movies","netflix","rottentomatoes","store","tapping","wedding","youtube","added","alerts","available","before","begin","certain","checked","checking","collection","create","database","decide","documentaries","doesn","everything","failed","features","flexible","function","geared","gives","great","hellip","helps","highly","icloud","itunes","impaired","information","links","listing","lists","looked","loved","loving","maybe","movie","movies","nothing","officially","people","preview","provides","quickly","ratings","recommend","released","remember","removed","reviews","rsquo","search","sources","specifically","spend","states","stream","synced","synopses","theaters","today","trailers","upcoming","watch","watching","whatever"]
	},{
		"title": "It sounds unflattering, but I'm still kind of flattered",
		"url": "/2014/04/18/it-sounds-unflattering/",
		"tags": ["marked","personal"],
		"date": "Apr 18<span>th</span>, 2014",
		"ts": "1397838600",
		"summary": "At one point, multiple sources say, Duplan considered installing a motion detector system on his desk, so he could wave his hand rather than call out to his assistant to let her know he needed something. A source close to the company denies this. Me? Actually, it really does, except I set up the system so that my wife can summon me from the basement without yelling across floors. It&rsquo;s kind of the opposite, really. Like he&rsquo;s a miscreant doppelgänger. So there, Weatherhead. I took your remark out of context and produced a retort incorporating several multi-syllable words and some German. I think I&rsquo;m procrastinating on stuff I need to do today&hellip; As a random aside, you can still get Marked 2 for 25% off at MacUpdate Promo. The deal runs for two more days. I&rsquo;m close (still) to having the App Store version ready if you prefer to wait, but I keep running into new and unexpected issues with the sandboxing. I&rsquo;ve received some generous help from the likes of Fletcher Penney, Daniel Jalkut, and others to whom I am grateful. I like the Mac developer community. Huh, that went from lighthearted pseudo-defensiveness to an ad spiel. I see what I did there",
		"keywords": ["clinkle","macupdate","store","brett","clinkle","daniel","duplan","fletcher","german","jalkut","macdrifter","macupdate","marked","penney","promo","store","terpstra","weatherhead","across","aside","assistant","basement","blockquote","clinkle","close","community","company","considered","context","deals","defensiveness","denies","detector","developer","doppelg","except","floors","generous","grateful","having","hellip","https","inside","installing","issues","lighthearted","likes","macdrifter","macupdate","miscreant","motion","multi","multimarkdown","multiple","needed","opposite","others","point","prefer","procrastinating","produced","pseudo","random","rather","ready","received","remark","retort","rsquo","running","sandboxing","several","sounds","source","sources","spiel","strong","stuff","summon","sweater","syllable","system","think","today","totally","unexpected","version","words","yelling"]
	},{
		"title": "The Fantastical 2 for iPad winners!",
		"url": "/2014/04/17/the-fantastical-2-for-ipad-winners/",
		"tags": ["appstore","giveaway"],
		"date": "Apr 17<span>th</span>, 2014",
		"ts": "1397758740",
		"summary": "Congratulations! If you didn&rsquo;t get an email from me already, let me know. If you missed out, you can still get the introductory price ($9.99US) on Fantastical 2 for iPad on the App Store (before it goes up to $14.99)",
		"keywords": ["apple","fantastical","flexibits","store","abhimat","atkinson","calendar","congratulations","fantastical","fisher","flexibits","flexible","gautam","gongoll","gormley","martin","nicol","packer","raija","reminders","sawicki","spencer","store","thanks","apple","before","brettterpstra","calendar","class","contact","contribution","email","fantastical","flexibits","giveaway","height","https","image","introductory","itunes","loading","media","missed","noscript","original","picture","price","rsquo","searchlink","source","srcset","title","uploads","width","winners"]
	},{
		"title": "Sponsor: MultiMarkdown Composer",
		"url": "/2014/04/17/sponsor-multimarkdown-composer/",
		"tags": [],
		"date": "Apr 17<span>th</span>, 2014",
		"ts": "1397732400",
		"summary": "I&rsquo;m excited to have my favorite Markdown editor on the Mac, MultiMarkdown Composer, as this week&rsquo;s sponsor. MultiMarkdown Composer is a text editor for the Mac that&rsquo;s designed from the ground up around the MultiMarkdown syntax which makes writing and creating beautiful documents easy. It features: Smart editing to automatically format your document as you type. It marks up lists, headers, tables, character pairs, and more Live syntax-highlighting with user configurable themes (including several from myself) Live HTML preview with actual synchronized scrolling so that the editor and preview both show the same part of your document while you&rsquo;re working Support for CriticMarkup to track changes, compare different versions of a document, and collaborate with others Elastic tabstop support so your text is aligned the way you expect it to be, including tables A Table of Contents panel that helps you navigate and reorganize your document with ease. You can actually drag headers around in the panel and it moves the sections of your document! A References panel shows you labels for footnotes, citations, tables, etc., so you don&rsquo;t have to remember each in order to link to them Export to HTML, PDF, LaTeX, RTF/RTFD (with some limitations), Flat OpenDocument files, Microsoft Word (with some limitations), ePub, OPML Understands Github-style fenced code blocks and YAML headers Much, much more&hellip; MultiMarkdown Composer is developed by Fletcher T. Penney &mdash; the developer of MultiMarkdown &mdash; and uses the same codebase to ensure accuracy. MultiMarkdown is backwards compatible with the original Markdown. Learn more about MultiMarkdown Composer at multimarkdown.com",
		"keywords": ["composer","editor","latex","markdown","multimarkdown","opendocument","composer","contents","criticmarkup","elastic","export","fletcher","github","latex","learn","markdown","microsoft","multimarkdown","opendocument","penney","references","smart","support","table","understands","accuracy","automatically","backwards","beautiful","blocks","changes","character","citations","codebase","collaborate","compare","compatible","configurable","creating","designed","developed","developer","different","document","documents","editing","editor","excited","expect","favorite","features","fenced","files","footnotes","format","ground","headers","hellip","helps","highlighting","including","labels","limitations","lists","makes","marks","mdash","moves","multimarkdown","myself","navigate","original","others","pairs","panel","preview","remember","reorganize","rsquo","scrolling","sections","several","shows","sponsor","style","support","synchronized","syntax","tables","tabstop","themes","track","versions","while","working","writing"]
	},{
		"title": "Recap: Apr 16th, 2014",
		"url": "/2014/04/16/recap-apr-16th-2014/",
		"tags": ["otask","recap"],
		"date": "Apr 16<span>th</span>, 2014",
		"ts": "1397689200",
		"summary": "Sponsor: PDFpen for iPad (Apr 10th) A big thanks to Smile for their continued support of BrettTerpstra.com. If you work with PDFs (or just regularly need to digitally sign them), PDFpen is an amazing tool A Service for getting sums from selections (Apr 10th) This one got linked by LifeHacker and others. I didn&rsquo;t realize it was going to be that handy for everyone else, too. Sum: PopClip extension (Apr 11th) The above service gets even more powerful when you stick it in PopClip and add some extra parsing&hellip; complete with options for internationalization right from PopClip&rsquo;s configuration panel. Fantastical 2 for iPad, review and giveaway (Apr 12th) You have ONE MORE DAY to sign up for one of 10 free copies of Fantastical 2 for iPad. Giveaway ends at 12pm on the 17th. doing 0.2.5 (Apr 12th) A huge update to my utility for command line activity tracking. It&rsquo;s officially out of hand. SearchLink 2.1.1: blogger friendlier (Apr 13th) SearchLink got a couple of updates (and a fix) this week, and it&rsquo;s become an absolutely essential blogging tool for me. I&rsquo;ve heard other people like it, too. OTask OmniFocus CLI is back (for now) (Apr 14th) I patched up the OTask tool for adding OmniFocus tasks from the command line. It has a limited lifespan due to changing libraries, but it works for now! Systematic 92 with Ryan Irelan (Apr 15th) I had a really, really fun conversation with Ryan Irelan on Systematic this week. I hope you&rsquo;ll enjoy it as much as I did. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["irelan","omnifocus","pdfpen","popclip","smile","brettterpstra","fantastical","giveaway","irelan","lifehacker","otask","omnifocus","pdfpen","popclip","recaps","searchlink","service","smile","sponsor","systematic","above","activity","adding","amazing","blogger","blogging","changing","command","configuration","continued","conversation","copies","couple","curated","digest","digitally","doing","enjoy","essential","everyone","extension","extra","format","friendlier","getting","giveaway","going","handy","heard","hellip","interest","internationalization","libraries","lifespan","limited","linked","officially","options","others","panel","parsing","patched","people","posts","powerful","quick","realize","regularly","right","rsquo","selections","service","specifically","stick","subscribe","summary","support","tasks","thanks","tracking","updates","utility","weekly","works"]
	},{
		"title": "SearchLink fixes (2.1.2)",
		"url": "/2014/04/16/searchlink-fixes-2-dot-1-2/",
		"tags": ["search","searchlink","service"],
		"date": "Apr 16<span>th</span>, 2014",
		"ts": "1397668080",
		"summary": "I just uploaded SearchLink 2.1.2 with some fixes and improvements. Among other niggling issues, if you had Amazon affiliate information set to empty or false (i.e. disabled), it would always insert an inline link, regardless of preferences. This is fixed. I also added a preference that you can include in your file that determines whether iTunes searches have a Google fallback. If is set to and iTunes returns empty results, it will run a Google search with keywords based on your search terms and the type of iTunes search you were running (podcast, artist, software, etc.). If the result ends up being from iTunes, it will still append your affiliate link if it&rsquo;s configured. This option defaults to false, so you need to add it to the config if you want to use it. Just add a line&hellip; &hellip;to your file. More info on the SearchLink project page, and an example configuration file can be found here. SearchLink has turned out to be one of the most useful writing tools I have, and I&rsquo;d like to continue developing it as I can. If you find any bugs, please do report them. Also, if you use it as much as I do, I don&rsquo;t mind donations at all, or even a small monthly contribution. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["amazon","configuration","google","itunes","search","searching","searchlink","amazon","among","changelog","donate","download","google","markdown","published","searchlink","updated","added","affiliate","append","artist","based","config","configuration","configured","continue","contribution","defaults","determines","developing","disabled","donations","editor","empty","example","fallback","false","fixed","fixes","found","hellip","itunes","improvements","information","inline","issues","keywords","leaving","links","monthly","niggling","podcast","preference","preferences","project","regardless","report","results","returns","rsquo","running","search","searches","small","software","terms","tools","turned","uploaded","useful","writing"]
	},{
		"title": "Systematic 92 with Ryan Irelan",
		"url": "/2014/04/15/systematic-92-with-ryan-irelan/",
		"tags": ["podcast","systematic"],
		"date": "Apr 15<span>th</span>, 2014",
		"ts": "1397577000",
		"summary": "I knew I liked Ryan Irelan from watching his videos and some brief contact around the internet, but I didn&rsquo;t expect to enjoy talking to him as much as I did on Systematic episode 92. Ryan &mdash; in addition to being Vice President of Tech at Happy Cog and offering his own array of tech education videos at Mijingo &mdash; has a fascination with the story, details and craftsmanship of \"mundane\" objects, which made for an interesting start to the episode. The episode went a little long, but mostly because we started talking music. Bruce Springsteen, specifically, but we eventually broadened the discussion. It was a lot of fun. Check out the episode at 5by5. I hope you enjoy",
		"keywords": ["bruce","happy","irelan","mijingo","springsteen","studios","bruce","check","happy","irelan","mijingo","president","springsteen","systematic","array","because","brief","broadened","contact","craftsmanship","details","discussion","education","enjoy","episode","eventually","expect","fascination","interesting","internet","liked","little","mdash","mostly","mundane","music","objects","offering","rsquo","specifically","started","story","talking","videos","watching"]
	},{
		"title": "Web Excursions for April 14, 2014",
		"url": "/2014/04/14/web-excursions-for-april-14-2014/",
		"tags": ["bookmarks","scripting","tools","webdesign"],
		"date": "Apr 14<span>th</span>, 2014",
		"ts": "1397502000",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. bachya/cliutils If you&rsquo;re not looking to use an entire framework like methadone or GLI for your Ruby CLIs, here are some awesome tools to alleviate some common issues with writing command line scripts in Ruby. bomberstudios/sketch-commands I don&rsquo;t know why it took me so long to discover these, but they&rsquo;re really handy plugins if you use Sketch.app. Gridlover A really handy tool for quickly generating baseline grids and vertical rhythm. Faster Sass debugging and style iteration with source maps, Chrome Web Developer Tools and Grunt I just got this working last night and it&rsquo;s awesome. The Chrome Inspector can point me right to a line in a Sass partial&hellip; (requires bleeding edge Sass/Compass). The end of the GIF is nigh: Meet the GFY I just got into using LICEcap thanks to Zachary Kain, and animated gifs are becoming more a part of my life than they used to be. Thus, this is fascinating. Github Cheat Sheet So much goodness in here. I honestly didn&rsquo;t know about help.autocorrect and had forgotten that will open a file explorer for a repo on the GitHub website. My life is better now. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["cascading","command","format","github","graphics","grunt","interchange","interface","javascript","sheets","style","cheat","check","chrome","compass","developer","faster","github","github","gridlover","grunt","inspector","licecap","mindmeister","sheet","sketch","tools","zachary","animated","autocorrect","awesome","bachya","baseline","becoming","bleeding","bomberstudios","boosting","brainstorming","brought","cliutils","collaborating","collaborative","command","commands","common","debugging","discover","entire","excursions","explorer","fascinating","forgotten","framework","generating","goodness","grids","handy","hellip","honestly","issues","iteration","looking","mapping","methadone","night","partial","partnership","plugins","point","productivity","quickly","requires","rhythm","right","rsquo","scripts","sketch","software","source","style","thanks","tools","using","vertical","website","working","writing"]
	},{
		"title": "Five more copies of Fantastical 2 for iPad!",
		"url": "/2014/04/14/five-more-copies-of-fantastical/",
		"tags": ["appstore","giveaway"],
		"date": "Apr 14<span>th</span>, 2014",
		"ts": "1397491740",
		"summary": "The Fantastical 2 for iPad giveaway has had a great response. Flexibits noticed and decided you all deserve double the chance of winning. There are now 10 copies available. Sign up for a chance at one on the giveaway post",
		"keywords": ["apple","flexibits","store","fantastical","flexibits","available","chance","copies","decided","deserve","double","giveaway","great","noticed","response","winning"]
	},{
		"title": "OTask OmniFocus CLI is back (for now)",
		"url": "/2014/04/14/otask-omnifocus-cli-is-back-for-now/",
		"tags": ["omnifocus","otask","productivity"],
		"date": "Apr 14<span>th</span>, 2014",
		"ts": "1397480400",
		"summary": "It&rsquo;s been a nerdy weekend. Surprise. I usually use TaskPaper when working on coding projects, and I have an array of tools for working with it from the command line. Every once in a while I do need to add a task to OmniFocus (where I keep my non-coding todo lists) too, though. I used to use my script \"OTask\" for that, but it&rsquo;s been neglected since Mavericks came out and wasn&rsquo;t working for me anymore. I&rsquo;ve updated the script to work with Ruby 2.0 (which comes with Mavericks), and made the intallation much easier by packaging it up as a gem. You can just run in Terminal to get started (may require ). It&rsquo;s not super-polished, but I got it to a point where it was working smoothly for me and thought I&rsquo;d share. Note: If you use Xcode 5.1 and have trouble installing the gem, see this post for a fix. The reason the headline says \"for now\" is that this script was based on appscript, which is a dead project and its days of working on OS X are numbered. Still, it&rsquo;s working great right now on my Mavericks machine, so I&rsquo;d say it&rsquo;s got a little time left. In a nutshell, OTask lets you add OmniFocus tasks directly from the command line, and optionally include project (#proj) and context (@cont) tags that will resolve to the closest matching project and context names. Add and a due date will be set. End the task with a space and an exclamation point to flag it (). Anything in parenthesis besides a due date marker is considered to be a note and is added to the task&rsquo;s note section. The details of the tool and its syntax are on the OTask project page. It&rsquo;s been tested with OmniFocus and OmniFocus 2, which you probably don&rsquo;t have yet. It will work when we all get there, though. If you do have the beta of OmniFocus 2 installed, it will default to using that, I believe. It is for me, anyway. There&rsquo;s a Launchbar action in the project notes, and making one for Alfred would take 2 minutes. Both launchers already have OmniFocus scripts available, though, so I&rsquo;m not spending much time on that. If you&rsquo;re an I-like-the-command-line-but-I-still-need-OmniFocus kind of person, check out OTask",
		"keywords": ["alfred","group","launchbar","mavericks","omnifocus","taskpaper","alfred","launchbar","mavericks","otask","omnifocus","surprise","taskpaper","terminal","xcode","action","added","anymore","anyway","appscript","array","available","based","believe","besides","check","closest","coding","comes","command","considered","context","default","details","directly","easier","exclamation","great","headline","installed","installing","intallation","launchers","lists","little","machine","making","marker","matching","minutes","names","neglected","nerdy","notes","numbered","nutshell","optionally","packaging","parenthesis","person","point","polished","project","projects","resolve","right","rsquo","script","scripts","section","share","since","smoothly","space","spending","started","super","syntax","tasks","tested","thought","tools","trouble","updated","using","usually","weekend","where","while","working"]
	},{
		"title": "SearchLink 2.1.1: blogger friendlier",
		"url": "/2014/04/13/searchlink-2-dot-1-1-blogger-friendlier/",
		"tags": ["markdown","searchlink"],
		"date": "Apr 13<span>th</span>, 2014",
		"ts": "1397408400",
		"summary": "Version 2.1.1 of SearchLink is up, and it adds only one new feature. It&rsquo;s one I&rsquo;ve been using a lot, though, so I figured I&rsquo;d better go ahead and share it. If you&rsquo;re anything like me (no one&rsquo;s accusing you), you use reference links when blogging in Markdown. I tend to put all of the links I know I&rsquo;m going to use into a block at the top of the post, and then just use notation to reference them. Well, SearchLink&rsquo;s newish ability to work without bracket syntax is great for setting those up, but it outputs inline links that I then have to edit into reference format. No more. With the newest version, just put a colon at the end of the search string and it will output a reference link instead. That&rsquo;s it. More info on what SearchLink actually is on the project page. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["google","itunes","multimarkdown","search","changelog","donate","download","markdown","published","searchlink","updated","version","ability","accusing","ahead","block","blogging","bracket","colon","editor","feature","figured","format","going","great","hellip","inline","leaving","links","newest","newish","notation","output","outputs","project","rsquo","search","searches","setting","share","string","syntax","using","version"]
	},{
		"title": "doing 0.2.5",
		"url": "/2014/04/12/doing-0-dot-2-5/",
		"tags": ["doing","productivity"],
		"date": "Apr 12<span>th</span>, 2014",
		"ts": "1397329200",
		"summary": "Version 0.2.5 is a big update to my project. It&rsquo;s so huge that I&rsquo;m overwhelmed at the prospect of explaining it all. The project page is updated with all of the new commands and features, and you can run or to get more information on flags, switches and arguments. You can also see a summary of all the new features in the changelog. The biggest new features are HTML output, additional viewing commands (like for stand-up meetings) and new tagging, archiving and time tracking features. Also, I&rsquo;d like to thank everyone who&rsquo;s contributed pull requests on GitHub (like the command). You&rsquo;re all awesome. I&rsquo;m taking a break from this project for a while now, though. I have things I need to actually be , if you know what I mean. Install the latest release with and let me know how it goes using GitHub issues. See the project page for details",
		"keywords": ["comma","command","github","interface","separated","values","colorizing","github","install","outputting","version","archiving","arguments","awesome","based","biggest","break","changelog","command","commands","contributed","customizing","details","everyone","experience","explaining","features","files","flags","getting","information","issues","latest","meetings","output","overwhelmed","pages","posts","prettier","project","projects","prospect","release","requests","rsquo","stand","stats","summary","switches","tagging","taking","thank","totals","tracking","updated","using","various","version","viewing","while"]
	},{
		"title": "Fantastical 2 for iPad, review and giveaway",
		"url": "/2014/04/12/fantastical-2-for-ipad-review-and-giveaway/",
		"tags": ["appreview","giveaway"],
		"date": "Apr 12<span>th</span>, 2014",
		"ts": "1397314800",
		"summary": "You&rsquo;ve probably heard that Fantastical 2 for iPad is out. I&rsquo;m a bit slow writing about it, but not for lack of excitement. This is an amazing app, and even after leaving my job and having a lot less on my schedule, it&rsquo;s a joy to use. The basic idea behind Fantastical on all platforms (it&rsquo;s also available on Mac and iPhone) has always been natural-language event entry. \"Lunch with Dan at 2\" turns into a full-fledged calendar event with automatic reminders. This holds true on the iPad version, which adds full support for dictation on devices that can handle it. It even expands the parser to handle repeating events and alarms right in the syntax when you create events or reminders. What Fantastical 2 for iPad really brings to the table1 is a reconsidered layout and gesture setup that Flexibits has dubbed \"The Fantastical Dashboard.\" It&rsquo;s a multi-pane view showing a day ticker, a list view and a calendar view. You can pull down on the day ticker to expand it into a week view, which is one of the many nice, gesture-based features of the app. The Reminders support is outstanding. Your reminders are included in your calendar, but you can also swipe from the left side of the screen (or tap the checkmark at the top) and dig into your lists. Fantastical 2 supports dates, times and even setting up geofence reminders right in the application. You can use the same natural language style to add reminders, as well, just by starting with \"reminder,\" \"todo,\" \"task,\" or the more natural \"remind me to&hellip;\" Swipe from the right (or click the magnifying glass) to enter a wicked-fast search mode for finding any of your events (including Facebook/calendar Birthdays). Tapping and holding on a day in the calendar, week or day ticker view starts a new task on that day. You just fill in the rest. There&rsquo;s even TextExpander support, so you can create snippets for events you enter often. Events with sufficient data get add-ons like maps and easy contact links for invitees. Fantastical works with iCloud, Google Calendar, Exchange and more systems, meaning whatever you already have set up on your iPad will just work. When you open the app for the first time, everything is already in place. All of this adds up to an amazing application, and definitely my favorite in the realm of calendar apps. Fantastical 2 for iPad is currently $9.99 on the App Store as an intro price, and will be $14.99 after that. If you&rsquo;re one of a lucky five&hellip;",
		"keywords": ["apple","calendar","flexibit","google","icloud","reminders","store","birthdays","calendar","dashboard","events","exchange","facebook","fantastical","federico","flexibits","google","lunch","macstories","reminders","sorry","store","swipe","tapping","textexpander","thursday","viticci","weatherhead","address","alarms","amazing","anyone","apple","automatic","available","backlink","based","basic","behind","below","brettterpstra","brings","calendar","check","checkmark","class","click","codes","contact","contest","copies","create","dates","decided","definitely","depth","deserve","devices","dictation","double","drawing","dubbed","email","encourage","ended","endnotes","enter","entry","events","everything","excitement","expand","expands","fantastical","favorite","features","finding","first","fledged","fnref","footnote","footnotes","geofence","gesture","getting","giveaway","glass","handle","having","heard","height","hellip","holding","holds","https","icloud","iphone","image","included","including","intro","invitees","itunes","language","layout","ldquo","leaving","links","lists","loading","lucky","macdrifter","macstories","magnifying","meaning","media","multi","natural","noscript","noteref","often","original","originally","parser","people","picture","platforms","price","private","promo","random","rdquo","realm","reconsidered","remind","reminder","reminders","repeating","reversefootnote","reviews","right","rsquo","schedule","screen","screenshot","search","sending","setting","setup","showing","snippets","sorry","source","srcset","starting","starts","strong","style","support","supports","swipe","syntax","systems","table","tablet","ticker","times","title","tricks","turns","uploads","value","version","whatever","wicked","width","winners","winning","works","writing"]
	},{
		"title": "Sum: PopClip extension",
		"url": "/2014/04/11/sum-popclip-extension/",
		"tags": ["popclip"],
		"date": "Apr 11<span>th</span>, 2014",
		"ts": "1397221200",
		"summary": "I turned yesterday&rsquo;s simple \"Total Numbers\" service into a PopClip extension. Just select some text and all of the numbers in it are added up (with consideration for negative numbers). The result is shown in a popup and copied to the clipboard. This version handles edge cases in number formatting a bit better, and is configurable for various locales. The extension has options for setting the separator (like the comma in 1,000), the decimal delimiter (period in US, sometimes a comma elsewhere) and whether or not you want the output formatted with the separator for large numbers. You&rsquo;ll see the options when you install the extension, and you can get back to them by clicking the pencil icon in the PopClip menu to enter edit mode, then clicking the gear next to the Sum extension. Note that numbers can be anywhere in the text. They don&rsquo;t have to be in a list or a table to work. They can also have currency symbols touching on either side and still be totaled up. The extension is part of the \"Brett&rsquo;s PopClip Extensions\" bundle. Just download it and double-click any extensions to install them. This one is called \"Sum.\" The source code for all my PopClip extensions is on GitHub. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["extensions","github","popclip","brett","changelog","donate","download","extensions","github","markdown","numbers","popclip","published","updated","added","anywhere","bundle","called","click","clicking","clipboard","comma","configurable","copied","currency","decimal","delimiter","double","download","either","elsewhere","enter","extension","extensions","formatted","formatting","handles","hellip","install","locales","negative","numbers","options","output","pencil","popup","rsquo","separator","service","setting","shown","simple","sometimes","source","symbols","table","tools","totaled","touching","turned","useful","various","version","writing","yesterday"]
	},{
		"title": "A Service for getting sums from selections",
		"url": "/2014/04/10/a-service-for-sums-from-selections/",
		"tags": ["scripting","service"],
		"date": "Apr 10<span>th</span>, 2014",
		"ts": "1397134800",
		"summary": "Here&rsquo;s a quick System Service for OS X that finds all the numbers in selected text and adds them together. I find myself making lists of numbers in Markdown quite a bit, and often just want to add them all together. That&rsquo;s what this does. It works with decimals and currency symbols (including \",\" as a decimal separator) and ignores all other text. There can be more than one number on a line. The output will have as many decimal places as needed to match what&rsquo;s found in the text. Negative numbers work as well. The output doesn&rsquo;t replace your existing text; it appends the total number after a new line below the selection. I&rsquo;ve toyed with making a Markdown Table Calculator that lets you use spreadsheet-style \"SUM\" fields to get row and column totals, but that&rsquo;s still just an idea. This is just a quick and dirty solution. If you&rsquo;re interested in the nitty gritty, here&rsquo;s the script from inside the Service: Download, unzip, and double click to install. Just select some text containing numbers, right click, and choose \"Total Numbers\" to get the result. Update: The Service now handles commas in numbers for standard decimal notation, and you can change the separator and decimal delimiter at the top of the script. Open the workflow in Automator and you&rsquo;ll see two variables at the very top where you can define these. Use this to change the decimal delimiter to \",\" for example. Total Numbers Service v1.1 Download Total Numbers Service v1.1 An OS X Service to toal all numbers found in selected text Published 04/10/14. Updated 04/10/14. Changelog Donate &bull; More info&hellip",
		"keywords": ["markdown","multimarkdown","automator","calculator","changelog","donate","download","markdown","negative","numbers","published","service","system","table","updated","appends","before","below","change","choose","click","column","commas","containing","currency","decimal","decimals","define","delimiter","dirty","doesn","double","download","example","fields","finds","found","gritty","handles","hellip","ignores","including","information","inside","install","interested","internationalization","lists","making","match","myself","needed","nitty","notation","notes","numbers","often","output","places","quick","replace","right","rsquo","script","selected","selection","separator","solution","spreadsheet","standard","style","symbols","together","totals","toyed","unzip","variables","where","workflow","works"]
	},{
		"title": "Sponsor: PDFpen for iPad",
		"url": "/2014/04/10/sponsor-pdfpen-for-ipad/",
		"tags": [],
		"date": "Apr 10<span>th</span>, 2014",
		"ts": "1397127600",
		"summary": "This week, BrettTerpstra.com is sponsored by PDFpen for iPad from Smile. Sign a contract, fix a typo, correct a price list, or fill out a form while you&rsquo;re on the go. Take PDF documents with you, and add notes, highlighting, and other markup during your mobile downtime. Sync PDFs with PDFpen for OS X using iCloud or Dropbox. Grab and save PDFs using Dropbox, Evernote, Google Drive, Box; even WebDAV and FTP. Edit your PDFs anywhere you are with the complete, feature rich, mobile editing power of PDFpen for iPad",
		"keywords": ["document","drive","dropbox","evernote","format","google","icloud","pdfpen","portable","store","brettterpstra","drive","dropbox","evernote","google","pdfpen","smile","store","webdav","anywhere","available","contract","documents","downtime","editing","feature","highlighting","icloud","markup","mobile","notes","price","rsquo","sponsored","using","while"]
	},{
		"title": "Recap: Apr 9th, 2014",
		"url": "/2014/04/09/recap-apr-9th-2014/",
		"tags": ["recap"],
		"date": "Apr 9<span>th</span>, 2014",
		"ts": "1397084400",
		"summary": "Sponsor: Camera Plus with AirSnap (Apr 3rd) A bit thanks to Global Delight and Camera Plus for sponsoring BrettTerpstra.com this week. If you&rsquo;re in the market for a camera app, this one rocks. Support the ASPCA by shopping (Apr 7th) It was National Dog Fighting Awareness Day yesterday. This post contains a great (slightly graphic) video about what my wife does on a regular basis, helping to stop dog fighting rings around the U.S.. You can help out just by shopping at Amazon through a special link. Deckset 1.0 released (Apr 7th) I&rsquo;ve been excited about this app for a while. Create entire slideshow presentations from a single Markdown file, with great image handling and multiple themes. Cupcake, a color tool for web and app designers (Apr 8th) Cupcake, a tool for modifying colors in HTML, CSS and Objective C documents was released on the App Store this week. If you code colors, definitely check it out. Systematic 91 with Br. Gabriel Mosher (Apr 9th) A great conversation with Brother Gabriel Mosher about life as a friar, technology in the priory and the best in coffee, vodka and more. I was also late posting Systematic 90 with Zachary Kain, so if you&rsquo;re catching up be sure to hit that one, too! Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["camera","delight","global","markdown","store","aspca","airsnap","amazon","awareness","brettterpstra","brother","camera","create","cupcake","deckset","delight","fighting","gabriel","global","markdown","mosher","national","recaps","sponsor","store","support","systematic","zachary","basis","camera","catching","check","coffee","color","colors","contains","conversation","curated","definitely","designers","digest","documents","entire","excited","fighting","format","friar","graphic","great","handling","helping","image","interest","market","modifying","multiple","posting","posts","presentations","priory","quick","regular","released","rings","rocks","rsquo","shopping","single","slideshow","slightly","special","specifically","sponsoring","subscribe","summary","technology","thanks","themes","through","updates","video","vodka","weekly","while","yesterday"]
	},{
		"title": "Systematic 91 with Br. Gabriel Mosher",
		"url": "/2014/04/09/systematic-91-with-br-gabriel-mosher/",
		"tags": ["podcast","systematic"],
		"date": "Apr 9<span>th</span>, 2014",
		"ts": "1397053440",
		"summary": "I got to meet Brother Gabriel Mosher at Macworld this year. It wasn&rsquo;t the first time we&rsquo;d crossed paths, but it was the first time we actually got to talk. He&rsquo;s a Dominican friar living in the Bay area, and he&rsquo;s putting technology to use in the priory in intriguing ways. I&rsquo;ve had a few clergy people on the show before, but this was new ground for me. I knew nothing about monks, friars or really the history of the Catholic church, so this was a very interesting chat for me. I also greatly enjoy Brother Gabriel&rsquo;s taste in consumable beverages, so the top picks were a blast. Enjoy",
		"keywords": ["catholic","church","dominican","francisco","friar","gabriel","macworld","mosher","studios","brother","catholic","check","dominican","enjoy","gabriel","macworld","mosher","before","beverages","blast","church","clergy","consumable","crossed","enjoy","episode","first","friar","friars","greatly","ground","history","interesting","intriguing","living","monks","nothing","paths","people","picks","priory","putting","rsquo","taste","technology"]
	},{
		"title": "Web Excursions for April 08, 2014",
		"url": "/2014/04/08/web-excursions-for-april-08-2014/",
		"tags": ["bookmarks","evernote"],
		"date": "Apr 8<span>th</span>, 2014",
		"ts": "1396976400",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Save articles from the web on Evernote from iOS Cool bookmarklet from Phillip Gruneich for using Marky to save nicely formatted articles to Evernote. Swipe Another cool way to quickly make presentations for any device. Like Deckset, it also handles Markdown. Automatically create Calendar events when receiving email There&rsquo;s a lot of finagling required to make this tip work for specific situations, but it&rsquo;s a pretty cool trick. Privacy Policy Generator A neat-looking tool for generating concise and appropriate privacy policies for apps and websites. BeFit A handy calorie tracker for Mac. See the levels of nutrients and calories, track your goals and gather a variety of stats. It comes with a big database, and you can add custom foods as needed. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["design","development","gruneich","keynote","markdown","microsoft","phillip","powerpoint","store","another","automatically","backblaze","befit","calendar","check","deckset","evernote","generator","gruneich","markdown","marky","phillip","policy","privacy","swipe","affordably","articles","backs","bookmarklet","brought","calorie","calories","cloud","comes","computer","concise","create","custom","database","device","email","entire","events","everything","excursions","finagling","foods","formatted","gather","generating","goals","handles","handy","levels","looking","needed","nicely","nutrients","partnership","policies","presentations","privacy","quickly","receiving","reliably","required","rsquo","securely","situations","specific","stats","today","track","tracker","trick","using","variety","websites"]
	},{
		"title": "Cupcake, a color tool for web and app designers",
		"url": "/2014/04/08/cupcake-a-color-tool-for-web-and-app-designers/",
		"tags": ["appreview","cocoa","color","webdesign"],
		"date": "Apr 8<span>th</span>, 2014",
		"ts": "1396969200",
		"summary": "I&rsquo;ve been beta testing an app called Cupcake for what seems like forever. A while ago it didn&rsquo;t look like it was going to make it to the App Store. It just did, though, and I think it&rsquo;s of interest to anybody who&rsquo;s ever had to code a color. Cupcake lets you select text containing a color code in your HTML, CSS, or Cocoa document (or just about anywhere you can select text) and hit a key combination to pop up a picker. You can then adjust or replace the color from the picker or your own saved colors, and replace the original text with the new color. It&rsquo;s a huge timesaver when working in editors and IDEs that don&rsquo;t offer previews of the color codes (which is 90% of them). By default, the key command is ⌘⇧8 to replace the color. You can also insert a color without a selection using ⌘⇧7. These are System Services, and you can adjust the shortcuts using System Preferences (or, my preference, Services Manager). Because they run as Services, you don&rsquo;t need to have Cupcake running all the time. It will just launch when you run the Services. You can choose to insert your colors as hex, rgb(a), hsl(a), NSColor (calibrated red, device red, calibrated hue, or device hue), UIColor (red or device hue), or CGColor. Cupcake stores your color history, and you can add your own custom colors to the \"My Color\" section for easy retrieval across a project. Grab Cupcake on the Mac App Store for just $2.99 right now. It&rsquo;s an amazingly handy tool for web designers and Cocoa developers",
		"keywords": ["cascading","cocoa","cupcake","sheets","store","style","because","cgcolor","cocoa","color","cupcake","manager","nscolor","preferences","services","store","system","uicolor","across","adjust","amazingly","anybody","anywhere","apple","brettterpstra","calibrated","called","choose","class","codes","color","colors","combination","command","containing","cupcake","cupcakescreenshot","custom","default","designers","developers","device","document","editors","forever","going","handy","height","history","https","image","interest","itunes","launch","ldquo","loading","macosxautomation","media","noscript","offer","original","picker","picture","preference","previews","project","rdquo","replace","retrieval","right","rsquo","running","saved","section","seems","selection","services","servicesmanager","shortcuts","source","srcset","stores","testing","think","timesaver","title","uploads","using","while","width","working"]
	},{
		"title": "Deckset 1.0 released",
		"url": "/2014/04/07/deckset-1-dot-0-released/",
		"tags": ["appreview","appstore","macos","markdown"],
		"date": "Apr 7<span>th</span>, 2014",
		"ts": "1396890000",
		"summary": "I&rsquo;ve gushed about the beta of this Mac app a couple of times on Systematic, and it&rsquo;s finally out for everyone. Deckset is the easiest way to create a slide deck, a la Keynote or Powerpoint, and present it on the big screen. I&rsquo;ve played around a lot with converting Markdown to things like Reveal.js, but Deckset makes it simple. You just write in plain text with a little Markdown formatting and presto: presentation. It processes and presents the deck internally, so all you need to do is hook up a projector and hit play. You can include images, resize them, add effects to them, fill the screen with them (and overlay text) and even display multiple images in the background side by side. It also allows you to include video with HTML5 controls. When presenting, Deckset shows you the upcoming slides on one display, and the full-screen view of the current slide on the other display. There&rsquo;s a rehearsal mode, and you can add presenter notes that only you will see. It even displays a small floating preview when you switch to your text editor. Deckset currently comes with seven themes with a variety of fonts and multiple color variations. I&rsquo;d love the ability to customize the themes myself, but that&rsquo;s one of my very few feature requests for this app. The other would be a way to create progressive builds within a slide, but keeping the Markdown syntax simple is a primary goal of this application. You can literally create a ready-to-go presentation in 5 minutes, if you know what you want to say. If you have time to prepare and add stunning images, video, code blocks (with syntax highlighting), etc., awesome, but if you&rsquo;re crunched for time it&rsquo;s also the perfect way to get something on the screen without any hassle. I&rsquo;m excited about this one, as you may have gathered. You can see an overview at decksetapp.com, and purchase it on the Mac App Store for $19.99 (introductory price)",
		"keywords": ["deckset","editor","keynote","markdown","microsoft","powerpoint","deckset","keynote","markdown","powerpoint","reveal","store","systematic","ability","allows","awesome","background","blocks","builds","color","comes","controls","converting","couple","create","crunched","customize","decksetapp","display","displays","easiest","editor","effects","everyone","excited","feature","finally","floating","fonts","formatting","gathered","gushed","hassle","highlighting","images","internally","introductory","keeping","literally","little","makes","minutes","multiple","myself","notes","overlay","overview","played","prepare","presentation","presenter","presenting","presents","presto","preview","price","primary","processes","progressive","projector","ready","rehearsal","requests","resize","rsquo","screen","seven","shows","simple","slide","slides","small","stunning","switch","syntax","themes","times","upcoming","variations","variety","video","within","write"]
	},{
		"title": "Support the ASPCA by shopping",
		"url": "/2014/04/07/support-the-aspca-by-shopping/",
		"tags": ["aspca","charity","personal"],
		"date": "Apr 7<span>th</span>, 2014",
		"ts": "1396873800",
		"summary": "My wife, Aditi, works for the ASPCA (American Society for the Prevention of Cruelty to Animals) as an independent contractor. It&rsquo;s been difficult to describe what she does because of the amount of secrecy that generally has to surround her work for the safety of the dogs involved. However, a video was recently produced by the ASPCA that shows exactly what she does on her monthly trips. She&rsquo;s not in this one, but these are her friends and co-workers doing what they do best. Warning, this video might be hard to watch, but there&rsquo;s redemption at the end. The more you know about dog fighting, the more these images hurt to see. This is, however, reality, and the scope is immense. Aditi has been on deployments where over 360 dogs were rescued in a single fighting ring bust. If this touches you, there&rsquo;s an easy way to help. Amazon Smile donates to your charity of choice every time you shop at Amazon. It doesn&rsquo;t cost you anything, but helps support the charities in great ways. Amazon has taken away Minnesota (and many other states&rsquo;) bloggers&rsquo; ability to use affiliate links, so instead of supporting me, support the ASPCA. Just go to smile.amazon.com (additional info) and search for \"ASPCA\" when selecting your charity (choose the first result, American Society for Prevention of Cruelty to Animals). That&rsquo;s it. Now shop through smile.amazon.com and you&rsquo;re helping save dogs all over the US without having to sit through a single Sarah McLachlan song or deal with the PETA crazy. Not your bag? You can also donate directly through the ASPCA website. I can attest to the fact that this money is well spent and goes to help the dogs, not the board of directors. Thanks from me, Aditi and the many dogs that the ASPCA helps every day. And thanks to Marina Epelman for pointing Amazon Smile out to me. In case you&rsquo;re wondering, that&rsquo;s our rescued pit bull, Emma, at the top of this post. Addendum: you can also provide support via WebThriftStore by visiting aspca.webthriftstore.com. Thanks to Mutahhir for the tip",
		"keywords": ["amazon","amazonsmile","states","united","aspca","addendum","aditi","amazon","american","animals","awareness","cruelty","epelman","fighting","however","marina","mclachlan","minnesota","mutahhir","national","prevention","sarah","smile","society","thanks","tomorrow","warning","webthriftstore","ability","affiliate","amazon","amount","aspca","attest","because","bloggers","board","charities","charity","choice","choose","contractor","crazy","deployments","describe","difficult","directly","directors","doesn","doing","donate","donates","fighting","first","friends","generally","great","having","helping","helps","however","images","immense","independent","involved","links","money","monthly","pointing","produced","reality","recently","redemption","rescued","rsquo","safety","scope","search","secrecy","selecting","shows","single","smile","spent","states","support","supporting","surround","taken","thanks","through","touches","trips","video","visiting","watch","website","webthriftstore","where","wondering","workers","works"]
	},{
		"title": "Systematic 90 with Zachary Kain",
		"url": "/2014/04/03/systematic-90-with-zachary-kain/",
		"tags": ["podcast","systematic"],
		"date": "Apr 3<span>rd</span>, 2014",
		"ts": "1396541640",
		"summary": "I had a great time discussing ADHD and non-medication ways to handle it with Zachary Kain. As part of it, we dove into \"quantified self\" tools for tracking and being more mindful of our habits and responsibilities. I found it a fascinating discussion that may lead me to change some things in my own life. Thanks to Zachary for making the time (on short notice after my previously scheduled guest came down with a post-Macworld flu&hellip; feel better David)",
		"keywords": ["macworld","studios","zachary","check","david","macworld","thanks","zachary","change","discussing","discussion","episode","fascinating","found","great","guest","habits","handle","hellip","making","medication","mindful","previously","quantified","responsibilities","scheduled","short","tools","tracking"]
	},{
		"title": "Sponsor: Camera Plus with AirSnap",
		"url": "/2014/04/03/sponsor-camera-plus-with-airsnap/",
		"tags": [],
		"date": "Apr 3<span>rd</span>, 2014",
		"ts": "1396522800",
		"summary": "BrettTerpstra.com is sponsored this week by Camera Plus with AirSnap. Thanks to Global Delight! Camera Plus is designed to help everyone take the best possible captures with minimum fuss on iOS devices including iPhones, iPads and iPod touches. It has a refined and polished user interface, with slick lines and glide-like transition effects offering an experience unlike any other. It is also meant to complement the vivid and luscious promise that iOS 7 brings. With an intuitive layout and robust feature-set, Camera Plus presents the most rewarding, fun and colorful photography experience using the iPhone camera. AirSnap is an innovative new feature that allows users to capture photos and videos using two devices running Camera Plus via Bluetooth™, infrastructure Wi-Fi networks or peer-to-peer Wi-Fi. Once paired within Camera Plus, iOS devices like the iPhone, iPod touch and iPad can be used to easily capture remotely by using one as the capture device and the other as the remote trigger. AirSnap can be used for effortless group photos, candid video captures, fun spy videos and a lot more that users will love and find incredibly helpful. Camera Plus with AirSnap can capture photos and videos along with instant previews, rear flash usage and choice of both front and rear cameras. The possibilities with AirSnap are only limited by creativity. Check out Camera Plus in the App Store",
		"keywords": ["airsnap","bluetooth","cameraplus","delight","global","iphone","store","airsnap","btblog","bluetooth","brettterpstra","camera","check","delight","global","store","thanks","allows","apple","brettterpstra","brings","camera","cameras","candid","capture","captures","choice","class","colorful","complement","creativity","designed","device","devices","easily","effects","effortless","everyone","experience","feature","flash","front","glide","group","height","helpful","https","ipads","iphone","iphones","image","including","incredibly","infrastructure","innovative","instant","interface","intuitive","itunes","layout","limited","loading","luscious","meant","media","networks","noscript","offering","original","paired","photography","photos","picture","polished","possibilities","possible","presents","previews","promise","refined","remote","remotely","rewarding","robust","running","slick","source","sponsored","srcset","title","touch","touches","transition","trigger","unlike","uploads","usage","users","using","video","videos","vivid","width","within"]
	},{
		"title": "Recap: Apr 2nd, 2014",
		"url": "/2014/04/02/recap-apr-2nd-2014/",
		"tags": ["recap"],
		"date": "Apr 2<span>nd</span>, 2014",
		"ts": "1396479600",
		"summary": "The Efficient Mac User (Mar 30th) The slides from my Macworld talk are out in the wild. What&rsquo;s that in your menu bar? (Mar 31st) A rundown of all of the apps running in my menu bar right now, as pictured in the Efficient Mac User slides. Sponsorship will resume tomorrow, don&rsquo;t forget to check out the rates if you&rsquo;re interested in supporting this blog (and getting some exposure with a great bunch of readers). Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["apple","macintosh","macworld","efficient","macworld","recaps","sponsorship","bunch","check","couple","curated","digest","exposure","forget","format","getting","great","highlight","interested","pictured","posts","quick","rates","readers","resume","right","rsquo","rundown","running","slides","specifically","subscribe","summary","supporting","tomorrow","updates","weekly"]
	},{
		"title": "Web Excursions for April 01, 2014",
		"url": "/2014/04/01/web-excursions-for-april-01-2014/",
		"tags": ["bookmarks"],
		"date": "Apr 1<span>st</span>, 2014",
		"ts": "1396360740",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Glue A very cool Sublime Text plugin for blending your shell and your editor. Run commands, build scripts, version control&hellip; all from within Sublime. Stuffing an RFID Card into a Finger Ring When this kind of thing is perfected, I will be ecstatic. Better than iBeacons for unlocking doors, turning lights on and off and other such pointless but futuristic pursuits. bleach An HTML5 sanitizer written in Python. In my initial testing it works beautifully. shortcutFoo I always talk about muscle memory when it comes to keybindings and shortcuts. Improve yours. sassdown Interesting project for generating stylesheet references from Markdown comments in Sass files",
		"keywords": ["control","github","keyboard","management","markdown","package","python","revision","shortcut","sublimetext","system","cleanmymac","finger","improve","interesting","markdown","python","stuffing","sublime","beautifully","bleach","blending","brought","build","comes","commands","comments","control","doors","ecstatic","editor","excursions","files","futuristic","generating","hellip","ibeacons","initial","keybindings","lights","memory","muscle","partnership","perfected","plugin","pointless","project","pursuits","references","sanitizer","sassdown","scripts","shell","shortcutfoo","shortcuts","speed","stylesheet","testing","tools","turning","unlocking","version","within","works","written"]
	},{
		"title": "What's that in your menu bar?",
		"url": "/2014/03/31/whats-that-in-your-menu-bar/",
		"tags": ["macos","macworld","menubar"],
		"date": "Mar 31<span>st</span>, 2014",
		"ts": "1396277580",
		"summary": "There have been some questions about what&rsquo;s in my menu bar as shown in my Macworld session, The Efficient Mac User (this slide). Here&rsquo;s the list (all 42 icons). It changes frequently, but this is what was running on the morning I grabbed the screenshot for the slide deck. (Notification center hidden completely, as I only ever access it via two-finger swipe). For the record, I run all of these on a 13\" MacBook Air with 8 Gigs of RAM. I watch my resources carefully, and none of these are causing issues. Notably missing is Arq, which I had quit while working on hotel wifi, and Day One, which usually has its quick entry menu bar icon showing. Quite a few of the icons could be hidden, but thanks to Bartender, I can keep them around without overflowing my primary menu bar",
		"keywords": ["apple","macbook","macintosh","airvideo","airplay","airspace","bartender","battery","bettertouchtool","bittorrent","bluetooth","chrome","climate","clock","cobook","controlplane","delibar","dropbox","droplr","dropzone","efficient","fantastical","fastscripts","fitbit","growlvoice","macbook","machine","macworld","motion","notably","notification","popclip","powermate","proxy","server","shush","simplify","spotlight","switching","system","textexpander","undock","visits","volume","access","carefully","causing","center","changes","completely","entry","finger","grabbed","hidden","hotel","icons","issues","menubar","missing","morning","notifications","nvalt","overflowing","preferences","primary","questions","quick","record","resources","right","rsquo","running","screenshot","session","showing","shown","slide","swipe","thanks","thermostat","usually","watch","while","working"]
	},{
		"title": "The Efficient Mac User",
		"url": "/2014/03/30/the-efficient-mac-user/",
		"tags": ["macworld"],
		"date": "Mar 30<span>th</span>, 2014",
		"ts": "1396186080",
		"summary": "I&rsquo;ve posted the slides from my Macworld talk. You can find them at brettterpstra.com/the-efficient-mac-user. You can advance through the slides using arrow keys or spacebar, and if you hover on the left you can jump around in the slides. The presentation includes several video examples which will play on advance. The slide deck should be fairly self-explanatory, and the links for just about everything mentioned can be found at brettterpstra.com/macworld14. Sorry there&rsquo;s no video to go with this, and there are some parts that were mostly verbal. I may still get around to writing some of them out, but I have a lot going on right now. Thanks again to those who made it, and I hope this is helpful to those who couldn&rsquo;t",
		"keywords": ["apple","macintosh","macworld","automation","keyboard","macworld","optimizing","sorry","thanks","again","areas","arrow","brettterpstra","couldn","covers","efficient","everything","examples","explanatory","fairly","found","going","helpful","hover","includes","links","macworld","management","mentioned","mostly","parts","posted","presentation","right","rsquo","several","shortcuts","slide","slides","spacebar","through","using","verbal","video","workspace","writing"]
	},{
		"title": "Goodbye Macworld 2014, and thank you!",
		"url": "/2014/03/29/goodbye-macworld-2014-and-thank-you/",
		"tags": ["macworld"],
		"date": "Mar 29<span>th</span>, 2014",
		"ts": "1396112400",
		"summary": "I&rsquo;m taking off from SFO today. I want to thank everyone I got to meet (and sorry to those I didn&rsquo;t have time to catch up with). A special thanks to everyone who helped pack the room to fire capacity at my talk, it was a lot of fun. I will be posting a recap of my talk for those who weren&rsquo;t able to make it. It may take me a few days to get around to writing it up, but there seems to be a lot of interest. I&rsquo;ll do my best. The show floor actually ended up being pretty interesting, and it was great to catch up with the developers of some of my favorite apps. I even got some exciting news about an iOS version of my favorite music player, Vox (and met the creator of WinAMP, which was a trip). AgileBits was there in force, and it&rsquo;s always great to catch up with them. There are too many more to list&hellip",
		"keywords": ["agilebits","apple","francisco","macworld","winamp","agilebits","macworld","thanks","winamp","capacity","catch","creator","developers","ended","everyone","exciting","favorite","floor","force","great","hellip","helped","interest","interesting","letting","music","permission","photo","player","posting","putting","recap","rsquo","seems","sorry","special","taking","thank","thanks","today","version","weren","writing"]
	},{
		"title": "Recap: Mar 26th, 2014",
		"url": "/2014/03/26/recap-mar-26th-2014/",
		"tags": ["recap"],
		"date": "Mar 26<span>th</span>, 2014",
		"ts": "1395874800",
		"summary": "My posting has been a bit light as I prepare for Macworld this week. Come say \"Hi\" if you&rsquo;re there! Sponsor: ReadKit (Mar 20th) Thanks to ReadKit for sponsoring BrettTerpstra.com this week. It&rsquo;s my favorite RSS reader and it&rsquo;s been an honor to feature it. Logging Git commits with doing (Mar 20th) The CLI saga continued. The latest version is in pre-release with a ton of new features. If you&rsquo;d like to help with testing, use and add bug reports on GitHub. Release notes on GitHub as well. Dash docsets from MultiMarkdown (Mar 21st) Turn MultiMarkdown metadata and tables into Cheat Sheets for Dash. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["github","macworld","multimarkdown","brettterpstra","cheat","github","logging","macworld","multimarkdown","readkit","recaps","release","sheets","sponsor","thanks","commits","continued","curated","digest","docsets","doing","favorite","feature","features","format","honor","latest","light","metadata","notes","posting","posts","prepare","quick","reader","release","reports","rsquo","specifically","sponsoring","subscribe","summary","tables","testing","updates","version","weekly"]
	},{
		"title": "Macworld 2014",
		"url": "/2014/03/25/macworld-2014/",
		"tags": ["macworld"],
		"date": "Mar 25<span>th</span>, 2014",
		"ts": "1395777540",
		"summary": "If you&rsquo;re headed to Macworld, be sure to swing by for my talk. It&rsquo;s called The Efficient Mac User and will focus on helping \"average\" users start being \"power\" users. CF823 at 4pm on Thursday. Also feel free to ping me and see if we can grab coffee (or beer, depending on the time of day&hellip;)",
		"keywords": ["apple","center","francisco","macworld","moscone","twitter","efficient","macworld","thursday","average","called","coffee","depending","focus","headed","hellip","helping","rsquo","swing","users"]
	},{
		"title": "Dash docsets from MultiMarkdown",
		"url": "/2014/03/21/dash-docsets-from-multimarkdown/",
		"tags": ["cheaters","cheatsheet","markdown","multimarkdown","scripting"],
		"date": "Mar 21<span>st</span>, 2014",
		"ts": "1395419580",
		"summary": "Dash is my favorite way to reference syntax and info about dozens of programming languages, and one of my most used applications. The developer of Dash recently released \"Cheatset\", a way to build your own Cheat Sheets to display in Dash as docsets, complete with indexed commands and categories. I love Cheaters, but this is awesome. I can have all of my cheat sheets in one place without running two applications, and I can create very custom ones for things like my Moom shortcuts and keybindings. I&rsquo;ll probably keep playing with Cheaters, but this is a new level. The only problem is I don&rsquo;t like the verbosity of the syntax (Ruby DSL) required to generate the cheat sheets with . I had already started a script that generated DSL input from MultiMarkdown for dasheets, and really liked the flexibility. I converted it slightly to work with Cheatset, and I think other people will appreciate it as well. It&rsquo;s a procedural script with lots of potential fail points, but I haven&rsquo;t run into any problems yet. First, you need to install Cheatset. This is done with . If you run into trouble, check the Cheatset issues. Download the script from GitHub and place it somewhere in your path. Make it executable with . Now, you just need to make a MultiMarkdown document that you can run through mmd2cheatset. The script will call cheatset on its own, so all you have to do is run . You simply fill in a few MultiMarkdown metadata headers, then build out your cheatsheets using MultiMarkdown table syntax. The headers required are: You can optionally include a key that points to an existing folder with additional assets. It&rsquo;s not necessary, though. The keyword field, on the other hand, is vital. Trust me. Any text after the metadata and a blank line but before the first table becomes the (optional) introductory text for the cheat sheet. Text after the last table and a horizontal rule () becomes the footer. \"Name\" is the action, or what will happen when the command is run. It can contain Markdown. \"Command\" is the key combination that will run the command. It can be anything, but note that commas separate multiple commands. These will be surrounded with tags and made to look like actual keys. \"Note\" is any superfluous information. It can contain Markdown as well. If the cheat sheet is just a list of methods or functions and related notes, leave the command cell blank. You can leave any cell blank, as long as the columns stay in the&hellip;",
		"keywords": ["cheat","cheaters","languages","markdown","multimarkdown","programming","sheet","cheat","cheaters","cheatset","command","download","first","github","global","markdown","multimarkdown","sheets","tables","action","applications","appreciate","assets","awesome","becomes","before","blank","brackets","build","called","categories","category","cheat","cheatset","cheatsheets","check","columns","combination","command","commands","commas","contain","contribute","converted","create","custom","dasheets","developer","display","docsets","document","documents","dozens","executable","favorite","field","first","flexibility","folder","footer","formatted","functions","generated","happen","haven","headers","horizontal","identifier","indexed","information","input","install","introductory","issues","keybindings","keyword","languages","leave","level","liked","metadata","methods","multiple","necessary","notes","optional","optionally","people","playing","points","potential","problem","problems","procedural","programming","proper","recently","related","released","repeat","repository","required","rsquo","running","sample","script","separate","sheet","sheets","shortcuts","simply","slightly","somewhere","square","started","superfluous","surrounded","syntax","table","think","through","trouble","useful","using","verbosity","versions","vital"]
	},{
		"title": "Recap: Mar 26th, 2014",
		"url": "/2014/03/20/recap-mar-26th-2014/",
		"tags": ["macos","recap","solutions","textexpander","tools"],
		"date": "Mar 20<span>th</span>, 2014",
		"ts": "1395356400",
		"summary": "Sorry, the recap is a day late this week. I know you&rsquo;ll survive, but I&rsquo;m apologizing anyway. Sponsor: TextExpander (Mar 13th) Big thanks to TextExpander and Smile for their continued support. If you&rsquo;re not already using TextExpander, I think you&rsquo;re crazy. A Notehub CLI (Mar 14th) If you work on the command line, Notehub may be a great solution for sharing Markdown documents. This tool will make it easy. Scatterbrains 3: a new tool for doing (Mar 16th) This was something I worked on for three days to scratch my own itch. I didn&rsquo;t think anyone would care, but I posted it (as is my modus operandi). It&rsquo;s now had over 22,000 views. I think it struck a chord. Also see the followup posts and check the project page for more info on the latest features. The atomic solution for Keep In Dock on Mavericks (Mar 17th) My apps kept disappearing from the Dock when I quit, no matter how many times I told Mavericks otherwise. Fixed. Quick Tip: manual autocorrect on OS X (Mar 18th) Quick tip for keyboard nuts who don&rsquo;t normally use autocorrection on the Mac. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["interface","markdown","mavericks","notehub","programming","textexpander","fixed","markdown","mavericks","notehub","quick","recaps","scatterbrains","smile","sorry","sponsor","textexpander","anyone","anyway","apologizing","atomic","autocorrect","autocorrection","check","chord","command","continued","crazy","curated","digest","disappearing","documents","doing","features","followup","format","great","interest","keyboard","latest","manual","modus","normally","operandi","posted","posts","project","quick","recap","rsquo","scratch","sharing","solution","specifically","struck","subscribe","summary","support","survive","thanks","think","times","updates","using","views","weekly","worked"]
	},{
		"title": "Logging Git commits with doing",
		"url": "/2014/03/20/logging-git-commits-with-doing/",
		"tags": ["doing","productivity"],
		"date": "Mar 20<span>th</span>, 2014",
		"ts": "1395327600",
		"summary": "If you don&rsquo;t use git and you&rsquo;re not interested in command line logging, move along, nothing to see here. I promise this won&rsquo;t go on forever, unlike my PopClip obsession. I decided that commit messages in my local Git repositories would make a pretty good way to easily keep my file up to date without double effort. You can run commands automatically when creating a commit using hooks. In this case, the hook. Then, . accepts input on STDIN, so you can pipe other commands directly to it. This one outputs the last commit message (the one you just wrote) with a format string that includes just the subject, a tag based on the name of the folder at the root of the repository, and any body of the post on a new line. I&rsquo;m going to talk a little more about time tracking with doing soon, after I take a break from this profitless project for a while. For now: With the current version you can run and have it calculate the difference between start and finish for all entries with a @done(date) tag (which you can create for the last entry with at any time). This works with any of the commands as well. will collect all the times and total them, as well as totals for common tags in the output. The totals are included at the end of the command output. Thus, if I tag all of my Marked-related entries with @marked, I can see at the end of the day exactly how much time I spent working on it vs. things tagged @writing or such. The entry created by the Git hook will be marked @done with the current date. Since this will be the same as the timestamp, it will show up as an empty time when running (or ). If you want to backdate the start date for time tracking purposes, you&rsquo;d have to come up with a way to pass a to the command. There are a couple of possibilities: First, you could use the timestamp of the previous commit and assume that you&rsquo;ve been working on the same repo since: This has the drawback of the first commit always being dated since the last time you were working on the project. You could do some math before the commit and make sure it was in the last 3 hours, otherwise output it without the : Second, you could include a time specifier in the commit message and use a instead, having the hook strip the extra info out before it commits it. I haven&rsquo;t nailed down how I want to handle that yet. I&rsquo;m using the first option right now, but the latter option seems the most useful, really. Edit the new post-&hellip;",
		"keywords": ["commit","configuration","management","engadget","first","global","karaoke","marked","popclip","stdin","second","since","vegas","zizzle","above","accepts","assume","assuming","automatically","backdate","based","before","beginning","between","break","collect","command","commands","commit","commits","common","couple","create","created","creating","dated","decided","default","difference","directly","doing","double","drawback","easily","effort","empty","entries","entry","evening","extra","finish","first","folder","forever","format","gitconfig","global","going","handle","haven","having","hooks","hours","image","included","includes","input","installs","interested","latter","little","local","logging","marked","memories","message","messages","nailed","nothing","obsession","output","outputs","possibilities","profitless","project","promise","related","repos","repositories","repository","right","rsquo","running","script","seems","since","specifier","spent","string","strip","tagged","times","timestamp","totals","tracking","unlike","useful","using","version","while","working","works","writing","wrote"]
	},{
		"title": "Sponsor: ReadKit",
		"url": "/2014/03/20/sponsor-readkit/",
		"tags": [],
		"date": "Mar 20<span>th</span>, 2014",
		"ts": "1395313200",
		"summary": "I&rsquo;m pleased to have ReadKit sponsoring BrettTerpstra.com this week. I love sponsors whose products I use every day, and this is one of them. ReadKit is an RSS reader for Mac with support for Feedly, NewsBlur, Feed Wrangler, Feedbin, Fever, and with good, old-fashioned RSS feed handling built in. The Fever support covers any Fever-compatible service (I&rsquo;m using it with mnmlrdr). ReadKit also covers the \"read later\" and bookmarking services with support for Instapaper, Pocket, Readability, Pinboard and Delicious. Share your favorite finds through Twitter, Facebook, Buffer, Email, iMessage and Evernote. One of ReadKit&rsquo;s outstanding features is Smart Folders. Set up folders that scan across all of your RSS feeds for articles matching criteria you set, whether it&rsquo;s searching titles, looking for keywords in the text or matching tags. You can filter by service, url, date and more. I find them very effective for tracking articles on specific topics of interest and reading them all in series. Did you find a long read you like and want to focus on it? Hit ⌘⇧L and the sidebars all disappear, leaving just you and your reading material. There are four different color themes (including light on dark) with adjustable fonts and sizes for very pleasurable reading. You can load the original page for an article and open any other links directly in the reading window (or in your browser, if you like), and you&rsquo;re always only one click away from a Readability view. ReadKit lets you customize every keyboard shortcut, and you can customize sync, notification, and display settings separately for each service you add. There&rsquo;s even code highlighting for the nerds! ReadKit is available on the Mac App Store, and you can learn more at ReadKitApp.com",
		"keywords": ["facebook","feedly","imessage","instapaper","pinboard","readability","store","brettterpstra","buffer","delicious","email","evernote","facebook","feedbin","feedly","fever","folders","instapaper","newsblur","pinboard","pocket","readkit","readkitapp","readability","share","smart","store","twitter","wrangler","across","adjustable","apple","article","articles","available","bookmarking","brettterpstra","browser","built","class","click","color","compatible","covers","criteria","customize","different","directly","disappear","display","effective","fashioned","favorite","features","feeds","filter","finds","focus","folders","fonts","handling","height","highlighting","https","imessage","image","including","interest","itunes","keyboard","keywords","later","ldquo","learn","leaving","light","links","loading","looking","matching","media","mnmlrdr","nerds","noscript","notification","original","picture","pleased","pleasurable","products","rdquo","reader","reading","readkit","readkitapp","rsquo","searching","separately","series","service","services","settings","shortcut","sidebars","sizes","source","specific","sponsoring","sponsors","srcset","support","themes","through","title","titles","topics","tracking","uploads","using","whose","width","window"]
	},{
		"title": "doing gone wild",
		"url": "/2014/03/19/doing-gone-wild/",
		"tags": ["doing","productivity"],
		"date": "Mar 19<span>th</span>, 2014",
		"ts": "1395234720",
		"summary": "I started my project late last week and it&rsquo;s turned into my \"productive procrastination\" project. It&rsquo;s a simple CLI that helps you keep track of what you&rsquo;re doing and provides a record of what you&rsquo;ve done. I just pushed doing v0.2.4. It&rsquo;s a big update and I don&rsquo;t have time to elaborate on everything, but if you&rsquo;re interested, the docs are updated and the help system is complete. You can install or update with , or if you already have it. In brief, can now tag, filter, colorize and more. It has fuzzy matching for section and view names, and even basic time tracking. You can use to see all the commands, and to see additional details for any command. Details on the custom view templates, additional configuration and time tracking are in the docs. without argument tags last entry done archives them or marks last X entries done archives them tags last entry or entries removes said tag(s) custom views additions custom views can include and tags is a space separated list of tags to filter the results by tags_bool defines AND (all tags must exist), OR (any tag exists), or NONE (none of the tags exist) order key (asc or desc) defines output sort order by date section key can be set to \"All\" to combine sections updates accepts \"all\" as a section arguments following section name are tags to filter by sets boolean (AND, OR, NONE) or (ALL, ANY, NONE) (default OR/ANY) use to limit results use to set sort order (asc or desc) use to set age (newest or oldest) CSV output for show command () fuzzy section guessing when specified section isn&rsquo;t found fuzzy view guessing for command fuzzy searching for all commands that specify a view. On the terminal you&rsquo;ll see \"Assume you meant XXX\" to show what match it found, but this is output to STDERR and won&rsquo;t show up if you&rsquo;re redirecting the output or using it in GeekTool, etc. tags_color in view config to highlight tags at the end of the lines. Can be set to any of the %colors. Basic time tracking. on and will turn on time calculations Intervals between timestamps and dated tags are calculated for each line, if the tag exists. You must include a %interval token in the appropriate template for it to show tags can optionally be used to override the time stamp in the calculation Any other tags in the line have that line&rsquo;s total added to them Totals for&hellip;",
		"keywords": ["command","geektool","interface","assume","basic","details","geektool","intervals","stderr","totals","accepts","added","additions","archives","argument","arguments","basic","between","boolean","brief","calculated","calculation","calculations","coded","color","colorize","colors","command","commands","config","configuration","custom","dated","default","defines","details","displayed","doing","elaborate","entries","entry","everything","exist","exists","filter","found","fuzzy","guessing","helps","highlight","install","interested","interval","limit","marks","match","matching","meant","names","newest","notes","oldest","optionally","output","override","procrastination","productive","project","provides","pushed","record","redirecting","removes","results","rough","rsquo","searching","section","sections","separated","simple","space","specify","stamp","started","system","template","templates","terminal","timestamps","token","track","tracking","turned","updated","updates","using","views"]
	},{
		"title": "Quick Tip: manual autocorrect on OS X",
		"url": "/2014/03/18/quick-tip-manual-autocorrect-on-os-x/",
		"tags": ["keyboard","macos","productivity","quicktip","writing"],
		"date": "Mar 18<span>th</span>, 2014",
		"ts": "1395147600",
		"summary": "This tip from Macworld is a fun one for writers. It&rsquo;s about how you can manually trigger the autocorrect popup in Cocoa text fields by hitting space after a misspelled word and then moving the caret backward to the edge of the word. After a very short delay, the suggestion popover (only in the most recent versions of OS X) will appear and you can use arrow keys and enter to choose one. Dismiss it with escape. It avoids the entire process of right clicking and choosing a correction from the contextual menu. The problem for me is that this requires that \"Automatically Correct Spelling\" be enabled. I dislike that feature when I&rsquo;m doing any serious writing. I do like having the red underlines on misspelled words, so I keep \"Check Spelling While Typing\" turned on, which is the other prerequisite for this trick. It would be handiest to be able to see the red lines and decide whether I want to correct it now or wait until a point where I can come back and do a batch all at once. If I do it in batch, I&rsquo;m probably going to use the spelling panel, but being able to keyboard through the document and fix things has its benefits. So, then, how to make it work in my case? Just add a keyboard shortcut for \"Correct Spelling Automatically\". Open System Preferences -> Keyboard -> Shortcuts -> Application Shortcuts and add a new one for All Applications. Set the menu title to \"Correct Spelling Automatically\" and then add a keyboard shortcut. I&rsquo;m using &#2C6;⌘S, but whatever works and won&rsquo;t get in the way. Now I can quickly toggle it on to correct a few words manually, and off when I start typing again. Manual autocorrection",
		"keywords": ["apple","autocorrection","keyboard","macworld","preferences","shortcut","system","utilities","applications","automatically","check","cocoa","dismiss","keyboard","macworld","manual","preferences","shortcuts","spelling","system","typing","while","again","appear","arrow","article","autocorrect","autocorrection","avoids","backward","batch","benefits","caret","choose","choosing","clicking","contextual","correction","decide","dislike","document","doing","enabled","enter","entire","escape","feature","fields","going","handiest","having","hitting","keyboard","ldquo","macworld","manually","misspelled","moving","panel","point","popover","popup","prerequisite","problem","process","quickly","rdquo","recent","requires","right","rsquo","serious","short","shortcut","space","spelling","suggestion","through","title","toggle","trick","trigger","turned","typing","underlines","using","versions","whatever","where","words","works","writers","writing"]
	},{
		"title": "The atomic solution for Keep In Dock on Mavericks",
		"url": "/2014/03/17/the-atomic-solution-for-keep-in-dock-on-mavericks/",
		"tags": ["macos","solutions"],
		"date": "Mar 17<span>th</span>, 2014",
		"ts": "1395075600",
		"summary": "I lamented on Twitter and App.net that my Dock was no longer respecting \"Keep in Dock,\" and hadn&rsquo;t for a while now. It turned out I was far from alone; I heard from a lot of people having the same experience. One friend, Thomas Brand, offered a simple solution: delete the Dock preferences. It stung a bit &mdash; it&rsquo;s the equivalent of \"did you try rebooting?\" &mdash; but it worked and I&rsquo;m grateful. I don&rsquo;t keep many apps permanently in my Dock. Nine, actually, including Finder. Those nine I am very used to seeing, seeing notification badges and clicking quickly based on their Dock location. Having them disappear regardless of the \"Keep In Dock\" setting was causing mental anguish for me. Yep. This will reset your Dock to the way it looked when you first got your computer or installed a new OS. Meaning, of course, that there are a gazillion apps that Apple wants you to know you have but that you absolutely will never need in your Dock. After plucking them out, I added back in the spacer1 between my communcation/social apps and my dev apps. I quit everything and, thankfully, everything stayed put. I&rsquo;ll keep an eye on it for a while and see if there&rsquo;s a point where it reverts to the previous behavior. It would be helpful to know what changes that causes the issue. It could be as simple as corruption of the plist or a permissions issue. I&rsquo;m not sure. I&rsquo;m simply surprised to find out exactly how much I depend on having everything in its place on my Dock. There&rsquo;s probably a name for that condition&hellip",
		"keywords": ["apple","finder","killall","operating","system","terminal","twitter","apple","brand","deleting","finder","having","library","meaning","preferences","terminal","thomas","twitter","added","alone","alpha","anguish","apple","array","background","backlink","badges","based","behavior","between","bottom","brettterpstra","causes","causing","changes","class","clicking","commands","communcation","computer","corruption","couple","defaults","depend","disappear","dockshot","eggfreckles","endnotes","everything","experience","first","fnref","folder","footnote","footnotes","friend","gazillion","grateful","having","heard","height","hellip","helpful","highlight","highlighter","https","image","including","installed","invisible","killall","lamented","language","ldquo","loading","location","longer","looked","mdash","media","mental","noscript","noteref","notification","offered","original","people","permanently","permissions","persistent","picture","plaintext","plist","plucking","point","possible","preferences","quickly","rdquo","rebooting","regardless","reset","respecting","restarting","reversefootnote","reverts","rouge","rsquo","screen","seeing","setting","simple","simply","social","solution","source","spacer","srcset","stayed","stung","surprised","thankfully","thomasbrand","title","turned","uploads","wants","where","while","width","worked","write"]
	},{
		"title": "Web Excursions for March 17, 2014",
		"url": "/2014/03/17/web-excursions-for-march-17-2014/",
		"tags": ["bookmarks","marked"],
		"date": "Mar 17<span>th</span>, 2014",
		"ts": "1395061200",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Inside DuckDuckGo, Google&rsquo;s Tiniest, Fiercest Competitor A great dive into what&rsquo;s behind DuckDuckGo and where it&rsquo;s heading. And why. MarkdownTools2 This is pretty awesome. It replicates Marked&rsquo;s multi-file document capabilities from the command line. It handles all the merge formats Marked does, with MultiMarkdown and GFM support. Plus, scriptable! More details in a post from the author. micha/resty A very handy CLI for Bash/ZSH that aids in testing/communicating with REST APIs. foldingtext Jesse Grosjean has started working on a CLI for FoldingText (and TaskPaper) in NodeJS. I haven&rsquo;t had a chance to really figure out what the possibilities are yet, but from an initial toying around it looks like it has great potential for extending plain text task management on the command line. Marked.app PopClip extension I stumbled on LawSchoolMatt through a DuckDuckGo search, and I love this guy. Among many other things, he whipped up a PopClip extension for previewing selected text in Marked. Dig around his site, there&rsquo;s a lot of awesome there. Plus, mind maps. Yum",
		"keywords": ["command","google","grosjean","interface","jesse","multimarkdown","plaintext","programming","taskpaper","among","check","competitor","duckduckgo","fiercest","foldingtext","google","grosjean","inside","jesse","lawschoolmatt","markdowntools","marked","multimarkdown","nodejs","popclip","setapp","taskpaper","tiniest","access","author","awesome","behind","brought","capabilities","chance","command","communicating","details","document","excursions","extending","extension","figure","foldingtext","formats","great","handles","handy","haven","heading","hundreds","initial","looks","management","merge","micha","monthly","multi","partnership","possibilities","potential","previewing","replicates","resty","rsquo","scriptable","search","selected","started","stumbled","subscription","support","testing","through","today","toying","where","whipped","working"]
	},{
		"title": "A couple of followups to \"doing\"",
		"url": "/2014/03/16/a-couple-of-followups-to-doing/",
		"tags": ["doing","productivity"],
		"date": "Mar 16<span>th</span>, 2014",
		"ts": "1394974800",
		"summary": "The CLI that I announced yesterday has been more warmly received than I expected. I&rsquo;ll share expansions and updates to it as they happen. If you&rsquo;ve already installed with , you can update with the latest features using . Fresh installs will get them by default. If I&rsquo;m recording a task I&rsquo;ve just finished, I can use and create a task that includes a TaskPaper-style tag, compete with the current date. This command can optionally take a switch to immediately send it to the \"Archive\" section, or use to specify your own destination. I like to use my WWID file as a record at the end of the week, but I&rsquo;ve found that half my entries are projects I&rsquo;m starting, and the other half are notes that I&rsquo;ve finished a task or project. Being able to separate them as I enter them means easier review later. will now archive the \"Later\" section, keeping X entries instead of the old hardwired 5. You can specify a section to archive as shown, or leave it blank to default to the \"Currently\" section. By the way, you can get to this configuration file easily with , which will use by default. You can override that and choose your own editor with , which must be a valid Unix executable (like subl or mate). You can add additional custom views, just nest them under the \"views\" key (indented two spaces from the edge). Multiple views would look like this: The \"section\" key is the default section to pull entries from. Count and section can be overridden at runtime with the and flags. You can also now easily add new sections with . You can also create them on the fly by using the flag when running . For example, would create the \"just a random side note\" entry in the section called \"Misc,\" creating it if it doesn&rsquo;t exist. The previous incarnation of had a LaunchBar companion that I used frequently. The Day One popup has mostly replaced that for me, but only because I have a system that connects it to my WWID file. However, I&rsquo;ve still found a place for adding WWID entries without including them in my journal, and LaunchBar is the perfect way to do that for me. All you need is an AppleScript saved at \"~/Library/Application Support/LaunchBar/Actions/Doing.scpt\". It should look like this: I&rsquo;m certain intrepid souls can make that simple script work fine with Alfred as well. That&rsquo;s it for now. See the project page for full instructions and details. I&rsquo;m certainly open to feedback on this tool. Based on&hellip;",
		"keywords": ["applescript","command","github","interface","launchbar","taskpaper","actions","alfred","applescript","archive","based","count","custom","doing","fresh","github","however","later","launchbar","launchbar","library","multiple","specify","support","taskpaper","twitter","added","adding","announced","archive","archiving","automatically","because","blank","called","certain","certainly","choose","command","companion","compete","configuration","connects","count","create","creating","custom","default","destination","details","discussions","doesn","easier","easily","editor","email","enter","entries","entry","example","executable","exist","expansions","expected","features","feedback","finished","flags","found","guessed","happen","hardwired","incarnation","includes","including","indented","installed","installs","instructions","intrepid","issues","journal","keeping","later","latest","leave","marking","mostly","notes","optionally","overridden","override","people","popup","project","projects","random","received","record","recording","replaced","requests","rsquo","running","runtime","saved","script","section","sections","sending","separate","share","shown","simple","souls","spaces","specify","starting","straight","style","switch","system","under","updates","using","valid","views","warmly","yesterday"]
	},{
		"title": "Scatterbrains 3: a new tool for doing",
		"url": "/2014/03/15/scatterbrains-3-a-new-tool-for-doing/",
		"tags": ["doing","productivity","scripting"],
		"date": "Mar 15<span>th</span>, 2014",
		"ts": "1394930160",
		"summary": "I made something that I worked really hard on, despite knowing few people besides myself would ever find a use for it. However, if you: &hellip;This tool might actually be useful for you. Here&rsquo;s the story. I tend to get into somewhat obsessive work phases. I lose track of time, I lose track of eating, and, most annoyingly, I lose track of what I&rsquo;ve been doing as I switch between projects. I&rsquo;ve learned to set various reminders to snap me out of the haze and force me to be more conscious of my activities and the passing of time. I&rsquo;m using Day One as part of that, as I&rsquo;ve mentioned before. I let the Day One quick entry popup show every hour, and I make myself take the time to list out everything I can remember working on for the last hour. The first line is the title, everything after it is additional metadata. I hit return twice, type \"#wwid\" and hit Command-Return. The entry goes into my Day One Journal and is tagged \"wwid.\" Then my favorite part happens. Hazel watches for new Journal entries and runs them through a script that checks their tags and content. If it&rsquo;s a \"wwid\" entry, it gets added to my \"What Was I Doing\" file in nvALT as a TaskPaper-style task line, complete with indented notes. I started this \"What Was I Doing\" system back in 2011 and have been using the same scripts for a long time. This post is actually about an update to that, but I just have to tell you about the rest of this Day One to nvALT system first. The Hazel script also recognizes Slogger posts and compiles them into rotating Markdown files in my notes folder that I can view in nvALT and Marked (I really do drink my own Kool Aid&trade;). If it&rsquo;s a regular journal entry, it gets saved to its own Markdown file (with weather, time, and other data as MultiMarkdown metadata) and a reference to it is added to a Marked index file. I can pull the index file up in Marked and read my entire journal, sans the social Slogger stuff and persistent WWID entries. I&rsquo;m polishing up this Day One/nvALT/Markdown script and trying to generalize it to a point where it could work in other people&rsquo;s environments. I&rsquo;ll keep you posted. In the meantime, the original script was getting old and feeling limited. I needed a library of tools for managing the WWID file from the Hazel script, so a new version of began its life. What was originally a 20-line bash script is now a full CLI. You can read more about it on its project page. All&hellip;",
		"keywords": ["command","github","hazel","interface","markdown","multimarkdown","taskpaper","check","command","doing","fancy","github","hazel","however","journal","markdown","marked","mostly","multimarkdown","return","searcher","silver","slogger","taskpaper","actions","activities","added","amazing","annoyingly","answered","archive","aware","before","began","besides","between","blank","bundled","caffeine","checks","clean","clutter","color","colout","command","commands","compiles","configuration","conscious","content","details","display","distractions","doing","downloads","drink","eating","effort","enough","entire","entries","entry","environments","everything","explanations","external","favorite","feeling","files","filled","finish","finished","first","focused","folder","force","forgotten","fully","generalize","getting","great","guess","happens","heartening","hectic","hellip","hours","indented","index","install","installation","instructions","intended","interruptions","journal","knowing","later","learned","library","limited","looks","maintain","management","managing","maybe","meantime","mentioned","metadata","morning","myself","needed","night","notes","nvalt","obsessive","original","originally","passing","people","persistent","personal","phases","phone","point","polishing","popup","posted","posts","preference","process","project","projects","quick","recognizes","regular","remember","reminders","reporting","return","robust","rotating","rsquo","sanity","satisfaction","saved","savvy","script","scripts","section","simply","social","somewhat","source","started","stayed","story","stuff","style","switch","system","tagged","templating","think","thought","through","title","tools","track","tracking","trade","train","trying","twice","updates","usage","useful","using","utility","various","version","watches","weather","where","wondered","worked","working"]
	},{
		"title": "The Arq 4 winners, and something extra for you...",
		"url": "/2014/03/15/the-arq-4-winners-and-something-extra-for-you-dot-dot-dot/",
		"tags": ["backup","giveaway"],
		"date": "Mar 15<span>th</span>, 2014",
		"ts": "1394887620",
		"summary": "Well, the Arq 4 winners have been chosen. Congrats to the lucky five: For those who didn&rsquo;t win, I still recommend you check out Arq 4 as a backup solution. To that end, I got you a discount: use this link to save 10% on an Arq 4 license",
		"keywords": ["amazon","automatic","backup","dreamobjects","glacier","google","greenqloud","repeat","storage","christopher","congrats","cotton","danny","giveaway","jacobs","robot","spaetzel","testa","turner","backup","check","chosen","discount","license","lucky","playing","recommend","rsquo","solution","thanks","winners"]
	},{
		"title": "A Notehub CLI",
		"url": "/2014/03/14/a-notehub-cli/",
		"tags": ["markdown"],
		"date": "Mar 14<span>th</span>, 2014",
		"ts": "1394837220",
		"summary": "So I made this. It&rsquo;s not even what I&rsquo;ve been spending most of my hacking time on the last couple of days, but that&rsquo;s not quite ready to unveil yet. Actually, neither is this&hellip; Basically, this little utility allows you to post notes to NoteHub from a file, your clipboard, or STDIN. It gives you back the url of your now-publicly-available page, and can optionally shorten it, copy it, or open it for you automatically. You can specify an alternate theme (dark, solarized-dark, solarized-light), as well as set the header and text fonts to any Google webfont. The shortened url that it returns will maintain all of these settings when distributed. also keeps a set of data about all the notes you create, and allows you to update them. You can run and it will give you a menu of all the notes you have with \"alice\" in the title. Pick one and it will update with the file, clipboard or STDIN you pass to it. I may eventually make it possible to edit Notehub notes locally, sucking them down, editing them and pushing them back up, but it&rsquo;s doing what I need it to do for now. If you&rsquo;re interested, see the GitHub repo for installation and usage instructions (they&rsquo;re minimal at best for now, apologies)",
		"keywords": ["github","interface","programming","github","google","notehub","notehub","stdin","alice","allows","alternate","apologies","automatically","available","clipboard","couple","create","distributed","doing","editing","eventually","fonts","gives","hacking","header","hellip","installation","instructions","interested","keeps","light","little","locally","maintain","minimal","neither","notes","optionally","possible","publicly","pushing","ready","returns","rsquo","settings","shorten","shortened","solarized","specify","spending","sucking","theme","title","unveil","usage","utility","webfont"]
	},{
		"title": "Sponsor: TextExpander",
		"url": "/2014/03/13/sponsor-textexpander/",
		"tags": ["snippet","textexpander"],
		"date": "Mar 13<span>th</span>, 2014",
		"ts": "1394708400",
		"summary": "This week, BrettTerpstra.com is sponsored by one of my favorite apps, TextExpander from Smile. Whether it&rsquo;s a simple email signature or several paragraphs of a standard response, you&rsquo;ll love how easy it is to use TextExpander to avoid typing the same thing over and over. Make customized, boilerplate replies fast and easy using \"fill-ins,\" which allow you to include form fields that you can adjust every time you use the snippet. Create snippets from AppleScripts and shell scripts for powerful integrations, such as my own dynamic date math snippets (and other tools)",
		"keywords": ["dropbox","snippet","textexpander","applescripts","brettterpstra","create","download","dropbox","smile","store","textexpander","abbreviations","adjust","allow","available","avoid","boilerplate","customized","devices","dynamic","effort","email","expanding","favorite","fields","integrations","multiple","paragraphs","pictures","powerful","replies","response","rsquo","saves","scripts","several","shell","short","signature","simple","snippet","snippets","sponsored","standard","tools","touch","typing","using"]
	},{
		"title": "Recap: Mar 12th, 2014",
		"url": "/2014/03/12/recap-mar-12th-2014/",
		"tags": ["recap"],
		"date": "Mar 12<span>th</span>, 2014",
		"ts": "1394665200",
		"summary": "Sponsor: Rittman Mead (Mar 6th) Thanks to Rittman Mead for sponsoring BrettTerpstra.com this week! Link cleaning extensions for PopClip (Mar 6th) A couple of new extensions for lengthening shortened urls and clearing off query strings and Google tracking information. Owning your cloud backup (Mar 9th) Using Arq 4 and a remote Mac for offsite backups. Don&rsquo;t miss out on the Arq 4 Giveaway! GeoHopper and iBeacons for proximity scripting (Mar 10th) An experiment in using iBeacons for turning my lights on and off (or anything else you can script) via GeoHopper for iOS and Bleu Station beacons. Systematic 87 with David Duval (Mar 12th) A pleasure talking to David Duval on this week&rsquo;s Systematic! Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["david","duval","geohopper","iphone","rittman","station","systematic","brettterpstra","david","duval","geohopper","giveaway","google","owning","popclip","recaps","rittman","sponsor","station","systematic","thanks","using","backup","backups","beacons","cleaning","clearing","cloud","couple","curated","digest","experiment","extensions","format","ibeacons","information","interest","lengthening","lights","offsite","posts","query","quick","remote","rsquo","script","scripting","shortened","specifically","sponsoring","strings","subscribe","summary","talking","tracking","turning","updates","using","weekly"]
	},{
		"title": "Brainstorm collaboratively with Stormboard",
		"url": "/2014/03/12/brainstorm-collaboratively-with-stormboard/",
		"tags": ["brainstorming","productivity"],
		"date": "Mar 12<span>th</span>, 2014",
		"ts": "1394640000",
		"summary": "Stormboard is a new web app for collaborative brainstorming. It&rsquo;s based on sticky notes and multi-section boards. While not my ideal brainstorming format, it&rsquo;s very effective for quickly getting ideas out, organizing them and developing them. It&rsquo;s ideal for remote teams who are used to using whiteboards, and comes with SSL-encrypted connections even at the free subscription level. You start an idea in an entry field in the left column. When you hit enter, it&rsquo;s added to the board as a sticky. You can change the sticky&rsquo;s color, comment on it, vote on them and quickly copy and move them between boards. You can also add photos and videos as ideas with the same set of features. Paid subscribers can also add \"stacks,\" which you can double click and dive into to create brainstorms within larger brainstorming sessions. There&rsquo;s a built-in chat in addition to commenting on individual ideas. You can filter ideas by color, votes, date added, and new comments. You can also quickly see which ideas you added to the pile, and which ones you&rsquo;ve voted on. Paid subscriptions also allow import of Excel, CSV and text files to your Stormboards. Starting at the $5/month subscription level, you also get basic and advanced reporting and basic support. You don&rsquo;t get Stacks, which I consider the most valuable tool, until the $10/month level, along with export to CSV. The interface is nice and does allow for rapid brainstorming of ideas. I find that re-organizing ideas is a bit tedious as you can only move one idea at a time. I would love it if I could drag (or even shift-click) to select multiple ideas and move them or perform other actions like converting them to a stack. That doesn&rsquo;t seem to be possible at this point. Turns out you can select multiple notes by shift-dragging. I just had the wrong combos. If you have a paid account, you can also create stacks just by dragging notes together, which is exactly what I was hoping for. As I said at the beginning, sticky notes and whiteboards aren&rsquo;t my personal favorite for brainstorming. I prefer mind maps where it&rsquo;s really easy to organize and branch ideas as they pop up (see MindMeister for collaborative mind mapping). However, Stormboard is a great take on the idea, and has the potential to be a powerful tool for teams",
		"keywords": ["brainstorming","mindmeister","stormboard","excel","however","mindmeister","stacks","starting","stormboard","stormboards","turns","while","account","actions","added","advanced","allow","based","basic","beginning","between","board","boards","brainstorming","brainstorms","branch","built","change","click","collaborative","color","column","combos","comes","comment","commenting","comments","connections","consider","converting","create","developing","doesn","double","dragging","effective","encrypted","enter","entry","export","favorite","features","field","files","filter","format","getting","great","hoping","ideal","ideas","import","individual","interface","larger","level","mapping","multi","multiple","notes","organize","organizing","personal","photos","point","possible","potential","powerful","prefer","quickly","rapid","remote","reporting","rsquo","section","sessions","shift","stack","stacks","sticky","subscribers","subscription","subscriptions","support","teams","tedious","together","using","valuable","videos","voted","votes","where","whiteboards","within","wrong"]
	},{
		"title": "MindMeister add-on for Google Docs",
		"url": "/2014/03/12/mindmeister-add-on-for-google-docs/",
		"tags": ["google","mindmapping"],
		"date": "Mar 12<span>th</span>, 2014",
		"ts": "1394632680",
		"summary": "MindMeister, my favorite online Mind Mapping application, now has a Google Docs add-on available. It can take any bullet list in your document and turn it into a mind map embedded in the document. No MindMesiter account is required to use it. Visit the add-on store to install the add-on, then just select a bullet list and choose Add-ons -> MindMeister -> Insert as mind map. It works best if you select all the way down to a blank line below the bullet list. It inserts the new mind map into the list, so you&rsquo;ll probably want to remove the bullet list itself after running it, and turn off the bullet list on the mind map to outdent it. While you don&rsquo;t have any control over the map after it&rsquo;s inserted, it&rsquo;s a very nice way to add visual interest and convey ideas in a non-linear fashion. Here&rsquo;s MindMeister&rsquo;s tutorial video showing the add-on in action: Very cool stuff from a mind mapping platform that just keeps getting better. Check out MindMeister.com for more information on MindMeister itself",
		"keywords": ["google","mindmeister","check","google","mapping","mindmeister","mindmesiter","visit","while","account","action","available","below","blank","bullet","choose","control","convey","document","embedded","fashion","favorite","getting","ideas","information","inserted","inserts","install","interest","itself","keeps","linear","mapping","online","outdent","platform","remove","required","rsquo","running","showing","store","stuff","tutorial","video","visual","works"]
	},{
		"title": "Systematic 87 with David Duval",
		"url": "/2014/03/11/systematic-87-with-david-duval/",
		"tags": ["podcast","systematic"],
		"date": "Mar 11<span>th</span>, 2014",
		"ts": "1394585820",
		"summary": "It was fun talking with David Duval on this week&rsquo;s Systematic. He&rsquo;s a university professor who&rsquo;s worked in both New Zealand and Canada. We talked about picking up and moving to new countries, life in New Zealand and technology in higher education and distance learning. Thanks to David for taking the time. Check out the episode at 5by5",
		"keywords": ["canada","david","duval","studios","systematic","twitter","zealand","canada","check","david","duval","systematic","thanks","zealand","countries","distance","education","episode","higher","learning","moving","picking","professor","rsquo","taking","talked","talking","technology","university","worked"]
	},{
		"title": "Arq 4 Giveaway!",
		"url": "/2014/03/11/arq-4-giveaway/",
		"tags": ["backup","giveaway","macos"],
		"date": "Mar 11<span>th</span>, 2014",
		"ts": "1394556480",
		"summary": "Arq 4 is a major step forward for the offsite backup application. Along with support for myriad new storage types (including GreenQloud, DreamObjects, Google Cloud Storage, and any Amazon S3-compatible service), it also added SFTP backup so that I could use my remote mini as a backup storage device. Arq 4 also improved CPU usage, added unified Glacier/S3 budgeting and allows multiple backup targets. It&rsquo;s a huge upgrade, and I&rsquo;m pleased to announce that I have five copies to give away. An Arq 4 license is valued at $39.99 US, so this is a giveaway you won&rsquo;t want to miss. Just sign up below to enter. Winners will be drawn on Friday, March 14th at 12pm CST, and notified by email. One entry per person, and please use your full name1. Sorry, this giveaway has ended. Seriously, next time around I think I&rsquo;m just going to have the KILLOTRON Giveaway Robot just discard single-name entries&hellip;&nbsp;↩",
		"keywords": ["amazon","backup","cloud","dreamobjects","google","greenqloud","storage","amazon","cloud","dreamobjects","friday","giveaway","glacier","google","greenqloud","killotron","robot","seriously","sorry","storage","winners","added","allows","announce","backlink","backup","below","brettterpstra","budgeting","class","cloud","compatible","copies","device","discard","email","ended","endnotes","enter","entries","entry","fnref","footnote","footnotes","fullname","giveaway","going","haystacksoftware","height","hellip","https","image","improved","including","killotron","license","loading","major","media","multiple","myriad","noscript","noteref","notified","offsite","original","owning","person","picture","pleased","release","remote","reversefootnote","rsquo","service","single","sorry","source","srcset","storage","support","targets","think","title","types","unified","upgrade","uploads","usage","valued","width"]
	},{
		"title": "GeoHopper and iBeacons for proximity scripting",
		"url": "/2014/03/10/geohopper-and-ibeacons-for-proximity-scripting/",
		"tags": ["automation","ibeacon","iphone"],
		"date": "Mar 10<span>th</span>, 2014",
		"ts": "1394463600",
		"summary": "I have been working for a long time to make lights in my house follow me around with accurate proximity detection. I always have my iPhone on me, so I&rsquo;ve been using Bluetooth to handle this. Originally, I hacked around with Proximity to accomplish this, but ultimately found EventScripts to be a better solution. It still wasn&rsquo;t as accurate as I wanted it to be. I started playing with iBeacons. iBeacons use Bluetooth Low Energy (BTLE) and can provide more precise Bluetooth proximity detection than any other method I&rsquo;ve tried. It&rsquo;s also easier on mobile device batteries than Bluetooth, which is relevant in this case because a setup like this requires polling and broadcasting on the mobile device. The technique I&rsquo;m using can be set up on any web host, depending on what actions you want to trigger. My scenario requires a local web host, so the examples provided will only be of interest to Mac users who have the knowledge (or search engine skills) to set up a local server. It&rsquo;s also tailored to AppleScript and Indigo, but you can use this method to perform any actions you want on a computer when your phone comes into range. I&rsquo;ve been through many iterations at this point. I&rsquo;m using Bleu Station beacons for the most part, but I learned you can also set up a BTLE-equipped Mac as a transmitting beacon with little effort. I&rsquo;ve gotten far enough to have written my own prototype apps for triggering my lights, but the most constructive solution I&rsquo;ve found so far is to use the GeoHopper app. With both the Bleu beacons and the BeaconOSX method, you can set the power of the signal to control the range of the beacon (within a margin of error1). With the Bleu beacons, you use the iOS setup app to control the power, and with a homebrew Mac-beacon, you can set the transmit power in the code. The trick is to get events to trigger when a device enters the beacon&rsquo;s region. I&rsquo;m using GeoHopper on my iPhone to trigger events when I come into or leave the region of a beacon. There&rsquo;s a GeoHopper Mac app that can trigger scripts when devices enter and exit, but I&rsquo;ve found it a bit \"crashy.\" The iOS app has been quite reliable, though. You can add iBeacons to GeoHopper on your iPhone (also see the url scheme), and when the device running it enters or exits a beacon&rsquo;s region, it can send JSON payloads to webhooks. This can be used with services like IFTTT, or &mdash; as I&rsquo;ve&hellip;",
		"keywords": ["bluetooth","energy","eventscripts","iphone","action","actions","addhandler","apache","applescript","applescripts","beaconosx","bluetooth","config","choosing","energy","eventscripts","example","execcgi","geohopper","geohopper","ibeacon","ifttt","indoexeg","indigo","indigoserver","invalid","lights","locationenter","locationexit","manual","office","options","originally","parse","process","query","requires","string","setting","since","station","triggering","turning","writing","above","accepted","accurate","action","actions","added","adding","address","anyone","applescript","assume","authorized","available","backlink","based","batteries","beacon","beacons","because","begin","below","bluetooth","brettterpstra","broadcasting","browser","building","built","bypassed","check","checks","choosing","class","cleanly","comes","computer","constructive","contact","control","crashy","create","customize","default","define","defined","depending","details","detection","determined","device","devices","different","directly","directory","domain","easier","effort","elsif","email","empty","enabled","endnotes","engine","enough","enter","enters","entire","equipped","error","events","eventscripts","example","examples","executable","execute","exists","exits","expires","false","figcaption","figure","first","fluctuate","fnref","footnote","footnotes","found","geohopper","geohoppercgi","github","githubusercontent","going","gotten","hacked","hacking","handle","handler","handles","header","height","highlight","highlighter","highly","homebrew","hosts","house","https","ibeacon","ibeacons","iphone","ifttt","image","information","install","interest","iterations","knowledge","language","ldquo","learned","leave","library","lights","lightson","little","loading","local","location","locations","looks","lsquo","margin","mdash","media","message","messages","method","mobile","mttrb","multiple","myserver","names","noscript","noteref","notification","object","occurred","office","officelightsoff","officelightson","original","osascript","parameter","params","parse","payload","payloads","perceptiveautomation","phone","picture","pivot"]
	},{
		"title": "Owning your cloud backup",
		"url": "/2014/03/09/owning-your-cloud-backup/",
		"tags": ["backup","security"],
		"date": "Mar 9<span>th</span>, 2014",
		"ts": "1394372520",
		"summary": "Full disclosure: macminicolo.net sponsors hosting for this website. This, however, is not a sponsored post. I&rsquo;ve been wanting to \"own\" my cloud backup for a while. Amazon S3 and Glacier provide solid solutions, but restoring a backup from S3 is slow, and from Glacier it&rsquo;s downright painful. S3 also seems cheap at first, but gets expensive quickly. Plus, there are privacy and security issues with any third party cloud storage. Arq 4 recently came out and added the ability to backup up over SFTP. I already have a macminicolo.net box (a service that runs my Mac mini from a rack in Las Vegas with full remote/internet access), so I purchased a 4TB Backup Plus Fast Portable Drive1, had it added to my colocated mini2, and pointed Arq 4 to it. Arq allows you to control bandwidth usage, so if the bandwidth of your remote machine is a concern, you can throttle it. In my case, macminicolo provides more than enough bandwidth to run a few websites3 and do a full-speed cloud backup at the same time. Create a public/private key pair for the remote On your remote machine, create a backup folder on the external backup hard drive Add a \"Target\" in Arq 4, pointed to your server/backup folder using the private SSH key you created in step 1 Add local folders to the backup target in Arq For additional peace of mind, you could mirror your backup drive, but I also back up locally and only need one remote backup storage device. If you have storage space and a dedicated machine, there are additional options like CrashPlan, too. You can also use CarbonCopyCloner to clone a drive over an intranet or the internet, but I don&rsquo;t think it provides any versioning. You could potentially combine it with Time Machine for that. I experimented with BitTorrent Sync for large backups a bit. It&rsquo;s fast, but there&rsquo;s no versioning. You can combine BitTorrent Sync with Time Machine, too, but that requires even more drive space and I&rsquo;m afraid I&rsquo;d eventually run into issues and might not even know about them until it was time to attempt a restore. Arq handles all of the backup, versioning and restore functions, so it was a good choice for me. Arq 4 is $39.99. It also backs up to Amazon S3, Amazon Glacier, GreenQloud, DreamObjects, Google Cloud Storage and more. You can have multiple targets if you like. macminicolo.net has 100Mb/s connections, with plans starting at $35 per month if you provide your own Mac mini. You can purchase a&hellip;",
		"keywords": ["amazon","apple","glacier","greenqloud","machine","amazon","apache","apple","backblaze","backup","bittorrent","brian","carboncopycloner","cloud","compared","couchdb","crashplan","create","dreamobjects","drive","drives","glacier","google","greenqloud","machine","marked","marky","mysql","nosql","point","portable","reboot","remote","seagate","server","storage","stucki","superduper","superduperdescription","target","vegas","webdav","ability","access","accessible","added","advanced","afraid","allows","amazon","apple","arqmacmini","authentication","availability","available","awesomeness","backblaze","backlink","backs","backup","backups","bandwidth","between","bgsco","bittorrent","bombich","bookmarking","brettterpstra","buspowered","charge","charges","cheap","choice","class","clone","cloud","colocated","comments","comparable","completely","concern","connections","control","correction","crashplan","create","created","cyberciti","daemon","dedicated","defect","depending","device","disclosure","downright","downtime","drive","drives","effort","endnotes","enough","especially","eventually","expensive","experimented","external","faster","fault","features","first","fnref","folder","folders","footnote","footnotes","fully","functions","github","great","handles","handy","haystacksoftware","height","hellip","higher","highlight","hosted","hosting","hosts","however","https","image","index","initial","interest","internet","intranet","investment","issues","ldquo","loading","local","locally","login","machine","macminicolo","management","markdownrules","marked","media","minutes","mirror","monthly","multiple","needed","neediness","network","noscript","noteref","offsite","options","original","owning","painful","party","password","peace","performance","personal","personality","picture","plainmade","plans","platform","pocket","pointed","portable","potentially","powered","prefers","prices","privacy","private","provides","public","publickey","pulled","purchased","quickly","rdquo","recently","recommendation","related","reliable","remote","requires","restore","restoring","reversefootnote","rsquo","seagate","secure","security","seeking","seems"]
	},{
		"title": "Link cleaning extensions for PopClip",
		"url": "/2014/03/06/link-cleaning-extensions-for-popclip/",
		"tags": ["popclip"],
		"date": "Mar 6<span>th</span>, 2014",
		"ts": "1394128800",
		"summary": "I&rsquo;ve just added a couple of extensions to the PopClip collection. They lengthen short urls and clean query strings out. One (LinkCleaner) is for replacing text in an editor, and the other (CopyCleanLinks) is for copying to the clipboard. Holding down Option will strip all query strings. By default it will only strip Google Analytics strings (UTM). Holding down Command will strip all text except for URLs, returning the cleaned versions of any urls in the text as a newline-separated list Holding down both will do &mdash; surprise &mdash; both. The scripts use LongURL to lengthen any short urls found, and then a basic regex to find Google query strings and other \"?x=y\" type of query strings. Download the bunch and install what you like! The source is up on GitHub. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["analytics","expression","github","google","locator","markdown","popclip","regular","resource","analytics","brett","changelog","command","copycleanlinks","donate","download","extensions","github","google","holding","linkcleaner","longurl","markdown","popclip","published","updated","added","basic","bunch","clean","cleaned","clipboard","collection","copying","couple","default","editor","except","extensions","found","hellip","install","lengthen","mdash","modifier","newline","query","regex","replacing","returning","rsquo","scripts","separated","short","source","strings","strip","surprise","tools","useful","versions","writing"]
	},{
		"title": "Sponsor: Rittman Mead",
		"url": "/2014/03/06/sponsor-rittman-mead/",
		"tags": [],
		"date": "Mar 6<span>th</span>, 2014",
		"ts": "1394107200",
		"summary": "Special thanks to Rittman Mead for sponsoring BrettTerpstra.com this week. Rittman Mead is a leading global data and analytics company that enables its clients to exploit their business data for substantial and sustained competitive advantage. We deliver innovative and cost-effective business information systems and consultancy. By using the latest data and analytics technologies, we enable clients to stay ahead of their competitors, accelerate growth and meet regulatory requirements efficiently. We write an industry leading blog focused on data, analytics, business intelligence and data warehousing that has been running since 2003 and hosts over 2000 posts. We offer a cloud-based BI service and share a Git repository of useful scripts for managing some of the tools we typically use",
		"keywords": ["analytics","business","databases","intelligence","rittman","warehouse","warehousing","brettterpstra","rittman","special","advantage","ahead","analytics","based","business","clients","cloud","company","competitive","competitors","consultancy","deliver","effective","efficiently","enables","exploit","focused","global","growth","hosts","industry","information","innovative","intelligence","latest","leading","managing","offer","posts","regulatory","repository","running","scripts","service","share","since","sponsoring","sustained","systems","technologies","thanks","tools","typically","useful","using","warehousing","write"]
	},{
		"title": "Recap: Mar 05th, 2014",
		"url": "/2014/03/05/recap-mar-05th-2014/",
		"tags": ["recap"],
		"date": "Mar 5<span>th</span>, 2014",
		"ts": "1394064000",
		"summary": "Sponsor: AeroPress Timer (Feb 27th) A big thanks to AeroPress Timer for sponsoring BrettTerpstra.com this week. AeroPress users should be checking this out. Marked 2.2 825 with Passive Voice detection (Mar 3rd) Marked was updated this week with Passive Voice detection, allowing you to further improve your writing! Systematic 86 with Nick Honko (Mar 4th) I had a great chat with Nick about travel, study habits and more. Collaborative text editor roundup (Mar 5th) A roundup of some of the currently-available collaborative text editing solutions. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["aeropress","apple","coffee","honko","iphone","aeropress","brettterpstra","collaborative","honko","marked","passive","recaps","sponsor","systematic","timer","voice","allowing","available","checking","collaborative","curated","detection","digest","editing","editor","format","great","habits","improve","interest","posts","quick","roundup","rsquo","solutions","specifically","sponsoring","study","subscribe","summary","thanks","travel","updated","updates","users","weekly","writing"]
	},{
		"title": "Web Excursions for March 05, 2014",
		"url": "/2014/03/05/web-excursions-for-march-05-2014/",
		"tags": ["bookmarks","collaboration","markdown","texteditor"],
		"date": "Mar 5<span>th</span>, 2014",
		"ts": "1394042400",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. This is the \"collaborative text editors\" edition. It&rsquo;s a problem I&rsquo;ve been looking into for a while now, and would love to hear about any additions you have to the list. I&rsquo;m leaving comments open on this one, so feel free to pimp your favorite solutions. While I&rsquo;m partial to Markdown and plain text in this quest, I&rsquo;m open to other non-Word options. Draft Still my favorite, and constantly growing with new features and active development. I&rsquo;m using it to collaborate on a book right now, as well as a means to share my longer blog pieces with editors and proofreaders. Typewrite Another one to add to the list. Nice keyboard shortcuts for Markdown editing, and great collaboration features with merging and differentials. Penflip Start projects, invite collaborators and share public documents. I love the interface, but haven&rsquo;t done any extensive testing with it yet. Gingko App A way to collaborate on document structure using a \"Tree\" system. Good keyboard navigation and some interesting features. GitDocs I&rsquo;ve mentioned this one before, but it&rsquo;s a Dropbox-style document collaboration system using Git. It looks like it would be automated enough to get non-technical writers involved without too much hassle. CriticMarkup It&rsquo;s not live collaboration, but with the right tools it&rsquo;s possible to do some interesting things. MultiMarkdown Composer makes generating the markup, previewing and accepting/rejecting changes simple, and Marked makes it easy for all parties to see changes and before/after views. Quip I have to include Quip (for iOS), despite it being a rich text editor with a proprietary format. The collaboration features are excellent. hackpad This is a late addition, I forgot about it when first editing this post. Hackpad is a web-based rich text editor with excellent collaboration features. Thanks to Mr Ka for reminding me. Starting to Demo the Wolfram Language&ndash;Wolfram Blog For users like me, this video should come with a clear \"pornography\" warning. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["collaboration","draft","dropbox","editor","markdown","microsoft","multimarkdown","another","bonus","check","collaborative","composer","criticmarkup","draft","dropbox","gingko","gitdocs","hackpad","language","markdown","marked","mindmeister","multimarkdown","penflip","starting","thanks","typewrite","while","wolfram","accepting","active","additions","automated","based","before","boosting","brainstorming","brought","changes","clear","collaborate","collaborating","collaboration","collaborative","collaborators","comments","constantly","development","differentials","document","documents","editing","edition","editor","editors","enough","excellent","excursions","extensive","favorite","features","first","forgot","format","generating","great","growing","hackpad","hassle","haven","interesting","interface","invite","involved","keyboard","leaving","longer","looking","looks","makes","mapping","markup","mentioned","merging","navigation","ndash","options","partial","parties","partnership","pieces","pornography","possible","previewing","problem","productivity","projects","proofreaders","proprietary","public","quest","rejecting","reminding","right","rsquo","share","shortcuts","simple","software","solutions","structure","style","system","technical","testing","tools","unrelated","users","using","video","views","warning","while","writers"]
	},{
		"title": "Systematic 86 with Nick Honko",
		"url": "/2014/03/04/systematic-86-with-nick-honko/",
		"tags": ["podcast","systematic"],
		"date": "Mar 4<span>th</span>, 2014",
		"ts": "1393955640",
		"summary": "I was joined on Systematic this week by Nick Honko, a med student with a background in tech. He&rsquo;s been to 30+ countries in his lifetime and we talked about travel and travel tips, as well as a dive into study habits and tricks. Nick was easy to talk to and had a lot to share. It was, for me, a great conversation and a great episode. Check it out at 5by5",
		"keywords": ["honko","studios","systematic","travel","check","honko","systematic","background","conversation","countries","episode","great","habits","joined","lifetime","rsquo","share","student","study","talked","travel","tricks"]
	},{
		"title": "Marked 2.2 825 with Passive Voice detection",
		"url": "/2014/03/03/marked-2-dot-2-825-with-passive-voice-detection/",
		"tags": ["marked"],
		"date": "Mar 3<span>rd</span>, 2014",
		"ts": "1393881720",
		"summary": "Among a few fixes and new features, Marked 2 now has Passive Voice detection included in the Keyword Highlighting feature (⌘⇧K). I&rsquo;ve also expanded the default \"Use Alternate\" dictionary, which highlights words that you may want to find an alternate, less ambiguous or complex word for. To update your word list, you can copy any words you&rsquo;ve added, use the \"Reset to Defaults\" button, and paste back in any customizations. Get the update through Marked&rsquo;s auto-update feature (Marked->Check for Updates), or download a trial version at Marked2App.com. As I mentioned last time, if you&rsquo;re a Marked 1 customer looking for upgrade pricing, just shoot me an email. I&rsquo;m working on incorporating detection of long sentences, per HemingwayApp, but it&rsquo;s a bit more complex to do in Marked&rsquo;s web preview than it is in a textarea. I have a solution worked out, but it remains to be seen if it&rsquo;s practical (and useful enough to warrant the effort). The App Store version is coming along, and that takes higher priority at this point",
		"keywords": ["hemingwayapp","highlighting","keyword","passive","store","voice","alternate","among","check","defaults","hemingwayapp","highlighting","keyword","marked","passive","reset","store","updates","voice","added","alternate","ambiguous","brettterpstra","button","coming","complex","contact","customer","customizations","default","detection","dictionary","download","effort","email","enough","expanded","feature","features","fixes","hemingwayapp","higher","highlights","included","ldquo","looking","marked","mentioned","paste","point","practical","preview","pricing","priority","rdquo","remains","rsquo","sentences","shoot","solution","takes","textarea","through","trial","upgrade","useful","version","warrant","words","worked","working"]
	},{
		"title": "Markdown at work: Marked site licenses",
		"url": "/2014/02/28/markdown-at-work-marked-site-licenses/",
		"tags": ["markdown","marked","productivity"],
		"date": "Feb 28<span>th</span>, 2014",
		"ts": "1393599360",
		"summary": "Yes, this is a somewhat cheesy sales pitch, but I think it&rsquo;s important to get the word out&hellip; forgive me. Do you use a Markdown workflow at work? Do you want to speed up the process and get everyone on board? Marked is a great way to make sure everyone can see documents the same way as they evolve, effectively proofread them and even easily incorporate your unique scripts and tools into the process. It makes it possible to create consistent exports and document branding, all while working in plain text documents that don&rsquo;t require any special software or word processors. Marked 2 now has site licensing options available. Several companies have already taken advantage of this, but I wanted to make a public announcement about it and make sure everyone had the opportunity. You can buy whatever quantity you like, and there are tiered discounts available: 5&ndash;9, 10% off 10&ndash;19, 12% off 20&ndash;49, 15% off 50+, 20% off If you&rsquo;d like to take advantage of site licensing for Marked, just drop me a line and I&rsquo;ll provide a special purchase link for the quantity requested with the discount built in",
		"keywords": ["markdown","microsoft","processor","workflow","markdown","marked","several","advantage","announcement","available","board","branding","built","cheesy","companies","consistent","create","discount","discounts","document","documents","easily","effectively","everyone","evolve","exports","forgive","great","hellip","important","incorporate","licensing","makes","ndash","options","pitch","possible","process","processors","proofread","public","quantity","rsquo","sales","scripts","software","somewhat","special","speed","taken","think","tiered","tools","unique","wanted","whatever","while","workflow","working"]
	},{
		"title": "Realmac's Clear goes free, round 1",
		"url": "/2014/02/27/realmacs-clear-goes-free-round-1/",
		"tags": ["appstore","itunes","productivity"],
		"date": "Feb 27<span>th</span>, 2014",
		"ts": "1393510560",
		"summary": "As I mentioned previously, Realmac is making an effort to \"clear\" up confusion surrounding multiple versions of their app Clear. They plan to make the new, consolidated version of Clear available for free for two 24-hour periods, and the first one just started. Grab Clear in the next 24 hours and it&rsquo;s free. If you&rsquo;ve been one of the customers who was confused (or even annoyed) by the co-existence of Clear and Clear+, use this opportunity to get on track with the new version. This will only happen twice, as explained in Realmac&rsquo;s letter to customers",
		"keywords": ["store","itunes","clear","realmac","annoyed","available","clear","confused","confusion","consolidated","customers","effort","existence","explained","first","happen","hours","letter","making","mentioned","multiple","periods","previously","rsquo","started","surrounding","track","twice","version","versions"]
	},{
		"title": "Sponsor: AeroPress Timer",
		"url": "/2014/02/27/sponsor-aeropress-timer/",
		"tags": [],
		"date": "Feb 27<span>th</span>, 2014",
		"ts": "1393502400",
		"summary": "BrettTerpstra.com is sponsored by AeroPress Timer this week, an awesome iOS app for AeroPress lovers. AeroPress Timer is a simple and useful iOS app that helps you make better coffee, day in and day out. Featuring nine unique recipes by some of the best AeroPressers around, AeroPress Timer walks you step-by-step through each recipe, helping you combine your pour, stir, steep and plunge in just the right way to create that perfect cup. AeroPress Timer is the perfect companion for your AeroPress. The brilliance of the AeroPress is its ability to produce a diverse range of flavors, and AeroPress Timer was created for this very reason. Get AeroPress Timer today in the App Store or at AeroPressTimer.com. You can also find them on Instagram and Twitter",
		"keywords": ["aeropress","coffee","iphone","store","timer","aeropress","aeropresstimer","aeropressers","brettterpstra","featuring","instagram","store","timer","twitter","ability","awesome","brilliance","coffee","companion","create","created","diverse","flavors","helping","helps","lovers","plunge","produce","range","recipe","recipes","right","simple","sponsored","steep","through","today","unique","useful","walks"]
	},{
		"title": "Recap: Feb 26th, 2014",
		"url": "/2014/02/26/recap-feb-26th-2014/",
		"tags": ["recap"],
		"date": "Feb 26<span>th</span>, 2014",
		"ts": "1393459200",
		"summary": "Sponsor: ManyTricks (Feb 20th) A big thanks to ManyTricks &mdash; makers of Moom, Name Mangler, Desktop Curtain and many more &mdash; for sponsoring BrettTerpstra.com this week. Quick Tip: caffeinate your Terminal (Feb 20th) A scriptable Terminal command for waking up your system and keeping it awake. A Jekyll CDN with CloudFront (Feb 21st) Setting up a CDN for Jekyll (or just about any static blog) using Amazon&rsquo;s CloudFront service. Day One as project log (Feb 24th) I&rsquo;m finally starting to use Day One the way it was meant to be used, and it&rsquo;s helping my late-night-hacking memory a lot. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["cloudfront","computer","jekyll","mangler","monitor","twitter","amazon","brettterpstra","cloudfront","curtain","desktop","jekyll","mangler","manytricks","quick","recaps","setting","sponsor","terminal","awake","caffeinate","command","curated","digest","finally","format","hacking","helping","interest","keeping","makers","mdash","meant","memory","night","posts","project","quick","rsquo","scriptable","service","specifically","sponsoring","starting","static","subscribe","summary","system","thanks","updates","using","waking","weekly"]
	},{
		"title": "Web Excursions for February 25, 2014",
		"url": "/2014/02/25/web-excursions-for-february-25-2014/",
		"tags": ["bookmarks","browser"],
		"date": "Feb 25<span>th</span>, 2014",
		"ts": "1393338300",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. bachya/Sifttter-Redux A modification of Craig Eley&rsquo;s Sifttter &mdash; for collecting info from IFTTT to Day One &mdash; that can run autonomously and does not need to be manually activated. The aim of the project was to use a Raspberry Pi, but should be usable on any *NIX platform. Watch Steve Perlman demo his &lsquo;transformative&rsquo; pCell wireless tech Wireless (and cable) disruption. Via Caylan Larson. BrowserSync \"Time-saving synchronised browser testing.\" A very handy tool if you develop anything for the web. Have changes to your files trigger refreshes in multiple browsers, and have scrolls, clicks and form actions execute in all browsers simultaneously. SublimeWritingStyle Highlight \"weasel words\" and passive voice as you write in Sublime Text. I&rsquo;m using it and it works well. BttrLazyLoading Responsive Lazy Loading plugin for jQuery. It can lazy-load the correct image size for the current screen dimensions (and Retina), programatically or using data attributes. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["ifttt","jquery","perlman","raspberry","steve","backblaze","browsersync","bttrlazyloading","caylan","check","craig","highlight","ifttt","larson","loading","perlman","raspberry","redux","responsive","retina","sifttter","steve","sublime","sublimewritingstyle","watch","wireless","actions","activated","affordably","attributes","autonomously","bachya","backs","brought","browser","browsers","cable","changes","clicks","cloud","collecting","computer","develop","dimensions","disruption","entire","everything","excursions","execute","files","handy","image","jquery","lsquo","manually","mdash","multiple","pcell","partnership","passive","platform","plugin","programatically","project","refreshes","reliably","rsquo","saving","screen","scrolls","securely","simultaneously","synchronised","testing","today","transformative","trigger","usable","using","voice","weasel","wireless","words","works","write"]
	},{
		"title": "A preview of my Macworld talk, via MacVoices",
		"url": "/2014/02/24/a-preview-of-my-macworld-talk-via-macvoices/",
		"tags": ["interview","macworld","podcast"],
		"date": "Feb 24<span>th</span>, 2014",
		"ts": "1393278240",
		"summary": "Chuck Joiner was kind enough to invite me onto MacVoices #14048 to talk about my upcoming Macworld presentation: The Efficient Mac User (3/27 at 4pm, CF823, if you&rsquo;re going to be at Macworld). We talk about my motivation for the talk, what&rsquo;s going to be in it and who it&rsquo;s going to help. If you are going to be at Macworld, by all means look me up. I&rsquo;m going (almost entirely) on my own dime, so I&rsquo;ll have lots of time to meet up with folks and grab coffees, beers and breakfasts",
		"keywords": ["apple","chuck","itunes","joiner","macworld","observer","podcast","chuck","efficient","joiner","macvoices","macworld","almost","beers","breakfasts","coffees","enough","entirely","folks","going","invite","motivation","presentation","rsquo","upcoming"]
	},{
		"title": "Day One as project log",
		"url": "/2014/02/24/day-one-as-project-log/",
		"tags": ["dayone","productivity"],
		"date": "Feb 24<span>th</span>, 2014",
		"ts": "1393250400",
		"summary": "I&rsquo;ve spent a lot of time automating my Day One journal. Slogger and various other scripts keep it populated with my social and work logs. I recently decided to start logging my time better in general, so I&rsquo;ve started using Day One \"properly,\" at least part of the time. I constantly find myself getting lost in projects and staying up too late, and then forgetting what all I worked on in the wee hours of the morning. It&rsquo;s why I use my \"What was I doing?\" system (and previously Ian Beck&rsquo;s Scratchpad setup) and log one-line descriptions when I switch tasks. It&rsquo;s also one of the reasons for this blog, but that&rsquo;s only helpful when I&rsquo;ve finished something. This is all fine and dandy, but I always forget to do it in the moments where I&rsquo;m in the zone and it&rsquo;s most important that I keep track. As an experiment, I set up a system with and Growl. Every 60 minutes my script would check if I was still working on my machine (IOKit activity, if I hadn&rsquo;t touched a keyboard or mouse for more than 30 seconds, it would skip the reminder) and pop up a question in Growl. It would note what the last \"WWID?\" item I recorded was and ask me if I was working on anything new. If I click the notification, it opens my \"What Was I Doing?\" note in nvALT. It has its drawbacks and quirks, though. Then I remembered, with a forehead smack, that Day One has a \"reminders\" feature that I&rsquo;ve never used. I decided to try it out. I set it up to remind me hourly. Now it pops up a little entry window every hour and I can scrawl a note, add tags (via hashtags), and save. Day One doesn&rsquo;t even need to be running. I can also write longer entries if the mood strikes me. It&rsquo;s working brilliantly. I tag short status updates with . It makes it easy to sort and see a list of project and task time in chronological order. The first line is always short and concise, as it shows up bold in Day One and makes for easy scanning. Any additional notes or pontifications go below that. At first I thought that my Day One journal would get messy with all the short updates (messier than Slogger already makes it). Day One actually turns out to be well-designed for just this sort of thing (suprise! Yes, I&rsquo;m slow). With the first row highlighting and tag filtering, scanning my last few days of work is quite elegant. I&rsquo;ve been doing it for a week now, and it&rsquo;s saved my failing memory almost daily. Yes, sometimes the&hellip;",
		"keywords": ["growl","keyboard","preferences","shortcut","system","cheers","command","doing","entry","first","growl","iokit","keyremap","keyboard","macbook","marked","preferences","return","scratchpad","shortcuts","slogger","system","twitter","accidentally","activity","added","allow","almost","annoying","arrow","automated","automating","awesome","below","between","brettterpstra","brilliantly","capitalization","check","chronological","class","click","clicking","clued","concise","consistent","constantly","context","couple","daily","dandy","darkness","dayone","dayoneapp","decided","default","descriptions","designed","different","discover","doesn","doing","drawbacks","duplicated","editing","elegant","entries","entry","experiment","failing","feature","filtering","finish","finished","first","forehead","forget","forgetting","friend","functions","geekening","general","getting","going","growl","hands","handy","hashtags","height","helpful","highlighter","highlighting","hotkey","hourly","hours","https","image","important","importing","index","intuitive","journal","keyboard","keyremap","language","later","launchd","ldquo","light","links","little","loading","logging","longer","macbook","machine","macosx","makes","media","memory","messier","messy","minutes","modes","moments","morning","mouse","myself","navigation","noscript","notes","notification","nvalt","opens","original","overridden","paging","personal","picked","picture","plaintext","pontifications","populated","popup","press","previously","problem","project","projects","properly","quirks","rabbit","rdquo","reasons","recently","recorded","remembered","remind","reminder","reminders","right","rouge","rsquo","running","saved","scanning","scatterbrains","scratchpad","scrawl","script","scripts","scroll","seconds","sections","setup","short","shortcut","shows","single","slogger","smack","snooze","social","software","sometimes","source","specifying","spent","srcset","started","status","staying","strikes","suprise","switch","system","tagamac","taking","tasks","thought","through","title","topic","topmost","touched"]
	},{
		"title": "Maccast 476",
		"url": "/2014/02/22/maccast-2014-dot-02-dot-21/",
		"tags": ["interview","podcast"],
		"date": "Feb 22<span>nd</span>, 2014",
		"ts": "1393103280",
		"summary": "I had a good time talking with Adam Christanson on Maccast Episode 476 this week. To quote Adam&rsquo;s summary of the show: Ever since I took the Maccast on as my full time gig many have asked me about the experience, but I’ve never really discussed it. Brett Terpstra, just recently left his full time gig to work on his own projects so I thought it would be a perfect time to have him on and tackle this topic. It was a fun conversation and went more in depth on my own story and approach to coding than I typically do. Have a listen",
		"keywords": ["apple","brett","maccast","macintosh","terpstra","brett","christanson","episode","maccast","terpstra","approach","asked","blockquote","coding","conversation","depth","discussed","experience","listen","maccast","projects","quote","recently","rsquo","since","story","summary","tackle","talking","thought","topic","typically"]
	},{
		"title": "A Jekyll CDN with CloudFront",
		"url": "/2014/02/21/a-jekyll-cdn-with-cloudfront/",
		"tags": ["amazon","jekyll","webdesign"],
		"date": "Feb 21<span>st</span>, 2014",
		"ts": "1392991200",
		"summary": "I recently added a CloudFront CDN for all static assets on this site. Adding a CDN to Jekyll isn&rsquo;t terribly difficult, but there are a few steps. I found this post, which was very helpful. It&rsquo;s primarily for Rails sites, so I&rsquo;m posting some more detail for Jekyll sites here. The goal is to serve all static assets from Amazon&rsquo;s content distribution network for stability and consistent load times worldwide. The process outlined below uses the pull method, which means I never have to upload anything. When an asset is requested from the CDN, it checks the cache and, if it doesn&rsquo;t already have the file, it grabs it from your website. More about the final results at the end. While much of this article is only germane to Jekyll, the basic setup can be ported to just about any website with considerations for the plugin changes and templating style. If you&rsquo;re interested in brewing your own CDN, this should help you get started. First, you need an Amazon Web Services (AWS) account. If you already have an Amazon account, this should be easy. Go to the management panel and open CloudFront. You don&rsquo;t need to create a distribution yet, we&rsquo;ll do that with a script: You can set up a CNAME if desired Add a key to your Jekyll installation&rsquo;s and set it to the distribution url. Make sure there&rsquo;s no trailing slash. I&rsquo;ll get back to this in a second. In order to be able to easily invalidate cache objects on CloudFront, you&rsquo;ll want to implement a versioning system for your assets. I wrote about the process with some additional information recently, but here are the basics. Add a key in and set it to a starting number (1?). Once implemented in your templates, busting the cache for the whole site is just a matter of incrementing the number. You can do this manually or automatically with a Rake task, as detailed in my previous post on the subject. In .htaccess, set it up to serve original files when versioned filenames are requested. This allows you to request , and when the CDN receives the request and polls your site, your site will serve . Incrementing the version number tells the CDN to grab a new copy without having to maintain locally-versioned files. I added some headers to my httpd.conf file to improve caching. I&rsquo;m still experimenting with these settings, and there are some points I&rsquo;m not certain about. If you have access to your servers config, you can try these&hellip;",
		"keywords": ["amazon","cloudfront","content","delivery","javascript","jekyll","network","&#39;ppf&#39;","&#39;production&#39;","&#39;your","adding","amazon","amsterdam","apache","boilerplate","brandon","cname","cachebusting","callerreference","check","cloudfront","comment","content","cookie","create","customorigin","dnsname","directory","distributionconfig","enabled","expiresactive","expiresdefault","filename","felix","fileetag","first","frederic","header","hemberger","ifmodule","incrementing","javascript","jekyll","keepalive","leave","liquid","mathis","multiviews","optionally","options","origin","originprotocolpolicy","plugins","rails","remote","requestheader","rewritecond","rewriterule","running","schfer","services","setup","templates","tests","while","yslow","yoursite","absolute","access","account","added","adding","aforementioned","alive","allows","almost","amazon","amazonaws","another","apache","argument","article","asset","assets","automatically","average","avoid","awssecretaccesskeys","backlink","backslash","backslashes","basic","basics","before","below","blank","blanking","blatant","blogging","boilerplate","brettterpstra","brewing","broken","busting","cache","cachebusting","caching","certain","cfcurl","change","changes","charset","check","checking","checks","class","cloudfront","clues","comment","config","configuration","considerations","consistent","console","container","contains","content","context","cookies","count","couple","create","created","creating","decrease","default","defaults","deploy","desired","detail","detailed","developer","developing","development","difficult","display","distribution","doesn","download","downloads","easily","elements","empty","encoding","endif","endnotes","everything","experimenting","expiration","external","extract","false","faring","filename","filenames","files","first","fnref","footnote","footnotes","forgetting","formatting","found","function","generated","generating","generator","germane","github","glaring","going","grabs","hacked","haven","having","headers","height","helpful","highlight","highlighter","homebrew","hostname","htaccess","httpd","https","ifmodule","image","implemented","improve","improved","including","increment","incrementing","information","inserting","installation","interested"]
	},{
		"title": "Quick Tip: caffeinate your Terminal",
		"url": "/2014/02/20/quick-tip-caffeinate-your-terminal/",
		"tags": ["macos","quicktip","terminal"],
		"date": "Feb 20<span>th</span>, 2014",
		"ts": "1392912000",
		"summary": "Another random OS X command line expos&eacute;&hellip; There&rsquo;s a command called that does exactly what the app Caffeine does &mdash; keep your computer from sleeping &mdash; but it lets you do it from scripts and the command line. This command can be run in a couple of ways. First, you can add a timer and tell it to prevent sleep for a certain duration. Alternatively, you can attach it to another command to keep the computer awake as long as that process is running, allowing the system to sleep after the command finishes. It handles different aspects of system sleep: display sleep, idle sleep, disk sleep and \"system sleep.\" It&rsquo;s also handy to know that it can wake up your display through a script or SSH session. The argument is based on seconds, so an hour is 60 * 60 (3600). Note that you can still sleep your computer manually when caffeinate is running. In case you&rsquo;re unfamiliar, the ampersand at the end causes the command to run in the background, freeing up your command line. If you&rsquo;re running it from something like an AppleScript or Automator, this won&rsquo;t help. Your script or workflow will keep running until the timer ends. Depending on how you trigger it, that might not be a big deal. In LaunchBar you, you can activate it with Option-Return instead of just Return and it will run the whole script in the background. I&rsquo;m not sure how Alfred or others handle this. replicates user activity. It causes the same reaction as moving a mouse or hitting a key after your Mac sleeps. Without a argument to set a timeout, it&rsquo;s supposed to default to 5 seconds, but it seems to hang around a lot longer than that on my system. A single second of user activity is all it takes to wake a machine. If you need to wake up a monitor from another machine and have a keyless login set up, you can run from a script or the command line to give it a wakeup call. Or keep it awake for a period of time with That&rsquo;s really all there is to it. Just another semi-hidden OS X-only command that you might have missed",
		"keywords": ["applescript","caffeinate","macintosh","sleep","alfred","another","applescript","automator","caffeine","depending","first","launchbar","return","terminal","activate","activity","allowing","ampersand","another","argument","aspects","attach","awake","background","based","caffeinate","called","causes","certain","command","computer","couple","default","different","disks","display","eacute","examples","expos","finishes","freeing","handle","handles","handy","hellip","hidden","hitting","idling","keeps","keyless","login","longer","machine","manually","mdash","missed","monitor","mouse","moving","options","others","prevent","prevents","process","random","reaction","replicates","rsquo","running","script","scripts","second","seconds","seems","session","single","sleep","sleeping","sleeps","supposed","system","takes","through","timeout","timer","trigger","unfamiliar","wakeup","whole","workflow"]
	},{
		"title": "Sponsor: ManyTricks",
		"url": "/2014/02/20/sponsor-manytricks/",
		"tags": [],
		"date": "Feb 20<span>th</span>, 2014",
		"ts": "1392897600",
		"summary": "Thanks to ManyTricks for sponsoring BrettTerpstra.com this week. You may know of ManyTricks as the developers of Moom, my window manager of choice1. Moom makes the green button on your application windows do some very cool things, like resizing your window to an array of dimensions and screen positions with a click. It can also save window layouts you can trigger with a hotkey, or even automatically load them when you connect or disconnect a display. It also includes tools for moving windows across displays, and you can assign any action to a keyboard shortcut. They make so much more than just Moom, though, and there are a few you should check out. Name Mangler is a batch file renamer, now in version 3. It features multi-step renaming for complex tasks and can handle thousands of files in seconds. Witch has been around for a long time and is still one of the coolest replacements for the built in task switcher. Instead of using Command-Tab to switch apps, you can set it to bring up a list of open windows, and switch windows instead. Desktop Curtain hides desktop clutter by displaying an image over not only your desktop icons and wallpaper, but over inactive windows as well. You can toggle it on and off via hot key, and choose from your own images or use the current system desktop picture. I&rsquo;m loving this one for screencasting, but it&rsquo;s also great just for concentration. There are more: Usher is a great way to manage and view your movies. Time Sink is a simple app that tracks window titles and lets you create \"pools\" of activities for tracking your time. The impressive Butler is a utility that brings multiple clipboards, iTunes control, app launching, scripting and more. And yes, there&rsquo;s even more beyond that. It&rsquo;s an impressive collection. You can find them all at the ManyTricks website, and you can download a free trial for any of them. Then you can then buy them directly or in the App Store. Thanks again to ManyTricks for supporting BrettTerpstra.com, and cheers to independent developers. You can follow @manytricks to keep up with all they do! I have so many shortcuts set up, I had to make a Cheaters cheat sheet for myself to get them memorized.&nbsp;↩",
		"keywords": ["itunes","keyboard","mangler","shortcut","store","usher","window","brettterpstra","butler","cheaters","command","curtain","desktop","mangler","manytricks","store","thanks","usher","witch","across","action","activities","again","array","assign","automatically","backlink","batch","beyond","brett","brettterpstra","bring","brings","built","button","campaign","cheat","check","cheers","choice","choose","class","click","clipboards","clutter","collection","complex","concentration","connect","control","coolest","create","desktop","developers","dimensions","directly","display","displaying","displays","download","endnotes","features","files","fnref","footnote","footnotes","general","great","green","handle","height","hides","hotkey","https","itunes","icons","image","images","impressive","inactive","includes","independent","keyboard","launching","layouts","ldquo","loading","loving","makes","manager","manytiricks","manytricks","media","medium","memorized","movies","moving","multi","multiple","myself","noscript","noteref","original","picture","pools","positions","rdquo","renamer","renaming","replacements","resizing","reversefootnote","rsquo","screen","screencasting","scripting","seconds","sheet","shortcut","shortcuts","simple","source","sponsor","sponsoring","srcset","strong","supporting","switch","switcher","system","tasks","thousands","title","titles","toggle","tools","tracking","tracks","trial","trigger","twitter","uploads","using","utility","version","wallpaper","website","width","window","windows"]
	},{
		"title": "Recap: Feb 13th, 2014",
		"url": "/2014/02/19/recap-feb-13th-2014/",
		"tags": ["recap"],
		"date": "Feb 19<span>th</span>, 2014",
		"ts": "1392854400",
		"summary": "I&rsquo;m going to try doing recap posts of articles on the blog for the previous week. On slower blogging weeks they&rsquo;ll be a little short, but I think they&rsquo;ll be useful for people who want a very low-traffic way to keep up with what I consider the most interesting, and a way to spot something you might have missed over the course of a busy week. They&rsquo;ll be published on Wednesdays, and there&rsquo;s an RSS feed that you can use to get notifications for just these posts. You can also bookmark the collection if you want to check back manually. Sponsor: The PDFpen family from Smile (Feb 13th) A big thanks to this week&rsquo;s sponsor, the PDFpen Family from Smile. Quick Tip: Automating your Mac&rsquo;s wifi power (Feb 15th) Riddle me this: why would you want to script your wi-fi state? If you have an answer, here&rsquo;s your solution. iTunesIcon 2.1 with easy icon sizing (Feb 16th) iTunesIcon, my script/application for fetching and saving any iTunes App Store or Mac App Store application icon is coming along nicely. The latest update lets you specify the returned icon size with a simple syntax. Automating dynamic date math in TextExpander (Feb 17th) This was a fun one: you can insert relative dates into TextExpander snippets automatically when they run. SearchLink 2.1 (Feb 18th) SearchLink, my System Service for looking up web links while writing without leaving your editor took a leap forward this week. If you write in Markdown, it&rsquo;s an awesome tool, but the latest version adds additional formats and capabilities that should be of interest to everyone. Remote pbcopy on OS X systems (Feb 19th) A handy tip for anyone who works over SSH connections. Make clip to your local clipboard when run on a remote system. Recaps are a quick, curated summary of one week&rsquo;s posts on this site. You can keep up on the site with RSS, or subscribe specifically to the Recaps and get weekly updates in digest format",
		"keywords": ["brettterpstra","markdown","pdfpen","smile","automating","family","markdown","pdfpen","quick","recaps","remote","riddle","searchlink","service","smile","sponsor","store","system","textexpander","wednesdays","answer","anyone","articles","automatically","awesome","blogging","bookmark","capabilities","check","clipboard","collection","coming","connections","consider","curated","dates","digest","doing","dynamic","editor","everyone","family","fetching","format","formats","going","handy","itunes","itunesicon","interest","interesting","latest","leaving","links","little","local","looking","manually","missed","nicely","notifications","pbcopy","people","posts","published","quick","recap","relative","remote","returned","rsquo","saving","script","short","simple","sizing","slower","snippets","solution","specifically","specify","sponsor","subscribe","summary","syntax","system","systems","thanks","think","traffic","updates","useful","version","weekly","weeks","while","works","write","writing"]
	},{
		"title": "Remote pbcopy on OS X systems",
		"url": "/2014/02/19/remote-pbcopy-on-os-x-systems/",
		"tags": ["scripting","terminal"],
		"date": "Feb 19<span>th</span>, 2014",
		"ts": "1392818400",
		"summary": "I&rsquo;ve been using this great tip from Sean Coates for years now on my remote Linux servers. It allows you to simulate the command (which copies piped text to the OS X clipboard) on remote SSH servers, but copies to your local clipboard instead. I&rsquo;ve primarily been using OS X servers for a while now, though, and it took a few changes to get it working. The trick uses netcat (, which I think is included in the standard OS X distribution) to pipe text over an SSH connection to a local listener that passes it to . The arguments for netcat are slightly different on OS X, though. It also makes the assumption that you don&rsquo;t already have the command on the server. If the server is a Mac, you do, and it would be a pity to override that1. Here are solutions to both problems. If you&rsquo;re interested in trying this, first follow Sean&rsquo;s instructions for the basic setup. Create the launchd listener and set up SSH forwarding in . Note that once you set up the forwarding of port 2224, you&rsquo;ll sometimes get a warning about forwarding failing when logging into some servers. This is harmless. When it comes time to create the shell script on the remote machine, create one called instead, with the contents below2: Make it executable (). Then, in your remote , add the line: That will replace the default pbcopy command with the script above, which checks whether you&rsquo;re in an SSH session and runs or the original accordingly. Note that the argument in Sean&rsquo;s version is invalid on for this setup. It needs to be in BSD (OS X), which closes the connection when STDIN reaches EOF (end of file). That simple change and you&rsquo;re good to go. Instead of the if statement in the shell script, you could also check for the SSH session (using the same check for ) in your and only alias if you&rsquo;re logged in remotely. Your choice. Now, when you&rsquo;re logged in on the remote OS X system over SSH, you can type or pipe the output of a command to and it will show up on your local clipboard. It&rsquo;s the same result you&rsquo;d expect if you were just working in Terminal locally, so it requires no change of habits. Handy stuff. Except where your remote machine is headless and only ever accessed through SSH. In that case, throw caution to the wind.&nbsp;↩ If the SSH detection in the script doesn&rsquo;t work, check out this answer on unix.stackexchange.com.&nbsp;↩",
		"keywords": ["coates","computer","linux","remote","secure","server","shell","client","coates","create","except","handy","linux","session","stdin","terminal","above","accessed","alias","allows","answer","argument","arguments","assumption","backlink","basic","below","blogs","brettterpstra","called","caution","change","changes","check","checks","chmod","choice","class","clipboard","closes","comes","command","config","contents","controlled","copies","create","credit","default","detect","detection","different","distribution","doesn","download","endnotes","executable","expect","failing","filename","first","fnref","footnote","footnotes","forwarding","great","habits","harmless","headless","height","highlight","highlighter","https","image","included","instructions","interested","invalid","language","launchd","listener","loading","local","localhost","locally","logged","logging","machine","makes","media","needs","netcat","noscript","noteref","original","output","override","passes","pbcopy","picture","piped","plaintext","primarily","problems","profile","questions","reaches","remote","remotely","replace","requires","reversefootnote","rouge","rpbcopy","rsquo","script","seancoates","server","servers","session","setup","shell","simple","simulate","slightly","solutions","sometimes","source","sourceforge","srcset","stackexchange","standard","statement","stuff","system","think","through","throw","title","trick","trying","uploads","using","version","warning","where","while","width","working","years"]
	},{
		"title": "The Shoots & Leaves winners",
		"url": "/2014/02/18/the-shoots-and-leaves-winners/",
		"tags": ["appstore","giveaway","iphone"],
		"date": "Feb 18<span>th</span>, 2014",
		"ts": "1392749400",
		"summary": "Thanks to everyone who entered for the Shoots & Leaves Valentine&rsquo;s Day Giveaway! Here are the lucky winners (who should already have recieved an email with their code): If you didn&rsquo;t just get a free copy, check it out on the App Store",
		"keywords": ["apple","iphone","itunes","store","christi","giveaway","leaves","lehman","matthias","rempe","shoots","steph","store","thanks","valentine","check","email","entered","everyone","lucky","recieved","rsquo","winners"]
	},{
		"title": "SearchLink 2.1",
		"url": "/2014/02/18/searchlink-2-dot-1/",
		"tags": ["search","searchlink","service"],
		"date": "Feb 18<span>th</span>, 2014",
		"ts": "1392739200",
		"summary": "I&rsquo;ve bumped SearchLink up to version 2.1. It has several new features that make it an all-around powerhouse for linking. The original SearchLink syntax () was designed with the idea that you would mark links as you write and then run SearchLink on the entire document when you were finished. That still works, of course. I found, though, that I was constantly wanting SearchLink&rsquo;s functionality in more trivial places. Adding the default to Google search was the first step, but making it easy to search all of SearchLink&rsquo;s services without having to type brackets and parentheses was needed. In the last update, I added the ability to select any text and run a Google search on it. Now, you can do the same thing with an at the beginning to specify what service to search. Selecting just the text and running SearchLink returns . You can also skip the Markdown formatting by adding \"!!\" to the end of the search terms. If you just want the url for the link above, you would use and the result would be the plain url. This is especially handy for apps like LaunchBar, where you can type input to the Service and have the link returned for immediate opening or copying. In fact, in LaunchBar you can type \"slink\" to target the Service, then type Space, enter in the field and it will return the url for Ember on the Mac App Store to LaunchBar. Hit Enter again to open it in your browser, or C to copy it to your clipboard. I also made a LaunchBar action that makes allows you to skip the bangbang (\"!!\") at the end. You can also add \"&#2C6;\" at the end of the search string to copy the result to the clipboard. This only works with the new syntax (no brackets) and only runs when it&rsquo;s returning a single link or url. The \"&#2C6;\" can be before or after a \"!!\", if it exists. There&rsquo;s a new tool, too, that lets you turn simple usernames into Twitter and App.net links. For Twitter use , and for App.net use . To quickly type a link to a user, use something like and run SearchLink on just that text. You&rsquo;ll get . Again, you can get just the link and copy it to your clipboard at the same time with 1. Lastly, I added to the search keywords for finding iTunes podcasts. Also, the config file format has changed. It&rsquo;s now a YAML file that&rsquo;s easier to edit (and easier to parse in the script). You can grab a copy of the new format from this gist and copy any existing configuration options from an old config file into it. Save it as . You can opt&hellip;",
		"keywords": ["google","launchbar","markdown","search","searchlink","twitter","adding","again","automator","changelog","donate","download","ember","enter","google","lastly","launchbar","markdown","published","searchlink","selecting","service","space","store","tuvbv&#39;","twitter","updated","video","youtube","ability","above","action","added","adding","affiliate","again","allows","alphanumeric","apple","assume","background","backlink","bangbang","before","beginning","bottom","brackets","brettterpstra","browser","bumped","cjqpeqeudse","changed","changelog","characters","class","clipboard","config","configuration","constantly","container","copying","cover","default","defaults","description","designed","disappear","dlbox","document","donate","download","downloads","easier","editor","endnotes","enter","entire","especially","exists","fathom","features","field","figure","finding","finished","first","fnref","followed","footnote","footnotes","format","formatting","found","functionality","github","gradient","handy","having","height","hellip","highlighter","https","itunes","image","immediate","information","input","itunes","keywords","language","latest","launchbar","ldquo","leaving","linear","linking","links","loading","makes","making","marked","media","needed","noscript","noteref","onclick","opening","options","original","padding","parentheses","parse","picture","places","plaintext","podcasts","potential","powerhouse","project","projects","published","quick","quickly","rdquo","releases","repeat","return","returned","returning","returns","reversefootnote","rouge","rsquo","running","sales","script","search","searches","searchlink","service","services","settings","several","showing","simple","single","slink","source","specify","srcset","starts","string","style","suggest","syntax","target","terms","throughout","thumbnail","thumbnails","title","trackgoal","trivial","ttscoff","twitter","twitterfuture","updated","uploads","usernames","version","video","videoid","wanting","watch","where","width","workflow","works","write","youtube"]
	},{
		"title": "Realmac's solution to Clear confusion",
		"url": "/2014/02/18/realmacs-solution-to-clear-confusion/",
		"tags": ["appstore","itunes"],
		"date": "Feb 18<span>th</span>, 2014",
		"ts": "1392732000",
		"summary": "Realmac has been experiencing some customer confusion surrounding Clear, their popular to-do list app. The iOS version has diverged into Clear and Clear+, and they ceased updates to the original Clear while keeping it on the App Store. It upset existing customers, and confused new ones. Because Apple doesn&rsquo;t provide any way to migrate users, Realmac&rsquo;s solution is to make a new, re-consolidated version of Clear and offer it for free for short periods of time. It will almost certainly mean some financial loss on their part, but they&rsquo;re making it apparent that they feel it&rsquo;s the \"right thing\" to do. Given there aren&rsquo;t any other (obvious) choices, I applaud the decision. There will be two periods where Clear is free. The goal is to migrate all existing Clear and Clear+ customers to the new version. You can sign up to receive announcements of the sale periods and read more about the decision in Realmac&rsquo;s letter to customers",
		"keywords": ["apple","realmac","store","apple","because","clear","realmac","store","almost","announcements","applaud","ceased","certainly","choices","confused","confusion","consolidated","customer","customers","decision","diverged","doesn","experiencing","financial","keeping","letter","making","migrate","obvious","offer","original","periods","popular","receive","right","rsquo","short","solution","surrounding","updates","upset","users","version","where","while"]
	},{
		"title": "CMD+Space #84",
		"url": "/2014/02/17/cmd-plus-space-number-84/",
		"tags": ["interview","podcast"],
		"date": "Feb 17<span>th</span>, 2014",
		"ts": "1392673500",
		"summary": "I had a lot of fun talking to Myke Hurley on CMD+Space this week. I won&rsquo;t lie, it was all about me. We talk about transitioning to an independent career, Marked 2 and all of my other projects. I might even have dropped some scoops",
		"keywords": ["hurley","podcast","studios","check","hurley","marked","space","career","dropped","episode","independent","projects","rsquo","scoops","talking","transitioning"]
	},{
		"title": "Automating dynamic date math in TextExpander",
		"url": "/2014/02/17/automating-dynamic-date-math-in-textexpander/",
		"tags": ["automator","scripting","shell","snippet","textexpander","tools"],
		"date": "Feb 17<span>th</span>, 2014",
		"ts": "1392645600",
		"summary": "Here&rsquo;s a TextExpander trick for automating dynamic portions of snippets. It&rsquo;s a way to allow the power of shell scripting inside of regular text snippets, avoiding extra fill-ins or running two snippets. First, a short backstory. When I set up the Sponsor posts for my site, I always schedule them for 6am on the next Thursday, but I rarely write them on the same day of the week. Thus, I can&rsquo;t just use TextExpander&rsquo;s date math tools. I have a TextExpander snippet that fills in a skeleton sponsor post with all of the necessary headers, tags, categories and other specifics. However, if I run that snippet, I also have to run my \"Jekyll Make-a-date\" snippet in addition to get the right date in for scheduling1. In TextExpander, you can embed snippets inside of other snippets, but it doesn&rsquo;t work with shell snippets that require input, like the Make-A-Date snippets. Shell snippets that run on their own, though, work perfectly. So, I hardcoded a date string into a trimmed down version of the older, PHP-based Make-A-Date snippet and now my sponsor snippet always includes the date for next Thursday. This idea can be modified to create snippets for whatever date you need, and the output can be changed to match your requirements. I&rsquo;ll show you how. First, create a new snippet and give it a label. In my case, it&rsquo;s just called \"Next Thursday.\" Set the content type at the top of the edit field to \"Shell Script.\" Modify the script below (instructions follow it) and paste it into the field. Assign an abbreviation. This is how you&rsquo;ll reference it in other snippets. Line 4 ($input) is the string to convert. \"next thursday 6am\" will be interpreted as the next available Thursday. If it&rsquo;s Wednesday, that&rsquo;s going to be interpreted as \"tomorrow,\" but if it&rsquo;s Thursday or later in the week (or earlier next), it will look forward. You can experiment with various date strings to find one that suits your needs. PHP is not the best natural language processor, but we don&rsquo;t need too much flexibility in this case. Line 5 ($dateformat) specifies the output of your date. It uses the PHP date string format, which you can find in the PHP documentation. The one in the code above creates \"2014-02-20 06:00\", which is what I need for my blog headers. You can make it more verbose and customize it just by changing the characters in the string based on the PHP documentation. You can fit that anywhere in the&hellip;",
		"keywords": ["script","shell","snippet","textexpander","america","applescript","assign","chicago","creating","customizing","first","however","jekyll","modify","python","script","shell","sponsor","textexpander","thursday","tools","using","wednesday","abbreviation","above","allow","almost","another","anywhere","automate","automatically","automating","available","avoiding","backlink","backstory","based","below","between","brettterpstra","called","categories","changed","changing","characters","check","class","collection","content","convert","create","creates","creating","customize","customizing","dateformat","dates","default","doesn","dynamic","earlier","easily","embed","endnotes","execute","experiment","extra","field","fills","finds","flexibility","fnref","footnote","footnotes","format","function","going","hardcoded","harness","headers","height","highlight","highlighter","https","image","includes","input","inside","instructions","interpreted","label","language","later","ldquo","loading","manual","match","media","minutes","modified","natural","necessary","needs","nextthursday","noscript","noteref","older","original","output","paste","perfectly","picture","plaintext","portions","posts","powers","processor","projects","rarely","rdquo","recap","regular","reversefootnote","right","rouge","rsquo","running","schedule","scheduling","screenshot","script","scripting","seconds","service","setup","shell","short","skeleton","smilesoftware","snippet","snippets","source","specifics","specifies","sponsor","srcset","string","strings","strtotime","suits","takes","technique","textexpander","thursday","timestamp","timezone","title","tomorrow","tools","trick","trimmed","uploads","using","various","verbose","version","whatever","width","works","write"]
	},{
		"title": "Marked in the SuperStacked Mac Bundle",
		"url": "/2014/02/16/marked-in-the-superstacked-mac-bundle/",
		"tags": ["marked"],
		"date": "Feb 16<span>th</span>, 2014",
		"ts": "1392582600",
		"summary": "Marked 2 is in the SuperStacked Mac Bundle, which is running right now. It includes 8 apps (including Marked 2), as well as The Big Stack Design Bundle, for $29. The bundle actually includes a few things you might not already have (for once). If you&rsquo;re looking to rearrange/redesign your home, Live Interior 3D is pretty cool, and FX Photo Studio is one of the better apps for adding tints, effects and more to your photos. It includes several photo manipulation apps, actually, all of which are handy if you&rsquo;re not a PhotoShop pro. It also includes Sparkbox, which I haven&rsquo;t used much but is a good app for collecting screenshots and images. The Big Stack Design Bundle is huge, with 4400 vectors, a couple thousand icons, and a ton of stock images (including 180 isolated images). That plus Marked alone (an SRP of $512) is, in my opinion (and mathematically), worth at least $29. Even if you already have Marked, $29 is a good price for any two of these apps. Unless the only two you don&rsquo;t already have are Focus 2 and ColorStrokes, which would be a combined value of $18. That would be highway robbery. Pick up the bundle at StackSocial",
		"keywords": ["adobe","bundle","photo","photography","photoshop","stacksocial","stock","studio","superstacked","xscope","bundle","colorstrokes","design","focus","interior","marked","photo","photoshop","sparkbox","stack","stacksocial","studio","superstacked","adding","alone","bundle","collecting","couple","effects","handy","haven","highway","icons","images","includes","including","isolated","looking","manipulation","mathematically","photo","photos","price","rearrange","redesign","right","robbery","rsquo","running","screenshots","several","stock","thousand","tints","value","vectors","worth"]
	},{
		"title": "iTunesIcon 2.1 with easy icon sizing",
		"url": "/2014/02/16/itunesicon-2-dot-1-with-easy-icon-sizing/",
		"tags": ["iphone","itunesicon","macos","scripting","search"],
		"date": "Feb 16<span>th</span>, 2014",
		"ts": "1392566400",
		"summary": "You may recall my iTunesIcon app that lets you easily search for and pull an icon from any App Store (Mac or iTunes) app. I posted a minor update recently that I forgot to mention: you can now specify the size of the returned icon. To choose a small (160px), medium (512px) or large (1024px+) icon, use a tilde (~) followed by \"s\", \"m\", or \"l\". For example, to grab a medium size icon for the iPad version of OmniFocus, I would use: It will default to the largest size if you don&rsquo;t specify. That is all. The gist is updated with the latest code, and you can download the standalone app below. I also have a version for LaunchBar (that I prefer to the app). If there&rsquo;s any interest in that, leave a comment and I&rsquo;ll get something posted. ItunesIcon v2.4 Download ItunesIcon v2.4 An application for quickly retrieving the high-res icon for any Mac or iOS apps. Published 02/15/14. Updated 09/01/21. Changelog Donate &bull; More info&hellip",
		"keywords": ["iphone","itunes","store","changelog","donate","download","itunesicon","launchbar","omnifocus","project","published","store","updated","below","choose","comment","default","download","easily","example","followed","forgot","hellip","itunes","itunesicon","interest","largest","latest","leave","medium","mention","minor","posted","prefer","quickly","recall","recently","retrieving","returned","rsquo","search","small","specify","standalone","tilde","updated","version"]
	},{
		"title": "Quick Tip: Automating your Mac's wifi power",
		"url": "/2014/02/15/quick-tip-automating-you-macs-wifi-power/",
		"tags": ["applescript","automation","productivity","quicktip","scripting","terminal"],
		"date": "Feb 15<span>th</span>, 2014",
		"ts": "1392480000",
		"summary": "This is a quick one, and many of you probably know it, but you can quickly toggle wifi on your Mac with the command. To turn your wifi on: Then you can toggle it just by typing or . Note that, depending on your network interfaces, en0 may need to be changed. You can find out what all of your network hardware addresses are with . Just look for the labeled \"Wi-Fi.\" I turn my MacBook Air&rsquo;s wifi off with ControlPlane when I&rsquo;m docked to my Thunderbolt Display (it has an ethernet line). I&rsquo;m using the above script with UnDock to turn it back on before I disconnect (ControlPlane would only do that afterwards). With my wifi set to a higher priority than ethernet in Network Preferences, this allows me to make fairly seamless network switches without any mousing around. Hyper-Escape triggers UnDock, which starts up wifi, umounts my drives and pauses Time Machine. Then, unplugging the Thunderbolt cable triggers tasks (via ControlPlane) such as hiding GeekTool in preparation for a 1440px desktop, repositioning Simplify/Sidecar and other handy things. Of course, it also does the whole process in reverse when I plug back in",
		"keywords": ["apple","controlplane","display","ethernet","geektool","macbook","macintosh","thunderbolt","applescripts","controlplane","display","escape","geektool","hyper","macbook","machine","network","preferences","sidecar","simplify","thunderbolt","undock","above","addresses","afterwards","alias","allows","before","cable","changed","command","depending","desktop","docked","drives","easier","ethernet","fairly","guessed","handy","hardware","hellip","hiding","higher","holers","interfaces","labeled","mousing","network","pauses","preparation","priority","process","quick","quickly","rabbit","repositioning","reverse","rsquo","script","seamless","shell","starts","switches","tasks","thought","toggle","triggers","typing","umounts","unplugging","useful","using","whole"]
	},{
		"title": "Shoots & Leaves Valentine's Day Giveaway",
		"url": "/2014/02/14/shoots-and-leaves-valentines-day-giveaway/",
		"tags": ["giveaway","iphone"],
		"date": "Feb 14<span>th</span>, 2014",
		"ts": "1392400800",
		"summary": "I wrote about Shoots & Leaves back in January, and it&rsquo;s been on my iPhone ever since. It lets you snap a picture and immediately turn it into a text link and send it to a variety of other apps and services. Well, happy Valentine&rsquo;s Day. Shoots & Leaves developer Billy Mabray is offering BrettTerpstra.com readers a chance to win one of five free copies of the app ($2.99US value). Just sign up below to enter! Winners will be drawn on Tuesday, February 18th. The contest is open to all. Please sign up using a first and last name to make announcing the winners easier. An email is required only for sending you your prize, it&rsquo;s not stored or used for anything else, ever. Sorry, this giveaway has ended",
		"keywords": ["apple","iphone","billy","brettterpstra","leaves","mabray","shoots","sorry","tuesday","valentine","winners","announcing","below","chance","contest","copies","developer","easier","email","ended","enter","first","giveaway","happy","iphone","offering","picture","prize","readers","required","rsquo","sending","services","since","stored","using","value","variety","winners","wrote"]
	},{
		"title": "Web Excursions for February 14, 2014",
		"url": "/2014/02/14/web-excursions-for-february-14-2014/",
		"tags": ["bookmarks"],
		"date": "Feb 14<span>th</span>, 2014",
		"ts": "1392386400",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. Weekend Read A great app that makes reading screenplays and scripts on your iPhone a pretty damn good experience. It handles Final Draft, PDFs, Fountain and Markdown files, and imports from Mail, Dropbox and the web. InstantClick JS lib to make your website instant If it weren&rsquo;t for server load increase and required script refactoring that I don&rsquo;t have time to tackle, I&rsquo;d probably test this out today&hellip; It essentially turns your website into a single-page application using pjax and hover/click handlers to preload content. Goodbye, Editorially I loved this web app, and am sad to see it go. I applaud the team for making the decision fairly early on, though. Thankfully, we still have (the amazing) Draft. Why \"just use Adblock\" should never be a professional answer A good read from Christian Heilmann on the effects of web advertising. This Is Not A Conspiracy Theory An interesting-looking documentary from the creator of Everything Is A Remix. Published as a paid subscription with multiple installments in the series. Hemingway This web app has received a lot of attention around the web in the last couple of days. It highlights readability issues in text. Marked 2 can actually do a lot of this, but Hemingway is a pretty handy tool you can use for free",
		"keywords": ["adblock","hemingway","instantclick","adblock","christian","cleanmymac","conspiracy","draft","dropbox","editorially","everything","fountain","goodbye","heilmann","hemingway","instantclick","markdown","marked","published","remix","thankfully","theory","weekend","advertising","amazing","answer","applaud","brought","click","content","couple","creator","decision","documentary","effects","essentially","excursions","experience","fairly","files","great","handlers","handles","handy","hellip","highlights","hover","iphone","imports","increase","installments","instant","interesting","issues","looking","loved","makes","making","multiple","partnership","preload","professional","readability","reading","received","refactoring","required","rsquo","screenplays","script","scripts","series","server","single","speed","subscription","tackle","today","tools","turns","using","website","weren"]
	},{
		"title": "Marked 2.2 (822) released",
		"url": "/2014/02/13/marked-2-dot-2-822-released/",
		"tags": ["markdown","marked"],
		"date": "Feb 13<span>th</span>, 2014",
		"ts": "1392326160",
		"summary": "I just pushed out build 822 of Marked 2. It&rsquo;s a free update to all current users, so \"Check for Updates\" in the Marked menu to grab it. If you want to try it out before you buy, just download the free trial at marked2app.com. If you&rsquo;re a Marked 1 user looking to upgrade, just drop me a line for a coupon. There are numerous fixes and improvements in this release, including MathJax configuration updates, Syntax Highlighting improvements and a fix for MultiMarkdown metadata like \"Base Header Level\" and \"Quotes Language\" not being recognized. Marked 2&rsquo;s ability to detect changes to embedded images and update the preview automatically is also repaired. There are a couple of new features as well. First, opening external files is vastly improved. If you click a link to a local file that isn&rsquo;t recognized as a filetype Marked can handle, it will now ask to open it in the default application for that type instead of giving you a big \"fail\" message. You can choose to make your choice the default, too, so it can just open files without asking. Clicking links to other Markdown files is also improved. It will now ask if you want to open the document in the current window or a new one, and will properly load the new file in the preview. Ignore, which will leave the YAML in your document Remove, which will strip the YAML before it continues to the main processor Convert to MMD, which will remove the borders from the YAML block and allow MultiMarkdown to read the key/value pairs as MMD metadata Conversion to MMD isn&rsquo;t perfect yet, and doesn&rsquo;t do well with arrays and other structures besides strings and comma-delimited lists. This will be improved soon, but works great right now for keys like \"title,\" which Marked 2 can use for naming saved files and other tasks. See the complete release notes for more details. If you haven&rsquo;t already, grab a copy of Marked 2 now",
		"keywords": ["highlighting","jekyll","markdown","mathjax","multimarkdown","syntax","check","clicking","conversion","convert","first","header","highlighting","ignore","jekyll","language","level","markdown","marked","mathjax","multimarkdown","quotes","remove","syntax","updates","ability","affects","allow","arrays","asking","automatically","before","besides","block","borders","build","changes","choice","choose","click","comma","configuration","continues","couple","coupon","default","delimited","details","detect","document","doesn","download","embedded","external","feature","features","files","filetype","fixes","frontmatter","giving","great","handle","handling","haven","images","improved","improvements","including","leave","links","lists","local","looking","marked","message","metadata","naming","notes","offers","opening","pairs","preview","processor","properly","pushed","recognized","release","remove","repaired","right","rsquo","saved","second","strings","strip","structures","tasks","title","trial","updates","upgrade","users","value","vastly","window","works"]
	},{
		"title": "Sponsor: The PDFpen family from Smile",
		"url": "/2014/02/13/sponsor-the-pdfpen-family-from-smile/",
		"tags": [],
		"date": "Feb 13<span>th</span>, 2014",
		"ts": "1392292800",
		"summary": "This week, BrettTerpstra.com is sponsored by the PDFpen Family from Smile: PDFpen: The all-purpose Mac PDF editor. Add signatures, text, and images. Make changes and correct typos. OCR scanned docs. Fill out forms. PDFpenPro: Everything PDFpen can do and more. Make interactive forms, build tables of contents, and convert Web pages to PDFs when you go PDFpenPro. PDFpen for iPad and PDFpen for iPhone: Edit your PDFs anywhere you are. Sign contracts, make changes, fill out applications, and more. PDFpen Scan+: The power of your office in your pocket! Scan contracts, invoices, or receipts as PDFs with your mobile device. Use OCR (Optical Character Recognition) to make that scanned image into editable text",
		"keywords": ["character","document","format","image","iphone","optical","pdfpen","portable","recognition","scanner","smile","brettterpstra","character","everything","family","optical","pdfpen","pdfpenpro","recognition","smile","anywhere","applications","brief","build","changes","contents","contracts","convert","details","device","editable","editor","forms","iphone","image","images","interactive","introduction","invoices","mobile","office","pages","pocket","receipts","scanned","signatures","sponsored","tables","typos","video"]
	},{
		"title": "Systematic 83 with Dave Seah",
		"url": "/2014/02/11/systematic-83-with-dave-seah/",
		"tags": ["podcast","productivity","systematic"],
		"date": "Feb 11<span>th</span>, 2014",
		"ts": "1392141420",
		"summary": "I had a great chat with Dave Seah this week. He&rsquo;s the inventor of the Printable CEO and a bunch of other great stuff. He&rsquo;s a creative guy working to make it on his own by turning his ideas into marketable products. It was an excellent conversation and I&rsquo;m really glad I got to meet him. Thanks to Dave for taking the time and making a great episode. Check it out at 5by5",
		"keywords": ["david","management","productivity","studios","check","printable","thanks","bunch","conversation","creative","episode","excellent","great","ideas","inventor","making","marketable","products","rsquo","stuff","taking","turning","working"]
	},{
		"title": "An updated Increment Templated Service",
		"url": "/2014/02/10/an-updated-increment-templated-service/",
		"tags": ["service"],
		"date": "Feb 10<span>th</span>, 2014",
		"ts": "1392046080",
		"summary": "The Increment Templated Service is one I wrote a couple of years ago and have found more useful over time than I thought it would be. It&rsquo;s had some updates since then, and now covers a few more use cases. To use it, you simply write some text with \"##x,y##\" in it, where x is the starting number and y is the ending number for the sequence. For example: First, it maintains indentation better now, so you can use it in more situations. Just to scratch my own itch for a one-time need, I also added the ability to left-pad numbers in the template sequence. You can now pad numbers in the sequence by adding leading zeroes. The result will pad to the length of the starting number or modifier. For example: You can also exclude the start and end modifiers by prefixing them with \"?:\", e.g.: Increment Templated Service v3.0.2 Download Increment Templated Service v3.0.2 Repeats a selected block of text a specified number of times, replacing placeholders with the count of the current item with variable start and end numbers. Published 07/01/12. Updated 02/06/23. Changelog Donate &bull; More info&hellip",
		"keywords": ["editor","expression","regular","sequence","changelog","donate","download","first","improvements","increment","published","repeats","service","templated","updated","usage","ability","added","adding","allows","block","certain","count","couple","covers","display","ending","example","found","hellip","indentation","index","leading","length","maintains","modified","modifier","modifiers","numbers","outputs","placeholders","prefixing","produce","repeat","repeats","replacing","rsquo","scratch","selected","sequence","service","simply","since","situations","starting","template","thought","times","token","updates","useful","variable","where","write","wrote","years","zeroes"]
	},{
		"title": "Web Excursions for February 07, 2014",
		"url": "/2014/02/07/web-excursions-for-february-07-2014/",
		"tags": ["bookmarks","browser","productivity","tools"],
		"date": "Feb 7<span>th</span>, 2014",
		"ts": "1391781600",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. To kick off this Friday, I&rsquo;d like to offer a huge thank you to all of the people who have signed up to support me in my new independent life, and I promise to continue bringing you the nerdiest of productivity posts and tools. It&rsquo;s a bit early for a pledge drive, but I wanted to make sure that anyone who missed the announcement knows they can sign up and offer a little bit of monthly support to help keep the lights on. Your small monthly donation makes a big difference in my ability to keep doing the things I do. The TaskPaper R&D Notebook I&rsquo;m looking forward to accompanying Gabe on the journey toward a more TaskPaper-centric system. The tools that will likely come out of this shift are going to be a lot of fun. globocom/thumbor A self-hosted image server with smart cropping and resizing. Via OneThingWell. Stop Procrastinating Important Calls With Call Flows This is a very good idea for getting myself to actually make those calls on my todo list that would take 5 minutes but my brain just won&rsquo;t let me tackle. Ember for Mac now with Auto-Import Ember gets better and better with visual updates, browser extensions for clipping and auto-import. Browser Testing Report: Browser Test & Performance Testing As part of Modern.IE, a site scanner to detect coding problems for older versions of IE. Open source version available. As a bonus link, I&rsquo;ll mention Sincerely Yours, Leonard Cohen (Spotify link), an album of Leonard Cohen covers by Mag Styva. In particular, her version of Chelsea Hotel #2 (YouTube link). It&rsquo;s a great cover of one of my favorite songs by one of my favorite artists",
		"keywords": ["chelsea","cohen","hotel","leonard","taskpaper","youtube","browser","calls","check","chelsea","cohen","ember","flows","friday","hotel","import","important","leonard","modern","notebook","onethingwell","performance","procrastinating","report","setapp","sincerely","spotify","styva","taskpaper","testing","youtube","ability","access","album","announcement","anyone","artists","available","bonus","brain","bringing","brought","browser","calls","centric","clipping","coding","continue","cover","covers","cropping","detect","difference","doing","donation","drive","excursions","extensions","favorite","getting","globocom","going","great","hosted","hundreds","image","import","independent","journey","knows","lights","likely","links","little","looking","makes","mention","minutes","missed","monthly","myself","nerdiest","offer","older","particular","partnership","people","pledge","posts","problems","productivity","promise","resizing","rsquo","scanner","server","shift","signed","small","smart","songs","source","subscription","support","system","tackle","thank","thumbor","today","tools","toward","updates","version","versions","visual","wanted"]
	},{
		"title": "Sponsor: MnmlRdr",
		"url": "/2014/02/06/sponsor-mnmlrdr/",
		"tags": [],
		"date": "Feb 6<span>th</span>, 2014",
		"ts": "1391688000",
		"summary": "I&rsquo;d like to thank MnmlRdr for sponsoring BrettTerpstra.com this week. I&rsquo;ve been using the service for a while, and I&rsquo;m pleased to tell you about it! MnmlRdr is a \"minimal\" feed reader. That&rsquo;s not to say it&rsquo;s not as powerful as any other RSS service, it&rsquo;s just not cluttered with anything you don&rsquo;t need. It has subscription folders, feed management and full Fever API support, but doesn&rsquo;t weigh you down with any features you won&rsquo;t use. It works with Fiery, Reeder and any other Fever-compatible client. I&rsquo;m using it with ReadKit with great results. The website itself is responsive, with gesture support, so it can function across all of your devices even if you don&rsquo;t have a dedicated app. MnmlRdr is private, secure and ad free. BrettTerpstra.com readers can sign up for a special promo (4 months free, $24 for a year subscription) at mnmlrdr.com/promo/brettterpstra",
		"keywords": ["aggregator","interface","iphone","mnmlrdr","programming","reeder","brettterpstra","fever","fiery","mnmlrdr","readkit","reeder","thanks","across","again","brettterpstra","client","cluttered","compatible","dedicated","devices","doesn","features","folders","function","gesture","great","itself","management","minimal","mnmlrdr","pleased","powerful","private","promo","reader","readers","responsive","results","rsquo","secure","service","special","sponsoring","subscription","support","thank","using","website","weigh","while","works"]
	},{
		"title": "Nobody wants to see your post about what nobody wants to see.",
		"url": "/2014/02/05/nobody-wants-to-see/",
		"tags": ["facebook","personal","twitter"],
		"date": "Feb 5<span>th</span>, 2014",
		"ts": "1391657520",
		"summary": "There have been multiple articles lately across the parts of the Internet I frequent regarding what one shouldn&rsquo;t post on their social media accounts. I would like to respond to every one of them by saying \"screw you.\" I&rsquo;m pretty sure there&rsquo;s no Dear Abby for Facebook, and if there is, it isn&rsquo;t you. To be fair, I could easily not read all of these articles. It would be in my best interest. But I&rsquo;m a sucker for headlines telling me not to do something I really like doing. Most recently it was a screed against Facebook&rsquo;s Look Back videos. I&rsquo;ve had a lot of fun watching 20 seconds of my friend&rsquo;s important moments, but that didn&rsquo;t rub off on the author. I don&rsquo;t see a lot of value in writing tedious posts railing against trivial and inoffensive things that you could very easily avoid seeing at all. So here I am, writing one. The common thread seems to be that we&rsquo;re \"polluting\" the stream with our self-serving or misinformed posts. I hate to be the bearer of bad news, but that&rsquo;s what social media is. A polluted stream of barely-relevant information with a few noisy boats on top of it and a couple of treasures buried in the riverbed. The only reason I&rsquo;m on Facebook is to see cute pictures of my friends&rsquo; pets. I&rsquo;m not kidding. If I thought it was a valid source of news and information, I&rsquo;d be a little more discerning, but it just isn&rsquo;t. As long as everyone has a voice, things are going to be noisy. You should deal with that. The noisier things get, the more tools pop up to help you cut through it. RSS is still a valid and valuable tool. App.net&rsquo;s Broadcasts offer the same kind of low-noise, high-value streams. And here&rsquo;s a hint: use one of the many tools available to see just the links from your Twitter stream. There&rsquo;s no news happening that doesn&rsquo;t have a link in it. Stop pretending that anyone cares about your \"rules.\" And if you don&rsquo;t want to see pictures of my pets, song lyrics I consider poignant, restrospectives of my life and other personal trivialities, don&rsquo;t follow me on Twitter, App.net or anywhere elsewhere",
		"keywords": ["communities","facebook","networking","online","social","twitter","broadcasts","facebook","internet","twitter","accounts","across","against","anyone","anywhere","articles","author","available","avoid","barely","bearer","boats","buried","cares","common","consider","couple","discerning","doesn","doing","easily","elsewhere","everyone","frequent","friend","friends","going","happening","headlines","important","information","inoffensive","interest","kidding","links","little","lyrics","media","misinformed","moments","multiple","noise","noisier","noisy","offer","parts","personal","pictures","poignant","polluted","polluting","posts","pretending","railing","recently","relevant","respond","restrospectives","riverbed","rsquo","rules","saying","screed","screw","seconds","seeing","seems","serving","shouldn","social","source","stream","streams","sucker","tedious","telling","thought","thread","through","tools","treasures","trivial","trivialities","valid","valuable","value","videos","voice","watching","writing"]
	},{
		"title": "Web Excursions for January 30, 2014",
		"url": "/2014/01/30/web-excursions-for-january-30-2014/",
		"tags": ["bookmarks","cheatsheet","markdown","tools"],
		"date": "Jan 30<span>th</span>, 2014",
		"ts": "1391104620",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Newspaper \"News extraction, article extraction and content curation in python. Built with multithreading, 10+ languages, NLP, ML, and more\" Markdown Tables generator - TablesGenerator.com Nifty tool for quickly generating Markdown tables. Folding A way to render FoldingText documents as static web pages. 20 Websites With Unique Interactive Scrolling Once you get past the annoying modal popup, this is a great collection of sites making smart use of scroll navigation and animation. dasheets Generate your own cheatsheets as docsets for Dash. A simple command line tool and write your cheatsheets in an easy language (Ruby DSL). I also have an in-progress converter that lets you turn MMD tables into dasheets format. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["command","interface","languages","markdown","programming","python","website","built","check","folding","foldingtext","interactive","markdown","mindmeister","newspaper","nifty","scrolling","tables","tablesgenerator","unique","websites","animation","annoying","article","boosting","brainstorming","brought","cheatsheets","collaborating","collaborative","collection","command","content","converter","curation","dasheets","docsets","documents","excursions","extraction","format","generating","generator","great","language","languages","making","mapping","modal","multithreading","navigation","pages","partnership","popup","productivity","python","quickly","scroll","simple","sites","smart","software","static","tables","write"]
	},{
		"title": "VOX 2.0",
		"url": "/2014/01/28/vox-2-dot-0/",
		"tags": ["macappstore","macos","music"],
		"date": "Jan 28<span>th</span>, 2014",
		"ts": "1390914000",
		"summary": "I wrote up the Vox 1.0 release for TUAW a little while back. It seems like it&rsquo;s only been a few months (it&rsquo;s been 6), but Vox 2.0 is already here. I love this powerful little music controller and have been using it as my main (non-Spotify/Simplify) player. The interface, which was already great in 1.0, has been re-thought and tweaked. It&rsquo;s still a gorgeous, compact controller with cool features like scroll-controlled volume and seeking, but it&rsquo;s even prettier and more intuitive now. I also enjoy the way it displays album art; once a track starts playing, the cover art will fade in as the background for the player controls. It stays faded, and it creates a great effect. It also has improved search for all listing sources, which makes its speedy interface even better. You can configure multiple output devices, and control what channels go to what outputs on any device. As before, it has a flawless AirPlay implementation that makes sending music to my desktop Mac mini&rsquo;s 5-channel speaker system a breeze (with Airfoil Speakers). There are also playback improvements, such as gapless playback and cross-fading, as well as new playlist formats for exporting PLS and M3U files. Some bug fixes for Radio, the Services implementation and stability at high loads round out a great release. By the way, if you use Growl, be sure to set up VoxGrowl for very nice desktop notifications on track changes. Check out Vox 2.0 for free on the App Store",
		"keywords": ["airfoil","airplay","apple","gapless","growl","playback","store","airplay","airfoil","check","growl","radio","services","simplify","speakers","spotify","store","voxgrowl","album","background","before","breeze","changes","channel","channels","compact","configure","control","controlled","controller","controls","cover","creates","cross","desktop","device","devices","displays","enjoy","exporting","faded","fading","features","files","fixes","flawless","formats","gapless","gorgeous","great","implementation","improved","improvements","interface","intuitive","listing","little","loads","makes","multiple","music","notifications","output","outputs","playback","player","playing","playlist","powerful","prettier","release","round","rsquo","scroll","search","seeking","seems","sending","sources","speaker","speedy","stability","starts","stays","system","thought","track","tweaked","using","volume","while","wrote"]
	},{
		"title": "Cheaters 2.0.5, cheating gets easier",
		"url": "/2014/01/26/cheaters-2-dot-0-5-cheating-gets-easier/",
		"tags": ["cheaters","cheatsheet","markdown"],
		"date": "Jan 26<span>th</span>, 2014",
		"ts": "1390776180",
		"summary": "I got a lot of grief last time I posted about Cheaters for not opening with what it was. I just assume everyone reading this tracks everything I do, which would be a difficult proposition, even if it were true. So: Cheaters is a simple system for creating and loading cheat sheets generated from web pages. It provides the frameworks and plenty of default cheat sheets, but it&rsquo;s simple to add your own. It runs off of a local web server or remotely, if you choose. Anyway, on to the updates. First, I moved the repository around a little to make maintaining the demo sheets easier. The main system is now located in /cheaters/, where you&rsquo;ll find an index-example.html. The example file is so that you can maintain your own index.html file without it being overwritten by updates. Just copy index-example.html to index.html and you won&rsquo;t have to worry about rebuilding it every time. Some updates (like this one) may require extra JavaScript loads, so you&rsquo;ll need to manually update index.html based on index-example.html on those occasions. Next, the pretty cool part: You can now use straight Markdown files in Cheaters (thanks to marked.js). Just create a Markdown file that uses h3 titles for each section, and Markdown tables for charts of shortcuts. When you link to a file ending in in the index file, it will convert those on the fly when loaded in Cheaters. You can use all standard Markdown, plus tables. You just can&rsquo;t include table captions as defined by the MultiMarkdown spec, so use h3 (###) headers instead. Cheaters v2.1.2 Download Cheaters v2.1.2 Customizable cheat sheet system Published 01/26/14. Updated 04/17/18. Changelog Donate &bull; More info&hellip",
		"keywords": ["javascript","keyboard","markdown","multimarkdown","shortcut","anyway","changelog","cheaters","customizable","donate","download","first","javascript","markdown","multimarkdown","published","saved","updated","assume","based","captions","charts","cheat","cheaters","cheatsheets","choose","convert","corresponding","create","creating","default","defined","difficult","easier","ending","everyone","everything","example","extra","files","frameworks","generated","grief","headers","hellip","index","keyboard","linked","little","loaded","loading","loads","local","located","maintain","maintaining","manually","marked","moved","opening","overwritten","pages","plenty","posted","proposition","provides","reading","rebuilding","remotely","replaced","repository","rsquo","section","server","sheet","sheets","shortcuts","simple","standard","straight","symbol","system","table","tables","thanks","titles","tracks","updates","where","worry","xctrl","xshift"]
	},{
		"title": "Custom Processors in Marked 2",
		"url": "/2014/01/25/custom-processors-in-marked-2/",
		"tags": ["marked","scripting"],
		"date": "Jan 25<span>th</span>, 2014",
		"ts": "1390687500",
		"summary": "Custom processors are an advanced feature of Marked which provide a lot of power and flexibility &mdash; if you know how to write scripts and implement them. For the average user they&rsquo;re of less use, but for the power users they&rsquo;re a goldmine. You can write scripts to function as preprocessors (run before one of the default internal processors), or processors (replaces the internal processors entirely). Anything that can take input on STDIN and return HTML on STDOUT will work, allowing you to use Marked with any form of markup or special syntax for a specific processor such as Kramdown, Maruku, Python Markdown 2, etc.. I generally write my scripts in Ruby, so the following tips will use Ruby in the examples, but the concepts will work with any language. You can even write custom processors in Bash or ZSH and pass the input to any executable you can call from the command line. A Custom Processor is a replacement for the built-in MultiMarkdown and Discount processors. It can be a path to an executable, or to a wrapper script that makes use of various logic to process extra markup or determine which processor to run based on variable criteria. Preprocessors come before processing, as the name implies. From the Marked 2 documentation: If you set up a preprocessor, it is run after Marked handles any Marked-specific tasks such as including external documents and code, but before it runs the processor (internal or custom). This gives you a chance to render custom template variables, handle substitutions or inject your own content by any other means. First, be aware that the processors are not running in your usual shell environment. They&rsquo;re running in a protected shell that inherits none of your standard settings. Things like $PATH and other environment variables will not be automatically set. Marked provides several environment variables that you can use, and with systems like RVM, you can write wrapper scripts () as needed. The easiest way to use your preferred language is to install any extensions (in the case of Ruby, gems) at the system level (). Marked 2 allows you to determine whether the custom pre/processor should run based on any conditions you choose. If you return just the line \"NOCUSTOM\" instead of HTML output, Marked will act as though you didn&rsquo;t have a processor set for that stage and default to the next option. You can easily see what&rsquo;s going on with your script by using a logger set to a file. I&hellip;",
		"keywords": ["mavericks","multimarkdown","preprocessor","programming","standard","streams","conditional","custom","desktop","discount","encoding","environment","especially","first","hopefully","jekyll","kramdown","logger","logging","markdown","marked","maruku","mavericks","multimarkdown","nocustom","preprocessor","preprocessors","processor","python","stdin","stdout","selectively","using","advanced","allowing","allows","assuming","automatically","average","avoid","aware","based","before","below","built","bypassing","chance","choose","chunk","command","comments","concepts","conditions","content","conversion","criteria","custom","debugging","default","detects","different","directives","document","documents","easiest","easily","enabled","encoding","entirely","environment","errors","example","examples","executable","extension","extensions","external","extra","feature","flexibility","folder","force","forking","function","generally","gives","going","goldmine","handle","handles","header","headers","hesitate","implies","included","including","inherits","inject","input","install","internal","issues","language","level","logger","logic","makes","markup","mdash","metadata","module","needed","output","pivot","preferences","preferred","preprocessor","preprocessors","private","problematic","problems","process","processing","processor","processors","protected","provides","public","quickly","regardless","replacement","replaces","return","returning","returns","rsquo","running","script","scripts","setting","settings","several","shell","shows","special","specific","stage","standard","strategies","strip","substitutions","support","syntax","system","systems","tasks","template","ticket","users","using","variable","variables","various","while","within","wrapper","write"]
	},{
		"title": "Cheaters 2.0: more and faster",
		"url": "/2014/01/21/cheaters-2-dot-0-more-and-faster/",
		"tags": ["cheaters","cheatsheet","fluid","keyboard","productivity","search"],
		"date": "Jan 21<span>st</span>, 2014",
		"ts": "1390337640",
		"summary": "Cheaters 2.0 is up, and it&rsquo;s a huge step forward. I&rsquo;ve been inspired by Dash to make it faster, easier and more keyboard-centric. The first thing to note is that I&rsquo;m now strongly recommending using Fluid over the Automator version. Gabe Weatherhead put it out there, and it took me a while to get around to trying it, but now that I have I&rsquo;ll never go back. Spend the $5 on Fluid and make a menubar app out of it. It also adds page search (F), which is something I&rsquo;ve wanted forever. I was about to hack it in at the time I tried running in Fluid and found that it solves that and myriad other problems (like having to focus before dismissing). You&rsquo;ll want a good icon for it; this is the one I&rsquo;m using because it looks much better in the menubar: Ok, so on to the changes. I completely redesigned the menu, improved the overall styling for readability and responsiveness (the stylesheet is in Sass now, available in the GitHub repo). Then, I got into the keyboard thing. The most important addition is the new fast switcher, triggered with the \"f\" key. Just type \"f\" and the first letter of the title of the menu item you want to switch to and it will jump. If there are two sheets with the same letters, just keep typing until it can tell the difference. It&rsquo;s a fuzzy match, so if you have \"HTML\" and \"HTML5,\" you can type \"h5\" to jump to the latter. Note that if \"HTML5\" comes before \"HTML\" in the menu, it will be more difficult to select the \"HTML\" one as \"HTML5\" will match first. The system will work with whatever cheat sheets you load. Here&rsquo;s a quick video I made to demonstrate this. There have been a lot of changes (especially interface changes) since I recorded it, but it demonstrates the functionality well: You can also use the fast switcher with numbers. 1-9 will jump to the first nine sheets, with the first sheet being 1. 0 will jump to the last sheet. Just in case you&rsquo;re looking for something that you don&rsquo;t have on your cheat sheet, the fast search also works for web searching! You can type \"f\" to bring it up, then type \"?\" to start a search. Anything after the \"?\" will be searched on DuckDuckGo . Using DuckDuckGo means that you can also use \"bang searches,\" so you can start a query with \"?!\" and any of DuckDuckGo&rsquo;s search shortcuts . There are a couple of shortcuts built in: \"?so {query}\" will search Stack Overflow, and \"?gh {query}\" will search GitHub. \"?g {query}\" will do a&hellip;",
		"keywords": ["applescript","duckduckgo","github","google","javascript","search","advanced","apache","applescript","automator","changelog","cheaters","command","customizable","donate","download","duckduckgo","fluid","github","google","installation","javascript","keyboard","overflow","published","readme","search","shift","spend","stack","updated","using","weatherhead","action","active","another","available","because","before","below","between","bottom","bring","brings","browser","built","centric","changes","cheat","colors","comes","comma","command","commands","completely","contrast","control","correlate","couple","demonstrates","difference","difficult","digit","dismissing","download","easier","easily","especially","externally","faster","first","focus","forever","found","functionality","fuzzy","haven","having","header","hellip","hitting","important","improved","improvement","index","indexed","inspired","interface","inverting","keyboard","latter","launcher","launches","letter","letters","light","local","looking","looks","match","matching","menubar","myriad","navigate","normal","numbered","numbers","overall","parameter","point","preserved","problems","project","query","quick","readability","recommending","recorded","redesigned","remember","responsiveness","retrieve","rsquo","running","script","scripters","scrolling","search","searched","searches","searching","section","server","settings","setup","sheet","sheets","shortcuts","since","single","solves","string","strongly","stylesheet","styling","switch","switcher","system","title","toggle","tried","triggered","trying","typing","updated","useful","using","variable","version","video","wanted","whatever","where","while","works","writing"]
	},{
		"title": "Web Excursions for January 20, 2014",
		"url": "/2014/01/20/web-excursions-for-january-20-2014/",
		"tags": ["automator","bookmarks","webkit"],
		"date": "Jan 20<span>th</span>, 2014",
		"ts": "1390251600",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Time Warp OneThingWell reminded me of this tool that I haven&rsquo;t tried yet. It uses a smarter algorithm to determine which Time Machine snapshots should be deleted when the drive fills, rather than just the oldest one. Dr. Bunsen is crazy smart. Automate the Web - Zapier Wow, IFTTT on steroids (plus paid plans). It integrates with and automates over 200 services. I tested GitHub &rarr; FlowDock, Dropbox &rarr; Pushover and a few others and it works really well. Stick your landings! position:sticky lands in WebKit This is an old post, but I just now realized that is now working in current versions of Chrome and Safari. Even in Marked&hellip; PowerMate Bluetooth Yes. SunCycle Switch your Sublime Text theme based on sunset/sunrise times for your location. I haven&rsquo;t actually gotten it to work yet&hellip; Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["chrome","google","safari","sublime","automate","backblaze","bluetooth","bunsen","check","chrome","dropbox","flowdock","github","ifttt","machine","marked","onethingwell","powermate","pushover","safari","stick","sublime","suncycle","switch","webkit","zapier","affordably","algorithm","automates","backs","based","brought","cloud","computer","crazy","deleted","drive","entire","everything","excursions","fills","gotten","haven","hellip","integrates","landings","lands","location","oldest","others","partnership","plans","position","rather","realized","reliably","reminded","rsquo","securely","services","smart","smarter","snapshots","steroids","sticky","sunrise","sunset","tested","theme","times","today","tried","versions","working","works"]
	},{
		"title": "Open Together notes in Marked",
		"url": "/2014/01/20/open-together-notes-in-marked/",
		"tags": ["markdown","marked"],
		"date": "Jan 20<span>th</span>, 2014",
		"ts": "1390226400",
		"summary": "Together 3 from Reinvented Software is a really great app for organizing all kinds of files. I especially like that it can create references to files without having to import the originals, if you want. Fast search, great tagging, and it works well with plain text files to boot. It doesn&rsquo;t, however, do anything special with Markdown. Never fear, Marked fills the void nicely. You can just drag a text note from Together&rsquo;s note list to the Marked icon in your Dock and Marked will preview the file as you go. I don&rsquo;t currently have a watcher worked out for Together, but you can make opening notes from Together quite easy with a little bit of AppleScript. Paste the script below into AppleScript editor and save it to \"~/Library/Scripts/Applications/Together/Open Note in Marked.scpt\". Unless you&rsquo;ve already been scripting Together, you&rsquo;ll have to create that directory path (mind the capitalizations). Now you can use FastScripts, Alfred, Launchbar and more to quickly open the current note selection(s) in Marked with a keystroke or two. If you haven&rsquo;t seen Together, check it out. Same for Marked, of course. P.S. Quite by coincidence (I wrote this post yesterday), Together&rsquo;s non-App Store version is 50% off today (Monday, January 20th)",
		"keywords": ["applescript","fastscripts","launchbar","markdown","alfred","applescript","applications","fastscripts","launchbar","library","markdown","marked","monday","paste","reinvented","scripts","software","store","together","below","capitalizations","check","coincidence","create","directory","doesn","editor","especially","files","fills","great","haven","having","however","import","keystroke","kinds","little","nicely","notes","opening","organizing","originals","preview","quickly","references","rsquo","script","scripting","search","selection","special","tagging","today","version","watcher","worked","works","wrote","yesterday"]
	},{
		"title": "Marked 2.2 (820)",
		"url": "/2014/01/17/marked-2-dot-2-820/",
		"tags": ["markdown","marked"],
		"date": "Jan 17<span>th</span>, 2014",
		"ts": "1389996720",
		"summary": "I just published Marked 2.2 (820). Yes, it&rsquo;s a rapid development cycle right now, but there are a couple of larger things in this release that I want to mention. You can find the full release changelog on the Marked 2 website. MMD 4.5 with %metadata replacements If you have MMD metadata at the top of your document, you can reference any key you create with (lowercased and without spaces) to have the value of the key inserted in place of the token. Header labels are now generated with dashes (GitHub style) This is an across-the-board change that hopefully won&rsquo;t upset anybody. It will allow conformance with 99% of GitHub&rsquo;s handling of headers (last 1% in the works). If you are manually generating links based on Marked&rsquo;s auto-generated headers, this may cause some issues you need to fix. I haven&rsquo;t figured out a way to toggle this easily yet, but will attempt to do that in the near future. A new feature to highlight malformed/incomplete Markdown elements in the preview (&#2C6;E / gear menu) You can turn this to always-on-by-default in Window preferences, and still be able to toggle it per-document. If there are no errors in the document, it does nothing, so it&rsquo;s safe to let it run all the time. There are a couple of bugfixes and an array of refinements as well. I hope you get a chance to take a look. If you&rsquo;re already a Marked 2 user, click \"Marked &rarr; Check for Updates\" to get the latest version. P.S. There have been 3 updates to the \"Create Marked Index\" Service since I published it, and most of the bugs should be smoothed out now. My voice is almost back enough to do the screencast on Multi-File Documents in Marked, so watch for that soon",
		"keywords": ["github","metadata","check","create","documents","github","header","index","markdown","marked","multi","service","updates","window","across","allow","almost","anybody","array","based","board","bugfixes","cause","chance","change","changelog","click","conformance","couple","create","cycle","dashes","default","development","document","easily","elements","enough","errors","feature","figured","generated","generating","handling","haven","headers","highlight","hopefully","incomplete","inserted","issues","labels","larger","latest","links","lowercased","malformed","manually","mention","metadata","nothing","preferences","preview","published","rapid","refinements","release","replacements","right","rsquo","screencast","since","smoothed","spaces","style","toggle","token","updates","upset","value","version","voice","watch","website","works"]
	},{
		"title": "Web Excursions for January 16, 2014",
		"url": "/2014/01/16/web-excursions-for-january-16-2014/",
		"tags": ["bookmarks","status","writing"],
		"date": "Jan 16<span>th</span>, 2014",
		"ts": "1389906000",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. CodePen - Top Pens of 2013 So much CSS/JS awesome. Writing Is Thinking A really good step-by-step through the process of writing. It has great advice for people who&rsquo;ve always thought they couldn&rsquo;t write, as well as some good reminders for those of us who already do. swissted Swiss modernism meets punk rock. A curious collection of re-imagined show posters. Automating iOS: A Comprehensive Guide to URL Schemes and Drafts Actions Man, there&rsquo;s more to play with than I&rsquo;ll ever have time for. Status Board Electricity Price Tracker My friend John Voorhees put together a great script for tracking ComEd&rsquo;s electricity prices in Panic&rsquo;s Status Board. Even if you&rsquo;re not using ComEd&rsquo;s service, it looks like a great learning tool for other Status Board users",
		"keywords": ["panic","thought","actions","automating","board","cleanmymac","codepen","comed","comprehensive","drafts","electricity","guide","panic","price","schemes","status","swiss","thinking","tracker","voorhees","writing","advice","awesome","brought","collection","couldn","curious","electricity","excursions","friend","great","imagined","learning","looks","meets","modernism","partnership","people","posters","prices","process","reminders","rsquo","script","service","speed","swissted","thought","through","together","tools","tracking","users","using","write","writing"]
	},{
		"title": "A Service for creating Marked indexes",
		"url": "/2014/01/16/a-service-for-creating-marked-indexes/",
		"tags": ["finder","markdown","marked","reading","scripting","service","solutions","writing"],
		"date": "Jan 16<span>th</span>, 2014",
		"ts": "1389896940",
		"summary": "In case you&rsquo;re not familiar with it already, Marked has the ability to include external documents within any other document. The main use for this is creating longer documents with chapters/sections split into separate files. Then you create an index file that pulls them all together in the proper order. In testing some tweaks to this feature, I had a need to be able to quickly generate index files from a folder or selection of files. This Service is my solution for the problem. This Service allows you to take a Finder selection of multiple files and/or folders and generate an \"index.md\" file at the root of the selection that contains all of the files and sub-folder files wrapped in (up to three levels deep) Marked&rsquo;s include syntax. It will use the proper syntax for code files (to insert them as highlighted code blocks), recognize any type of text file, and ignore files you won&rsquo;t want in the index (images, rich text files, bundles, etc.). The included files are ordered alphanumerically in the index, so you can specify the order by prefixing filenames with a number, or just edit the generated index to move included files around. If only one file is selected when the service runs, the content of that file will be read as a list of files to convert to Marked&rsquo;s format. This works well with Leanpub and mmd_merge files, and with any plain text list of filenames. The files listed must actually exist in the folder of the index file to be converted, but they can have relative paths from that file. To install it, just download the zip file below, open it and double click the Service. This will ask you if you want to install it, which you should confirm. Now, when you have a file/folder selection in Finder (or other file management application), you can right click and select \"Create Marked Index.\" It will generate the \"index.md\" file and reveal it in Finder upon completion. Double click the index file to edit and finalize the order. You can also use the script from this Service as a command line tool. The source is available as a Gist that you can save to your local drive as \"markedindex.rb\". Make the file executable by running . The script takes input in two forms. First, you can pass it a list of filenames as arguments, e.g. . If any of the arguments are directories, they will be searched for more text/code files which will also be included. The second form of input is STDIN, meaning you can pipe the output of a command to&hellip;",
		"keywords": ["command","finder","interface","management","manager","markdown","syntax","changelog","command","control","converting","create","donate","double","download","finder","first","hopefully","index","installing","leanpub","markdown","marked","published","stdin","service","shift","updated","ability","allows","alphanumerically","arguments","available","below","blocks","build","bundles","chapters","click","command","commands","confirm","contains","content","conversion","convert","converted","create","creating","directories","directory","document","documents","double","download","drive","example","executable","exist","external","familiar","feature","filename","filenames","files","finalize","folder","folders","format","formats","forms","generated","hellip","highlighted","ignore","images","included","includes","including","increment","index","input","install","interesting","levels","listed","local","longer","management","marked","meaning","merge","multi","multiple","neither","ordered","output","overwriting","parts","paths","people","posting","prefixing","previewing","problem","processes","proper","pulls","quickly","rather","recognize","relative","reveal","right","rsquo","running","script","searched","second","sections","selected","selection","separate","service","showing","simple","solution","sounds","source","specify","speed","split","subfolders","syntax","takes","testing","together","trial","tricks","tweaks","usage","using","video","voice","while","within","working","works","wrapped","writing"]
	},{
		"title": "nvremind update with IFTTT fun",
		"url": "/2014/01/15/nvremind-update-with-ifttt-fun/",
		"tags": ["nvremind","productivity"],
		"date": "Jan 15<span>th</span>, 2014",
		"ts": "1389811800",
		"summary": "I&rsquo;ve updated nvremind to 1.0.6. It started as some bugfixes for international users, but I added a simple feature that I think makes it worth writing a quick post about. If you&rsquo;re not familiar with nvremind, you&rsquo;ll want to peek at the project page first. You can now use to specify a directory where nvremind will create a file, named for the title of the reminder and containing the note as its text contents. This can be used in a lot of ways &ndash; from to folder watchers &ndash; but was designed with IFTTT in mind. If you specify a public Dropbox directory for the option, you can set up an IFTTT recipe to trigger when there&rsquo;s a new file in that folder. You can then perform a variety of actions, including SMS messages, Pushover notifications or even Toodledo tasks. The filename is available to all recipes, so the title of your task can be used for any type of notification. You can also include a link to the file on Dropbox where you can access any note contents. The download has been updated (below) and the code is all up on GitHub. Let me know if you run into any issues. nvremind v1.0.6 Download nvremind v1.0.6 A background utility to scan text files for reminder tags with timestamps and generate a variety of notifications for them. Published 01/15/14. Updated 01/15/14. Changelog Donate &bull; More info&hellip",
		"keywords": ["dropbox","github","ifttt","launchd","message","service","short","toodledo","changelog","donate","download","dropbox","github","ifttt","published","pushover","toodledo","updated","access","actions","added","available","background","below","bugfixes","containing","contents","create","designed","directory","download","familiar","feature","filename","files","first","folder","hellip","including","international","issues","makes","messages","named","ndash","notification","notifications","nvremind","project","public","quick","recipe","recipes","reminder","rsquo","simple","specify","started","tasks","think","timestamps","title","trigger","updated","users","utility","variety","watchers","where","worth","writing"]
	},{
		"title": "Independence, Day Three",
		"url": "/2014/01/15/independence-day-three/",
		"tags": ["personal"],
		"date": "Jan 15<span>th</span>, 2014",
		"ts": "1389794400",
		"summary": "I&rsquo;ve always said that I&rsquo;m the most productive when I let myself work on what I feel like at the moment. Since leaving my day job, I&rsquo;ve felt like working on everything. I&rsquo;ve actually been a little scattered, but I&rsquo;m getting into a groove. I recorded a Systematic with Marco Arment last night which will be up later today. We talk at length about freelancing and indie development, among many other topics. I&rsquo;ve been working hard on Marked 2, refining a few features and getting ready for the App Store. I have a few kinks to work out in that area, but I think my February projection will be easy to meet. I&rsquo;d like to sincerely thank everyone who&rsquo;s shown their support by subscribing to this blog. I&rsquo;ve added a new option today through Memberful that will let you sign up with a credit card and avoid PayPal, if you prefer. If you want to help support my mad science, please do visit the Support page. One benefit of Memberful is that I&rsquo;ll have a completely private email list (they will never email you, only I can) that I can eventually use to provide subscribers with additional content of some sort&hellip; should I manage to find the time. I&rsquo;m supposed to be able to sleep nights now that I have days free to work, but I have yet to see how that works out. Time will tell",
		"keywords": ["arment","instapaper","marco","paypal","store","arment","marco","marked","memberful","paypal","since","store","support","systematic","added","among","avoid","benefit","completely","content","credit","development","email","eventually","everyone","everything","features","freelancing","getting","groove","hellip","indie","kinks","later","leaving","length","little","myself","night","nights","prefer","private","productive","projection","ready","recorded","refining","rsquo","scattered","science","shown","sincerely","sleep","subscribers","subscribing","support","supposed","thank","think","through","today","topics","visit","working","works"]
	},{
		"title": "Brett's new adventures and how you can help",
		"url": "/2014/01/12/bretts-new-adventures-and-how-you-can-help/",
		"tags": ["personal"],
		"date": "Jan 12<span>th</span>, 2014",
		"ts": "1389554460",
		"summary": "Ok, so here&rsquo;s the official announcement. I left my job at AOL Tech to go off on my own (for now). Feel free to skip to the end to find out how you can support my move. Let me say here at the outset that I loved AOL, and I loved my team. AOL was always and will probably continue to be a great place to work. Why would one leave a lucrative and challenging job they loved to try their hand at a life of writing, blogging and app development? Well, it came down to a personality conflict. After years of enjoying working on blogs like Engadget, TUAW, Joystiq and Massively, the powers that be decided that the brand needed a shakeup. They made radical changes to my work environment that left me dissatisfied with going to work every day1. Monday will be the start of increased focus on existing projects and attention to new ideas that have been bubbling up. I&rsquo;ll be writing, including finishing my tagging book and working on the children&rsquo;s book. I&rsquo;ll be developing Marked (starting with the App Store version) and adding a couple of smaller apps to the App Store list. I&rsquo;ll continue blogging, which brings me to a final request. I need to monetize just about everything I do at this point. After much consideration, I&rsquo;ve decided I don&rsquo;t want to paywall any of my content here. I also realized that with all of these projects, I won&rsquo;t have the energy or time to provide additional content for paid subscribers. So what I&rsquo;d like to try is offering the same content as always, but making it easier for people who appreciate it to express that monetarily. From here on out, BrettTerpstra.com is \"Reader Supported.\" If you enjoy what I write here, including all of the tools and tricks that I share, consider making a monthly pledge to help keep it going. It&rsquo;s easy, just head over here and sign up with PayPal. It was \"not optimal.\" Only a few people get that.&nbsp;↩",
		"keywords": ["engadget","joystiq","store","brettterpstra","engadget","joystiq","marked","massively","monday","paypal","reader","store","supported","thanks","adding","announcement","appreciate","backlink","blogging","blogs","brand","brettterpstra","brings","bubbling","challenging","changes","children","class","completelydifferent","conflict","consider","content","continue","couple","decided","developing","development","dissatisfied","easier","endnotes","energy","enjoy","enjoying","environment","everything","express","finishing","fnref","focus","footnote","footnotes","going","great","height","https","ideas","image","including","increased","ldquo","leave","loading","loved","lucrative","making","media","monetarily","monetize","monthly","needed","noscript","noteref","offering","official","optimal","original","outset","paywall","people","personality","picture","pledge","point","powers","projects","radical","rdquo","reading","realized","reversefootnote","rsquo","shakeup","share","smaller","source","srcset","starting","suboptimal","subscribers","support","tagging","title","tools","tricks","uploads","version","width","working","write","writing","years"]
	},{
		"title": "Web Excursions for January 10, 2014",
		"url": "/2014/01/10/web-excursions-for-january-10-2014/",
		"tags": ["bookmarks","ifttt","macos"],
		"date": "Jan 10<span>th</span>, 2014",
		"ts": "1389373200",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. SearchLink for Editorial Ole Moritz himself came through on this one. Droplr for Mac Droplr has updated their Mac client (App Store update coming soon). It brings the entire web interface to your Desktop with full history, view counts, sorting and more. Nice update. LayoutIt! - Interface Builder for Bootstrap A drag & drop builder for Bootstrap 3 projects. craig eley: Sifttter: An IFTTT to Day One Logger Basically a version of Slogger built on IFTTT. Nifty tool. Live Note - Realtime document collaboration I mentioned this on Twitter, but it&rsquo;s a nice lightweight editor for real-time collaborative text editing",
		"keywords": ["droplr","ifttt","store","bootstrap","builder","check","desktop","droplr","editorial","ifttt","interface","layoutit","logger","moritz","nifty","realtime","searchlink","setapp","sifttter","slogger","store","twitter","access","brings","brought","builder","built","client","collaboration","collaborative","coming","counts","craig","document","editing","editor","entire","excursions","himself","history","hundreds","interface","lightweight","mentioned","monthly","partnership","projects","rsquo","sorting","subscription","through","today","updated","version"]
	},{
		"title": "Markdown Service Tools and UTF-8",
		"url": "/2014/01/09/markdown-service-tools-and-utf-8/",
		"tags": ["markdown","markdownservices","mindmapping","service"],
		"date": "Jan 9<span>th</span>, 2014",
		"ts": "1389290400",
		"summary": "The Markdown Service Tools have been updated to 2.10. I learned some new Ruby/UTF-8 tricks in the process, and they should all be capable of handling extended character sets now. Please download and test out the new versions. Let me know if you still have any trouble with Umlats, Kanji, Cyrillic, etc. I&rsquo;ve also updated the MarkdownToMindMap Service to handle UTF-8 characters. It took me forever to figure out why they were getting mangled, but I believe I&rsquo;ve solved it in the portion of the script that copies the output to the clipboard using . For future reference, the line now looks like this: The important part being . Because it&rsquo;s calling out to a shell, the $LANG variable I use system-wide doesn&rsquo;t get set, but forcing it before the command makes the utility respect UTF-8 encoding. Markdown Service Tools v3.0.3 Download Markdown Service Tools v3.0.3 The Markdown Service Tools are a collection of macOS Services designed to make creating Markdown-formatted text that much easier. Services work in almos any macOS application. Published 01/09/14. Updated 09/14/20. Changelog Donate &bull; More info&hellip; Markdown to MindMap v1.3 Download Markdown to MindMap v1.3 Convert plain text, Markdown headlines and Markdown lists to indented lists for pasting into mind mapping apps Published 08/18/13. Updated 01/09/14. Changelog Donate &bull; More info&hellip",
		"keywords": ["ascii","character","encoding","globalization","unicode","because","changelog","convert","cyrillic","donate","download","kanji","markdown","markdowntomindmap","mindmap","published","service","services","tools","umlats","updated","almos","before","believe","calling","capable","character","characters","clipboard","collection","command","copies","creating","designed","doesn","download","easier","encoding","extended","figure","forcing","forever","formatted","getting","handle","handling","headlines","hellip","important","indented","learned","lists","looks","macos","makes","mangled","mapping","output","pasting","portion","process","rsquo","script","shell","solved","system","tricks","trouble","updated","using","utility","variable","versions"]
	},{
		"title": "Sponsor: Acorn",
		"url": "/2014/01/09/sponsor-acorn/",
		"tags": [],
		"date": "Jan 9<span>th</span>, 2014",
		"ts": "1389268800",
		"summary": "A big thank you to Gus at Flying Meat and his amazing image editing app, Acorn, for sponsoring BrettTerpstra.com this week. Acorn is an easy to use yet powerful Mac OS X image editor. Acorn is designed to be fast, intuitive, and contains the features you need to edit and create pictures like a pro. Everyone needs to edit photos at some point, but not everyone has the time to learn complicated, pricey photo editing software. This is why Acorn was created. Acorn&rsquo;s features include non-destructive filters, curves, and vector tools (to name just a few). With non-destructive filters you can chain filters together to create endless combinations of unique effects. Curves allow you to adjust the tonal response and even the individual color channels to perfect the mid-tones, shadows, highlights, and contrast in your images. Acorn&rsquo;s integrated vector tools mean you can easily add text and shapes to your digital pictures. Do all this and more with Acorn! Acorn has also won some awesome awards including Mac App Store Best of 2013, Macworld Editor&rsquo;s Choice, and Macworld 2009 Eddy Award Winner. Check out Acorn today and get started on your free 14 day trial",
		"keywords": ["acorn","flying","graphics","store","acorn","award","brettterpstra","check","choice","curves","editor","everyone","flying","macworld","store","winner","adjust","allow","amazing","awards","awesome","chain","channels","color","combinations","complicated","contains","contrast","create","created","curves","designed","destructive","digital","easily","editing","editor","effects","endless","everyone","features","filters","highlights","image","images","including","individual","integrated","intuitive","learn","needs","photo","photos","pictures","point","powerful","pricey","response","rsquo","shadows","shapes","software","sponsoring","started","thank","today","together","tonal","tones","tools","trial","unique","vector"]
	},{
		"title": "Mindmeister 9: more powerful cloud mind mapping",
		"url": "/2014/01/09/mindmeister-9-more-powerful-cloud-mind-mapping/",
		"tags": ["mindmapping","mindmeister","tools"],
		"date": "Jan 9<span>th</span>, 2014",
		"ts": "1389266160",
		"summary": "Mindmeister, my favorite online mind mapping tool, saw a major update today. With a flat UI and updated color palette, it&rsquo;s looking great, and new tools and tool layout make it more powerful than ever. One of the most exciting features is the ability to embed and export from Presentation Mode, which lets you define frames on the map and zoom between them in an order you define. It&rsquo;s a great way to present information directly from a brainstorming session, or create a slide deck using the powerful ideas behind radiant thinking. It also now features RDF export (OPML coming soon) for making it easier to get information between applications. The OPML support will be more useful to many of us on Macs, and I&rsquo;m promised that it&rsquo;s on the near-future roadmap. The icon library has expanded, and the tools for automatically finding images and wiki links have been made more obvious and accessible. In fact, I&rsquo;m finding that all of the elements I had to point out to people are now intuitive and require very little &mdash; if any &mdash; explanation. Other new features include full-screen mode (which improves Presentation Mode as well), OAuth 2.0 login through Google Apps, and a more predictable and accurate Print mode. This is a great update to Mindmeister, and it&rsquo;s an amazing tool for mind mapping in the cloud and on all devices. Check it out at www.mindmeister.com",
		"keywords": ["google","iphone","knowledge","management","mindmeister","check","google","mindmeister","oauth","presentation","print","ability","accessible","accurate","amazing","applications","automatically","behind","between","brainstorming","cloud","color","coming","create","define","devices","directly","easier","elements","embed","exciting","expanded","explanation","export","favorite","features","finding","frames","great","ideas","images","improves","information","intuitive","layout","library","links","little","login","looking","major","making","mapping","mdash","mindmeister","obvious","online","palette","people","point","powerful","predictable","promised","radiant","roadmap","rsquo","screen","session","slide","support","thinking","through","today","tools","updated","useful","using"]
	},{
		"title": "SearchLink 2.0",
		"url": "/2014/01/08/searchlink-2-0/",
		"tags": ["markdown","search","searchlink"],
		"date": "Jan 8<span>th</span>, 2014",
		"ts": "1389204780",
		"summary": "SearchLink 2.0 is up now. I had enough changes to make after the last version &mdash; which I already thought was a pretty big step forward &mdash; that I decided it was time for a major version bump. If you&rsquo;re not familliar with SearchLink as a tool for speedier blogging and online writing, see the project page for more info. First, you can now copy all config options to a file called \".searchlink\" in your home folder and SearchLink will read configuration options from that, overriding what&rsquo;s in the Automator action. If/when new options are added, you&rsquo;ll have to manually paste override values into the config file, but the benefit is that you won&rsquo;t have to reconfigure existing options every time you update to the latest version. This file is a great place to work with the new \"custom site search\" feature. You can define shortcuts (and even override existing ones) with custom Google site searches. You just define the shorthand and tell it which specific site to search when it encounters your markers. You can edit this directly in the Automator Workflow&rsquo;s \"Run Shell Script\" action, or copy the below into your file and modify there: In the last version I made it possible to select any text and treat it as a Google search without needing any syntax. This version allows you to use just to default to a Google search for the text in the square brackets. You can also use variants: Updates the link with the results of the search terms, using the title of the located page as the text for the link. The word \"me\" will be replaced with the results of the search for \"brett terpstra,\" keeping \"me\" as the link text. If any Pythonistas want to take a crack at porting the latest version, I&rsquo;m sure myself and other Editorial/Pythonista users would be grateful. Contact me for any info you need. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["engine","google","search","searchlink","automator","changelog","contact","custom","donate","download","easier","editorial","external","first","google","markdown","miscellaneous","published","pythonista","pythonistas","script","searchlink","shell","titles","updated","updates","workflow","action","added","allows","avoid","below","benefit","blogging","brackets","brett","bunch","called","changes","cleaned","config","configuration","crack","custom","decided","default","define","definitions","directly","editor","encounters","enough","familliar","feature","folder","garbage","getting","grateful","great","hellip","keeping","latest","leaving","links","located","major","manually","markers","mdash","modify","myself","needing","online","options","override","overriding","paste","porting","possible","project","properly","reconfigure","replaced","results","rsquo","search","searches","searchlink","shortcuts","shorthand","specific","speedier","square","syntax","terms","terpstra","thought","title","titles","treat","truncated","users","using","values","variants","version","writing"]
	},{
		"title": "Systematic 78 with Jeff Severns Guntzel",
		"url": "/2014/01/07/systematic-78-with-jeff-severns-guntzel/",
		"tags": ["podcast","systematic"],
		"date": "Jan 7<span>th</span>, 2014",
		"ts": "1389133740",
		"summary": "I haven&rsquo;t been posting about every episode of Systematic for a while now. I&rsquo;ve had some amazing guests lately, and if you&rsquo;re behind on the show you should definitely catch up! This week&rsquo;s guest, Jeff Severns Guntzel, is a journalist out of Minneapolis, MN, and the conversation was so much fun I had to add a pointer to it. I think you&rsquo;ll enjoy it",
		"keywords": ["minneapolis","podcast","studios","check","guntzel","minneapolis","severns","systematic","amazing","behind","catch","conversation","definitely","enjoy","episode","guest","guests","haven","journalist","pointer","posting","rsquo","think","while"]
	},{
		"title": "Twitterify Popclip Extension",
		"url": "/2014/01/06/twitterify-popclip-extension/",
		"tags": ["popclip","twitter"],
		"date": "Jan 6<span>th</span>, 2014",
		"ts": "1389031200",
		"summary": "I&rsquo;ve added a quick new PopClip extension called \"Twitterify\" to the collection. It will convert any @names and #tags in the selected text to Markdown or HTML links pointing to the user&rsquo;s page on Twitter or a Twitter search for the hashtag. It&rsquo;s something I find myself doing pretty often when writing blog posts that mention users. I rarely link hashtags, but it seemed like a pretty standard addition. By default the \"Markdown Links\" option is enabled, but you can disable it and default to HTML links when installing the extension or at any time by clicking the pencil icon in the extensions list and then clicking the gear icon next to the Twitterify extension. You can also switch formats on the fly by holding down the Option key when running it. If you have \"Markdown Links\" enabled, this will create HTML links and vice versa. Download the full set below, extract it and double click the Twitterify extension file to install just that one. The rest are all detailed in the README file for the repository, if you&rsquo;re curious. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["github","markdown","readme","twitter","becomes","brett","changelog","donate","download","extensions","links","markdown","popclip","published","readme","twitter","twitterify","updated","added","below","called","click","clicking","collection","convert","create","curious","default","detailed","disable","doing","double","enabled","extension","extensions","extract","formats","hashtag","hashtags","hellip","holding","install","installing","links","mention","myself","names","often","pencil","pointing","posts","quick","rarely","repository","rsquo","running","search","seemed","selected","standard","switch","tools","useful","users","versa","writing"]
	},{
		"title": "Web Excursions for January 06, 2014",
		"url": "/2014/01/06/web-excursions-for-january-06-2014/",
		"tags": ["bookmarks","recipe"],
		"date": "Jan 6<span>th</span>, 2014",
		"ts": "1389011160",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. The Builders High Create or consume? A great post from Rands (via Minimal Mac). hackpad This is a really cool change-tracking collaborative editor. If only it supported Markdown&hellip; I&rsquo;m still quite happy with Draft, though. Fluid Crib Sheets for Cheaters I really like the idea of using Fluid.app as my Cheaters host. I&rsquo;ve never loved the Automator web view for the same reasons that Gabe created this. Check it out. One tsp. Online Recipe Box I&rsquo;m loving Paprika these days, but here&rsquo;s another system for clipping recipes on the web and turning them into grocery lists on your iPhone. Free for 150 recipes. Siri-controlled Jekyll Blog Publishing As much fun as my system, and almost as convoluted. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["apple","handhelds","iphone","markdown","smartphones","automator","builders","cheaters","check","create","draft","fluid","jekyll","markdown","mindmeister","minimal","online","paprika","publishing","rands","recipe","sheets","almost","another","boosting","brainstorming","brought","change","clipping","collaborating","collaborative","consume","controlled","convoluted","created","editor","excursions","great","grocery","hackpad","happy","hellip","iphone","lists","loved","loving","mapping","partnership","productivity","reasons","recipes","rsquo","software","supported","system","tracking","turning","using"]
	},{
		"title": "SearchLink 1.8 is the new Auto-Link Service",
		"url": "/2014/01/04/searchlink-1-8-new-auto-link-service/",
		"tags": ["markdown","markdownservices","search","searchlink","service"],
		"date": "Jan 4<span>th</span>, 2014",
		"ts": "1388868000",
		"summary": "I&rsquo;ve updated SearchLink to v1.8 with a couple of improvements. SearchLink is a System Service for quickly turning selected text into Markdown links based on various search engines. See the SearchLink project page for more details. First, I added a configuration parameter. This will define the country for iTunes searches and the link that gets output. To change the country, open the Service in Automator and look at the top of the \"Run Shell Script\" action for the configuration options. Use any valid two-character country code (e.g. US, UK, DE, FR, etc.) between the double quotes after the option. Second, because SearchLink is replacing the AutoLink functionality in the Markdown Service Tools, I made it default to a Google search if no format links are found. Thus, it works just like the old AutoLink Service when you select just a few words and run it, replacing the selected text with a link to the first Google result. Download below, and feel free to delete the AutoLink Service at this point (it&rsquo;s not working anyway). The Markdown Service Tools have been updated to reflect this, but there&rsquo;s no other change beyond the removal of the AutoLink Service. Also, if you have any \"Gatekeeper\" issues, let me know and I&rsquo;ll update the download as needed. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["automator","country","engine","google","itunes","markdown","script","search","searchlink","shell","autolink","automator","changelog","donate","download","first","gatekeeper","google","markdown","published","script","searchlink","second","service","shell","system","tools","updated","action","added","anyway","based","because","below","between","beyond","change","character","configuration","country","couple","default","define","details","double","download","editor","engines","first","format","found","functionality","hellip","itunes","improvements","issues","leaving","links","needed","options","output","parameter","point","project","quickly","quotes","reflect","removal","replacing","rsquo","search","searches","selected","turning","updated","valid","various","words","working","works"]
	},{
		"title": "When a friend loses a pet",
		"url": "/2014/01/03/when-a-friend-loses-a-pet/",
		"tags": ["personal"],
		"date": "Jan 3<span>rd</span>, 2014",
		"ts": "1388775600",
		"summary": "I had a couple of friends recently lose their beloved pets. It&rsquo;s a tough thing to watch, and an even tougher thing to go through, but it&rsquo;s guaranteed to happen eventually1. I learned some things from my wife, who&rsquo;s lost more pets than I&rsquo;ve owned, and I think there&rsquo;s good advice here for everyone. First, be there for the bereaved. You don&rsquo;t have to talk to them about the painful subject. Take them out for coffee, invite them over to watch a movie, anything to give them a break from walking around their house where everything reminds them of Fido. I&rsquo;m sure the same can be said for human grieving, but I&rsquo;ve been fortunate not to have any close friends with major losses in that area for a while. Unlike losing a human friend, though, the end-of-life costs for a pet are more reasonable. They are, however, still a kick in the gut when you&rsquo;ve just lost a creature you&rsquo;ve known its entire life. So here&rsquo;s the big tip: pick up the cost of cremation for your friend. Call the vet as early on as possible and make sure the final costs get charged to your account. You can even be anonymous about it, if you need to. It&rsquo;s a little thing that makes a big difference. In my area, this will set you back $90-125, but it&rsquo;s a donation that will be greatly appreciated. One last thing: As suggested by Dr. Pamela Peeke (a Systematic alum), request a cast of a paw before cremation. It would make a very meaningful gift. Except in the case of some very loud parrots, which will apparently outlive me.&nbsp;↩",
		"keywords": ["death","parrot","except","first","pamela","peeke","systematic","unlike","account","advice","anonymous","apparently","appreciated","backlink","before","beloved","bereaved","birds","break","charged","class","close","coffee","couple","creature","cremation","difference","donation","endnotes","entire","eventually","everyone","everything","fnref","footnote","footnotes","fortunate","friend","friends","greatly","grieving","guaranteed","happen","house","however","human","invite","learned","little","losing","losses","major","makes","meaningful","movie","noteref","outlive","owned","painful","parrots","possible","reasonable","recently","reminds","reversefootnote","rsquo","suggested","systematic","think","through","tough","tougher","walking","watch","where","while"]
	},{
		"title": "Shoots & Leaves turns photos into plain text",
		"url": "/2014/01/02/shoots-and-leaves-turns-photos-into-plain-text/",
		"tags": ["appreview","iphone","photography"],
		"date": "Jan 2<span>nd</span>, 2014",
		"ts": "1388685600",
		"summary": "A cool new app was released today called Shoots & Leaves. It lets you snap a picture and immediately turn it into a plain text link in your clipboard for sending to an array of services and other apps. Get it? Shoots and leaves&hellip; I find it funny, anyway. You set up an upload service, choosing from Imgur, Dropbox or CloudApp (more services coming soon), and pick a default destination for the generated link. You can copy it to your clipboard as a Markdown link, send it to Drafts with a customizable template, email it, message it, send it to OmniFocus or Reminders and more. Once set up, every time you shoot a picture it&rsquo;s uploaded instantly and passed on to your chosen target. Switching targets takes just 2 taps and you&rsquo;re ready to shoot again. Whether you&rsquo;re blogging on the go or sharing images with friends, this is a great app for anybody. It&rsquo;s especially handy for those of us who like (or need) to work in plain text but want images included. Shoots & Leaves is only $1.99 today. It will go up in price soon, so check it out on the App Store and get the intro price while you can",
		"keywords": ["cloudapp","dropbox","imgur","iphone","markdown","omnifocus","store","cloudapp","drafts","dropbox","imgur","leaves","markdown","omnifocus","reminders","shoots","store","switching","again","anybody","anyway","array","blogging","called","check","choosing","chosen","clipboard","coming","customizable","default","destination","email","especially","friends","funny","generated","great","handy","hellip","images","included","instantly","intro","leaves","message","passed","picture","price","ready","released","rsquo","sending","service","services","sharing","shoot","takes","target","targets","template","today","upload","uploaded","while"]
	},{
		"title": "Sponsor: Terminology",
		"url": "/2014/01/02/sponsor-terminology/",
		"tags": [],
		"date": "Jan 2<span>nd</span>, 2014",
		"ts": "1388673120",
		"summary": "A big thanks to Agile Tortoise and their awesome app \"Terminology\" for sponsoring brettterpstra.com this week. Terminology is a browser for the English language part dictionary/thesaurus and part research tool. Terminology is designed to make it easy to explore words and phrases, diving down to more and less specific terms - accessing the web and other apps for more detail and sharing. Terminology is the perfect tool for anyone interested in honing their language. From writers working on the next great novel to marketers crafting the perfect tagline. Terminology supports integration via x-callback-url, and has its own custom action manager and directory of actions to extend its built-in resources to integrate with almost any web resource or reference app. Check it out at Agile Tortoise",
		"keywords": ["dictionaries","english","language","terminology","agile","check","english","terminology","tortoise","accessing","action","actions","almost","anyone","awesome","brettterpstra","browser","built","callback","crafting","custom","designed","detail","dictionary","directory","diving","explore","extend","great","honing","integrate","integration","interested","language","manager","marketers","novel","phrases","research","resource","resources","sharing","specific","sponsoring","supports","tagline","terms","thanks","thesaurus","words","working","writers"]
	},{
		"title": "2013: My year in review",
		"url": "/2014/01/01/2013-my-year-in-review/",
		"tags": ["jekyll","macos","nvalt","personal","service","tools"],
		"date": "Jan 1<span>st</span>, 2014",
		"ts": "1388603100",
		"summary": "This year I Launched the new brettterpstra.com on a Jekyll platform (I&rsquo;ve written about a few of my Jekyll adventures). Since then I&rsquo;ve had a couple of projects ship, so I thought I&rsquo;d take time to do my yearly review. The big news for me this year was Marked 2. I&rsquo;m really happy with the progress it&rsquo;s made, as well as the sales numbers. I consider it a big success. A barebones repository for Custom Styles got its start as well. My podcast, Systematic, has been well received and I&rsquo;ve had a blast talking to a wide range of guests. My favorite part has been the Top 3 Picks every week, which you can get a taste of in the links I scrape out and collect here. This year saw the advent of Slogger, too. It&rsquo;s still smoothing out for Mavericks, but the community support has been great. There were also a couple of releases of nvALT. Not as many as I&rsquo;d like, but it&rsquo;s been a busy year. Mavericks brought some excitement and triggered new versions of existing projects like Planter, the Markdown Service Tools and my TextExpander tools. I also had a lot of fun making the switch from OpenMeta to Mavericks tagging and experimenting with new tools and systems. I got a little healthier, starting with a new chair and the addition of a walking desk (status update). The benefits almost make up for the unholy amount of time I put into making PopClip Extensions this year. iTextEditors, my somewhat large comparison chart for iOS text editors saw plenty of updates as the arena continued to fill with competitors. I created some of my favorite bookmarklets to date this year as well, including GrabLinks, Bullseye, and Marker. I also snuck in a few reviews, including the end-of-year shebang: A few of my favorite Mac apps in 2013. Icon Grabber updated to search any platform MarkdownEditing for Sublime Text GeekTool fun Sidecar 2.0 Sidecar13 - for the little guys jTag: Auto-tagging for Jekyll nvremind: Automatic reminders for nvALT Marky the Markdownifier, reworked and refined Cheaters updates Natural Language Date Service update SearchLink 1.5 with Amazon search and affiliate links A Link Bundler Service for Bit.ly Not a bad year. If this hasn&rsquo;t been enough, check out the archives (with keyword search) to see more",
		"keywords": ["jekyll","mavericks","textexpander","amazon","automatic","bullseye","bundler","cheaters","custom","extensions","geektool","grablinks","grabber","jekyll","language","launched","markdown","markdownediting","markdownifier","marked","marker","marky","mavericks","natural","openmeta","picks","planter","popclip","searchlink","service","sidecar","since","slogger","styles","sublime","systematic","textexpander","tools","advent","adventures","affiliate","almost","amount","archives","arena","barebones","benefits","blast","bookmarklets","brettterpstra","brought","chair","chart","check","clips","collect","community","comparison","competitors","consider","continued","couple","created","editors","enough","excitement","experimenting","favorite","great","guests","happy","healthier","highlight","itexteditors","including","keyword","links","little","making","numbers","nvalt","nvremind","platform","plenty","podcast","projects","range","received","refined","releases","reminders","repository","reviews","reworked","rsquo","sales","scrape","search","shebang","smoothing","snuck","somewhat","starting","status","success","support","switch","systems","tagging","talking","taste","thought","tools","triggered","unholy","updated","updates","versions","walking","written","yearly"]
	},{
		"title": "TL;DR, a jQuery plugin for bloggers",
		"url": "/2013/12/30/tl-dr-a-jquery-plugin-for-bloggers/",
		"tags": ["blogging","javascript","jquery","plugin","reading","webdesign"],
		"date": "Dec 30<span>th</span>, 2013",
		"ts": "1388412000",
		"summary": "I made a jQuery plugin called \"TL;DR\"1 live on GitHub last night. It&rsquo;s designed for bloggers who write long posts: it adds a block with summaries and skip links automatically. It was inspired in part by QuikScan, which was pointed out to me by Christopher Allen. It&rsquo;s basically a table of contents with short snippets of text. There are a ton of options that can be configured (all detailed on the project page). It scans headers and determines sections based on your settings, then it can summarize the text automatically, or you can provide snippets using a attribute on your headlines. You can tell it how long to make auto-generated snippets, how many paragraphs to pull from and how many sentences deep it should go into each paragraph. It can figure out where an intro ends and the post begins and insert the summary at that point, if you want. You can also have it collapse the summaries and apply an animated reveal-on-click. You can even control most of the markup and classes that it outputs, so styling it is relatively easy. Check out the project page for more info. To see the experimental version in action on this site, go to the gear menu in the upper right and turn on \"TL;DR.\" Then head to a longer post and click the \"TL;DR\" block near the top2. To see one with manually curated (and hastily created) summaries, check this post. Grab the plugin on GitHub. I&rsquo;ll really only be updating it as needed for my own site, but I&rsquo;m open to suggestions and pull requests. I kind of plan to add templating to it, and possibly an algorithm that can summarize longer texts without headlines. Maybe. \"Too long, didn&rsquo;t read,\" but you knew that.&nbsp;↩ Moving forward I plan to add snippets and summaries to my posts manually, but what you&rsquo;re seeing on previous posts is the auto-generated summaries.&nbsp;↩",
		"keywords": ["github","jquery","allen","check","christopher","github","maybe","moving","quikscan","action","algorithm","animated","apply","attribute","automatically","backlink","based","begins","block","bloggers","brettterpstra","called","check","class","classes","click","collapse","configured","contents","control","created","curated","designed","detailed","determines","endnotes","experimental","figure","fnref","footnote","footnotes","generated","github","hastily","headers","headlines","height","highlighter","howtos","https","image","inspired","intro","jquery","jquery","language","ldquo","links","loading","longer","manually","marked","markup","media","needed","night","noscript","noteref","options","original","outputs","paragraph","paragraphs","picture","plaintext","plugin","podcast","point","pointed","possibly","posts","project","quikscan","rdquo","relatively","requests","reveal","reversefootnote","right","rouge","rsquo","scans","screencast","scripting","sections","seeing","sentences","settings","short","snippets","source","srcset","styling","suggestions","summaries","summarize","summary","table","templating","texts","title","tldrbored","ttscoff","updating","uploads","upper","using","version","where","width","write"]
	},{
		"title": "Web Excursions for December 28, 2013",
		"url": "/2013/12/28/web-excursions-for-december-28-2013/",
		"tags": ["bookmarks"],
		"date": "Dec 28<span>th</span>, 2013",
		"ts": "1388269320",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Simple JSON processing in shell scripts I didn&rsquo;t even know was there. This is awesome. Server Side Cheaters Cheatsheets everywhere, with some auto-build Python scripts that I look forward to playing with. &lsquo;Twas(n&rsquo;t) the Software Patent BeforeChristmas Stu Maschwitz waxes poetic on the iA Writer Pro snafu. I&rsquo;ve stayed pretty quiet about this whole thing, but let me say that anyone who claims a blue cursor is a major feat is lying. Syntax Control is an uncreative use of NSLinguisticTagger and not worth all of this attention. That is all. Facebook &lsquo;dead and buried to teens&rsquo;, research finds It seems that social media works not towards change of society, notions of individuality and connectedness, and so on but rather as a conservative force that tends to strengthen the conventional social relations and to reify society JamieMason/ImageOptim-CLI All of my favorite image compression programs on the command line, complete with a Grunt plugin for automation. Rubberband We created something similar to this for the Engadget relaunch. It&rsquo;s an essential tool for responsive design and allows modular loading and unloading of assets at viewport breakpoints. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["command","facebook","github","grunt","interface","maschwitz","python","script","shell","backblaze","beforechristmas","cheaters","cheatsheets","check","control","engadget","facebook","grunt","imageoptim","jamiemason","maschwitz","nslinguistictagger","patent","python","rubberband","server","simple","software","syntax","writer","affordably","allows","anyone","assets","automation","awesome","backs","breakpoints","brought","build","buried","change","claims","cloud","command","compression","computer","connectedness","conservative","conventional","created","cursor","design","entire","essential","everything","everywhere","excursions","favorite","finds","force","image","individuality","loading","lsquo","lying","major","media","modular","notions","partnership","playing","plugin","poetic","processing","programs","quiet","rather","reify","relations","relaunch","reliably","research","responsive","rsquo","scripts","securely","seems","shell","similar","snafu","social","society","stayed","strengthen","teens","tends","today","towards","uncreative","unloading","viewport","waxes","whole","works","worth"]
	},{
		"title": "Marked 2.2 (814)",
		"url": "/2013/12/28/marked-2-dot-2-814/",
		"tags": ["marked"],
		"date": "Dec 28<span>th</span>, 2013",
		"ts": "1388239200",
		"summary": "Marked 2.2 (814) is out in the wild. There are a lot of improvements in this one. If you have it installed, just \"Check for Updates\" from the Marked menu. If not, this would be as good a time as any to try it out. The biggest improvements have been to print headers and footers. I&rsquo;m excited to finally be offering this capability and have been working to make it as polished as I can. My favorite improvement in this round is the option to skip headers and footers on the first page of a document when printing or creating PDFs. It really makes for nicer finished documents. Also, you can now use tokens to control the output of the %date and %time variables in the headers. You can reconfigure what&rsquo;s there, or use any of the available options to create the perfect date/time formats for your needs. You can now specify a per-document header font using a MultiMarkdown metadata header. Putting at the very top of a document will use Helvetica for the headers and footers when printing that document, regardless of your preference settings. In combination with the metadata feature, you can permanently set unique styles and header/footer combinations per document. I also added a %path variable to the header/footer tokens. I&rsquo;m not certain how many people need the filesystem path to their document in their headers and footers, but it was requested a couple of times and was an easy add. In other news, \"Scroll to Edit\" now only scrolls when you&rsquo;ve made a change to the target document, not when you hit Refresh manually or trigger a refresh by changing Preferences. A small change for most users, but I&rsquo;m annoyed it took me this long to realize it was just common sense. The Autoscroll feature now has a higher top speed and more increments for adjusting. If you never knew it was there, just hit \"S\" and then use Shift-Right/Left arrows to adjust the speed (see: Markdown Teleprompter). Also, hit \"?\" because if you missed that, there&rsquo;s probably more for you to discover. Word Repetition visualization now works for CriticMarkup&rsquo;d documents, and the CriticMarkup word counts are further improved. Lastly, there are more fixes and fine-tunings than I can list (notably, BBEdit&rsquo;s markup preview works again). This is, in addition to being a pretty good feature update, a major bugfix release. Hopefully you never noticed some of the ones I&rsquo;ve fixed. If you have any problems that aren&rsquo;t covered in this release, be sure&hellip;",
		"keywords": ["bbedit","document","helvetica","language","markdown","markup","multimarkdown","again","autoscroll","bbedit","check","criticmarkup","fixes","headers","helvetica","hopefully","lastly","markdown","marked","multimarkdown","preferences","putting","refresh","repetition","right","scroll","shift","teleprompter","updates","added","adjust","adjusting","again","annoyed","arrows","automatic","available","because","biggest","bugfix","capability","certain","change","changing","combination","combinations","common","control","counts","couple","covered","create","creating","discover","document","documents","download","excited","favorite","feature","filesystem","finally","finished","first","fixed","fixes","footer","footers","formats","header","headers","higher","improved","improvement","improvements","increments","installed","major","makes","manually","markup","metadata","missed","needs","nicer","notably","noticed","offering","options","output","people","permanently","polished","preference","preview","print","printing","problems","realize","reconfigure","refresh","regardless","release","round","rsquo","scrolls","sense","settings","small","specify","speed","styles","support","target","times","tokens","trigger","tunings","unique","users","using","variable","variables","visualization","waiting","working","works"]
	},{
		"title": "Using Marked 2 as a teleprompter",
		"url": "/2013/12/27/using-marked-2-as-a-teleprompter/",
		"tags": ["markdown","marked"],
		"date": "Dec 27<span>th</span>, 2013",
		"ts": "1388190540",
		"summary": "I&rsquo;ve been messing around with creating a decent teleprompter for a long time. I&rsquo;ll probably publish one on the App Store eventually. In the meantime, here&rsquo;s a trick that I&rsquo;ve been using to turn Markdown scripts into a very passable teleprompter for screencasting and voice recordings. This requires Marked 2 and its auto-scrolling feature. All you have to do is add a Custom Style. Grab the CSS and add it to Marked in the Style preferences. Now, just open a Markdown file and choose the Teleprompter style. Type \"s\" and it will start scrolling. You can adjust the speed with Shift-left/right arrows. You can run it full screen on a laptop or secondary screen, or have it in a window to the side of your screen while you record. Adjusting the width of the screen below 900px will change the amount of text visible, so you&rsquo;ll want to play with the speed settings to get the right pace. If you know a bit of CSS, you can customize it with different font styles, colors, border widths, etc.. If you want to remove the highlight in the middle (I like it, everybody else might not), just remove the block of code between lines 23 and 31: Here&rsquo;s a quick video of it in action, just in case you haven&rsquo;t picked up Marked and can&rsquo;t try it out yet1&hellip; Now, wait until you see the version I&rsquo;ve been working on for a separate app using Canvas and CSS3 transitions to create the smoothest scrolling Markdown preview IN THE WORLD. Don&rsquo;t worry, getting Marked 2 in the App Store is my next priority. Markdown teleprompters will have to wait. You were waiting for the sale but missed it, huh? Use the coupon LATETOTHEPARTY for 20% off. Good until midnight tomorrow (the 28th).&nbsp;↩",
		"keywords": ["cascading","markdown","sheets","style","teleprompter","adjusting","canvas","custom","latetotheparty","markdown","marked","markedcustomstyles","shift","store","style","teleprompter","video","world","youtube","action","adjust","amount","arrows","background","backlink","before","below","between","block","border","bottom","change","choose","class","colors","container","content","coupon","create","creating","customize","decent","different","display","endnotes","eventually","everybody","feature","figure","fixed","fnref","footnote","footnotes","getting","github","haven","height","hellip","highlight","highlighter","https","language","laptop","ldquo","marked","master","meantime","messing","middle","midnight","missed","noteref","padding","passable","picked","plaintext","position","preferences","preview","priority","publish","quick","rdquo","record","recordings","remove","requires","reversefootnote","right","rouge","rsquo","screen","screencasting","scripts","scrolling","secondary","separate","settings","smoothest","speed","style","styles","teleprompter","teleprompters","tomorrow","transitions","trick","ttscoff","using","version","video","videoid","visible","voice","waiting","watch","while","width","widths","window","working","worry","youtube"]
	},{
		"title": "Sponsor: WriteRight & Tag Journal, the best combination for writers and bloggers",
		"url": "/2013/12/26/sponsor-writeright-and-tag-journal-the-best-combination-for-writers-and-bloggers/",
		"tags": [],
		"date": "Dec 26<span>th</span>, 2013",
		"ts": "1388059200",
		"summary": "A special thanks to Inetic/Word Magic and their apps WriteRight and Tag Journal for sponsoring BrettTerpstra.com this week. Both of these apps are gorgeous and elegantly powerful, I offer my personal recommendation to check them out! Everyone who enjoys writing needs to have a text editor and a diary at their fingertips whenever the mood strikes. WriteRight and Tag Journal are the perfect pair of tools for all writers! WriteRight for iOS is the only English/Spanish text editor in the App Store offering Synonyms, Antonyms and Phraseology tools as you write. WriteRights brilliant features will make writing fun and productive by enhancing the semantics of your texts. For a selected word, synonyms and antonyms are displayed; after making your choice, it intelligently matches the gender, tense, conjugation and pluralization. Its powerful phraseology tool suggests alternative phrases applying the same process. WriteRight includes Markdown support and iCloud and Dropbox sync. Tag Journal is a journaling application for iOS that helps to record your life events, store thoughts and ideas, and attach short videos, photos, notes and voice recordings. With seamless synchronization to your iPhone and iPad using iCloud, Tag Journal offers colorful tags to organize and retrieve your events easily. Share your entries as PDF, Markdown or HTML through Mail or iMessagges, or send them directly to Facebook. Visit the App Store to get WriteRight and Tag Journal and begin a wonderful new writing experience. Students, writers, journalists and travelers will love them",
		"keywords": ["blogging","dropbox","icloud","iphone","markdown","store","writing","antonyms","brettterpstra","dropbox","english","everyone","facebook","inetic","journal","magic","markdown","phraseology","share","spanish","store","students","synonyms","visit","writeright","writerights","antonyms","applying","attach","begin","brilliant","check","choice","colorful","conjugation","diary","directly","displayed","easily","editor","elegantly","enhancing","enjoys","entries","events","experience","features","fingertips","gender","gorgeous","helps","icloud","imessagges","iphone","ideas","includes","intelligently","journaling","journalists","making","matches","needs","notes","offer","offering","offers","organize","personal","photos","phraseology","phrases","pluralization","powerful","process","productive","recommendation","record","recordings","retrieve","seamless","selected","semantics","short","special","sponsoring","store","strikes","suggests","support","synchronization","synonyms","tense","texts","thanks","thoughts","through","tools","travelers","using","videos","voice","whenever","wonderful","write","writers","writing"]
	},{
		"title": "TagFiler updated",
		"url": "/2013/12/24/tagfiler-updated/",
		"tags": ["tagfiler"],
		"date": "Dec 24<span>th</span>, 2013",
		"ts": "1387922400",
		"summary": "Just a quick note to let everyone know that I&rsquo;ve fixed a few bugs in the tagfiler.rb script since posting it. If you&rsquo;ve installed it, grab the source from GitHub again and update your script. It now handles context paths with spaces in them properly, and if a file already exists, it does what it was originally supposed to do and increments a counter at the end of the filename until it&rsquo;s unique before moving it. Previously, it was just exiting with an error",
		"keywords": ["github","programming","scripts","github","previously","again","before","context","error","everyone","exists","exiting","filename","fixed","handles","increments","installed","moving","originally","paths","posting","properly","quick","rsquo","script","since","source","spaces","supposed","tagfiler","unique"]
	},{
		"title": "Scripting podcast and screencast prep on a Mac",
		"url": "/2013/12/24/scripting-podcast-and-screencast-prep-on-a-mac/",
		"tags": ["automator","macos","recording","scripting"],
		"date": "Dec 24<span>th</span>, 2013",
		"ts": "1387908000",
		"summary": "There&rsquo;s a lot to remember when you&rsquo;re preparing to record a screencast or a podcast. Quitting some apps, launching others, changing settings&hellip; I find it easiest just to script everything. That&rsquo;s probably not a surprise to anyone. Here are some tricks I&rsquo;ve learned along the way. You can use them to implement your own scripted environment for screencasting or podcasting. I&rsquo;ve split the two up below (podcasting and screencasting) because they have very different requirements. I have two pairs of scripts: \"Podcasting Start\" and \"Podcasting Stop,\" and \"Screencasting Start\" and \"Screencasting Stop.\" The \"start\" scripts prepare my setup for the task, the \"stop\" scripts restore it to my normal working environment. Automator vs. Applescripts vs. Shell Scripts I originally did this all with Bash scripts that I called from the command line or from an AppleScript \"do shell script\" command in LaunchBar. These days I&rsquo;m doing it all with Automator so that I can take advantage of all the things that it makes easier, while still throwing in as much shell scripting as I like. The tricks I&rsquo;m going to list here will, by and large, work in any form you want to build them in, be it shell script, AppleScript or Automator workflow. I&rsquo;ll be coming at it from an Automator perspective, though. There&rsquo;s also Keyboard Maestro. To see some alternative solutions using that app, check out this post over at MacDrifter. The most basic thing a script like this should do is quit certain applications and start others. For example, my screencasting script starts by quitting TotalFinder (so as not to confuse anyone) and Simplify (Sidecar takes up a lot of Desktop), and launches ScreenFlow automatically. The easiest way to quit and launch applications is with AppleScript. You can get fancy and create arrays to pass to a function, but if you&rsquo;re just stopping/starting a few apps every time, it&rsquo;s easy enough to just write a line of script for each one. In my fancier moments I take the time to have the script record whether an app was open at the time it ran so that I don&rsquo;t relaunch apps at the end that weren&rsquo;t running before. I won&rsquo;t go into that here, but it&rsquo;s possible. My screencasting scripts are primarily concerned with looks. Cleaning up the desktop, setting backgrounds, etc. Here are a few tricks. I like to use plain backgrounds and maintain some consistency across screencasts&hellip;",
		"keywords": ["applescript","center","dropbox","geektool","growla","launchbar","notification","script","shell","totalfinder","applescript","applescripts","audio","audioswitcher","automator","backblaze","center","cleaning","crashplan","desktop","disabling","doing","dropbox","finder","first","fortunately","geektool","github","growl","hiding","icons","input","items","keyboard","launchbar","macdrifter","machine","maestro","notification","notifications","output","picture","podcast","podcasting","quitting","remembering","screenflow","screencasting","script","scripts","shell","shush","sidecar","simplify","skype","stopwatch","totalfinder","weatherhead","while","access","across","action","advantage","aesthetics","almost","amazing","anyone","anyway","appear","applications","approach","arrays","automatically","available","awesome","background","backgrounds","backup","basic","because","before","below","binary","block","build","called","cancelled","cause","causes","causing","center","certain","change","changing","check","cinch","cleanly","coming","command","common","complicated","confuse","consistency","corruption","couple","create","deleted","desktop","detect","device","devices","dictionary","different","directly","directory","disable","distortion","distracted","distraction","documents","doing","download","earlier","easier","easiest","easily","echoes","enabling","enough","entirely","environment","everything","example","exits","fancier","fancy","figure","files","flaws","forget","freezing","function","functionality","generally","going","great","groups","halfway","having","hellip","hiding","hours","image","imagine","including","individually","input","installed","issues","itself","kicking","later","latest","launch","launches","launching","learned","legitimately","level","library","limit","listing","literally","little","looking","looks","lsquo","machine","maintain","makes","method","moments","names","nervous","network","noise","normal","normally","obsessed","often","operating","operational","options","originally","others","output","pairs","passes","password","pause","people","person","perspective","picture","podcast","podcasting","podcasts","point","pointed","popups"]
	},{
		"title": "A GeekTool Time Machine progress indicator",
		"url": "/2013/12/24/a-geektool-time-machine-progress-indicator/",
		"tags": ["geeklet","geektool"],
		"date": "Dec 24<span>th</span>, 2013",
		"ts": "1387893600",
		"summary": "Here&rsquo;s a quick hack for GeekTool users who use Time Machine and don&rsquo;t have enough stuff on their Desktop. That&rsquo;s everybody, right? I wanted a better indicator of whether Time Machine was running and how much it had left to back up. I built a little Geeklet that creates a circular progress indicator on my Desktop. You can do the same using the script below along with the ARC font (it&rsquo;s hard to find these days for some reason, so I&rsquo;m hosting a copy here). The ARC font is basically a partial circle that gets more complete as you move through the alphabet, lowercase first, then uppercase. By the time you get to \"Z,\" it&rsquo;s a full circle. Because it&rsquo;s a font, it works at any size and with any foreground color. For this Geeklet, I&rsquo;m liking just having a little 50-pixel translucent white circle on a dark area of my desktop. Save the script below to a file (e.g. \"~/scripts/tmstatus.rb\") Make it executable () Add a shell Geeklet with the path to the script as the command Install the ARC font (unzip and double click the font file) Set the Geeklet&rsquo;s font to ARCFont Change the size of the circle by adjusting the font size in the font panel Pick a foreground color/opacity by clicking the green color well in the font palette Update: I&rsquo;ve fixed the code to recognize the 100% complete state. If you want a full-circle background to make it more of a progress meter, create a second shell Geeklet and set it to the ARC font at the same size as the first one. Turn \"Override text\" on and type \"Y\" in the field. Set the color to a darker, more transparent version of the main Geeklet&rsquo;s foreground color. Use the X/Y position numbers to position it exactly over the main Geeklet and then right click and \"send to back\". The script uses (man page) and parses out the raw percentage complete, converting it to an integer between 1 and 50, which it then maps to the alphabetical character that the font uses. If there&rsquo;s no Time Machine backup running, it disappears. When you&rsquo;re testing, be sure to \"Back up now\" from the Time Machine menu bar item so you have something to work with. The ARC font is a brilliant and flexible tool for GeekTool (and NerdTool) users. The basic concept of this script can be applied to anything that offers a status report within a known range. I use the same style for CPU usage meters. Let me know what you come up with! Also, don&rsquo;t forget to grab Marked 2&hellip;",
		"keywords": ["apple","backup","geektool","machine","arcfont","because","change","desktop","explanation","geektool","geeklet","install","installation","machine","marked","nerdtool","override","adjusting","alphabet","alphabetical","applied","background","backup","basic","before","below","between","brilliant","built","character","circle","circular","click","clicking","color","command","concept","converting","coupon","create","creates","darker","desktop","disappears","double","enough","everybody","executable","field","first","fixed","flexible","foreground","forget","green","having","hosting","indicator","integer","liking","little","lowercase","meter","meters","numbers","offers","opacity","palette","panel","parses","partial","pixel","position","quick","range","recognize","report","right","rsquo","running","script","scripts","second","shell","status","stuff","style","testing","through","tmstatus","translucent","transparent","unzip","uppercase","usage","users","using","version","wanted","white","within","works"]
	},{
		"title": "Get 20% off Marked 2 before Dec 26!",
		"url": "/2013/12/23/get-20-percent-off-marked-2-before-dec-26/",
		"tags": ["marked"],
		"date": "Dec 23<span>rd</span>, 2013",
		"ts": "1387832400",
		"summary": "The headline kind of says it all. I&rsquo;m in a giving mood. Use the coupon below at checkout for 20% off a purchase of Marked 2 (regularly US $11.99): The coupon expires at 12AM Friday morning (Dec 27). Note that you can put in someone else&rsquo;s email address and give the gift of Markdown, too. See what I did there? That&rsquo;s clever holiday marketing. Don&rsquo;t let anyone tell you otherwise. Go get it, then go enjoy some time with friends and family",
		"keywords": ["gifts","holiday","markdown","multimarkdown","friday","markdown","marked","address","anyone","below","checkout","clever","coupon","email","enjoy","expires","family","friends","giving","headline","holiday","marketing","morning","regularly","rsquo"]
	},{
		"title": "Web Markdownifier for PopClip",
		"url": "/2013/12/23/web-markdownifier-for-popclip/",
		"tags": ["markdown","markdownifier","popclip"],
		"date": "Dec 23<span>rd</span>, 2013",
		"ts": "1387821600",
		"summary": "To follow up on my Marker bookmarklet, I&rsquo;ve created a PopClip extension called WebMarkdown (a.k.a. WebMD) that does pretty much the same thing (take a web page selection and turn it into Markdown). It&rsquo;s a handy trick when you&rsquo;re gathering notes or just want to save a portion of an article. For giggles, I made you a movie. It&rsquo;s not because I don&rsquo;t think you grasp what it does already, it&rsquo;s because I have free time today and it seemed like fun at the time. WebMarkdown uses an embedded copy of html2text instead of Marky, and relies on PopClip&rsquo;s ability to gather the HTML from the selection. I&rsquo;ve added it to the collection, and you can download the bunch below. The source for all my extensions is available on GitHub. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["formats","github","languages","markdown","markup","marky","writing","brett","changelog","donate","download","extensions","github","markdown","marker","marky","popclip","published","updated","webmd","webmarkdown","ability","added","article","available","because","below","bookmarklet","bunch","called","collection","created","download","embedded","extension","extensions","gather","gathering","giggles","grasp","handy","hellip","movie","notes","portion","relies","rsquo","seemed","selection","source","think","today","tools","trick","useful","writing"]
	},{
		"title": "A few of my favorite Mac apps in 2013",
		"url": "/2013/12/23/a-few-of-my-favorite-mac-apps-in-2013/",
		"tags": ["appreview","macos","productivity","utility"],
		"date": "Dec 23<span>rd</span>, 2013",
		"ts": "1387807200",
		"summary": "It&rsquo;s been a good year for software. I&rsquo;ve had the pleasure of using and exploring a ton of new apps. I took inventory of the apps installed on my main Mac, ran it through SearchLink and put together this post1 to share the ones I use the most often. The apps are roughly broken into categories, however arbitrary they may be. They&rsquo;re also listed in alphabetical order, not by preference or awesomeness. Check out the ones that sound interesting! I&rsquo;m a \"basement\" musician these days. Logic Pro X, Garage Band and the following Mac apps (plus a lot of great iOS apps) make up a pretty decent virtual studio when mixed with the right hardware: AmpKit My favorite effects processor for guitar and bass. Combined with an iRig HD and a good pair of headphones, this is a complete replacement for a practice amp and recording setup. DM1 Best drum machine app ever. Great on iOS, too. SteadyTune This accurate tuner is a must-have for guitar and bass players. Airfoil The best solution for getting audio from your Mac to other computers (see Airfoil Speakers) and AirPlay devices. Simplify My favorite desktop music controller for Spotify, iTunes and others. Also see Sidecar, my custom jacket for Simplify. Vox I was excited to announce this app when 1.0 finally hit, and I still use it almost daily. I do most of my audio editing and recording in Logic Pro X, but there are some smaller tools I wouldn&rsquo;t want to be without: Fission A perfect, affordable solution for quick edits, trimming and audio conversion. Permute 2 My favorite tool for converting both audio and video files to various formats. It uses the usual tools (ffmpeg, et al) but it has an excellent interface and high-speed process management for batch conversions. I don&rsquo;t have a ton of video apps these days; most of my video output is in the form of screencasts. I love using Motion and iMovie, but my needs are pretty simple. Reflector The best way to mirror iOS to a Mac, with built-in recording. ScreenFlow Hands down my favorite screencasting tool, with full recording and editing tools. Acorn My pick for best Photoshop replacement. ColorSchemer Studio If you make color palettes (or wish you were better at it), get this. Glui Great screen capture and image annotation. I use Droplr for sharing, but for screenshots on my blog and elsewhere, this is my pick. See also, Monosnap. Icon Slate The best way I&rsquo;ve found to&hellip;",
		"keywords": ["apple","holiday","shopping","store","acorn","airplay","airfoil","alfred","amazon","ampkit","analytics","another","applescript","audio","bartender","beamapp","bettertouchtool","billings","bookreader","brainstorming","byword","chatology","check","clarify","clone","cobook","cocoa","codekit","coderunner","collecting","colorschemer","composer","composition","conversion","criticmarkup","curio","custom","daniel","design","developer","digger","droplr","dropzone","editing","editors","evernote","expressions","fixme","fantastical","fastscripts","feeder","fission","foldingtext","games","garage","glacier","gmail","google","great","growl","grunt","hands","happy","holidays","houdahspot","hyper","ideal","imagealpha","imageoptim","indentation","jalkut","kaleidoscope","keyremap","launchbar","launchcontrol","livereload","logic","macbook","machine","mailmate","mailplane","managing","markdown","marked","messages","mindmanager","mindnode","monosnap","motion","multimarkdown","nscolor","napkin","nightly","omnifocus","oyster","pckeyboardhack","pdfpen","paintcode","paparazzi","paprika","password","pattern","patterns","permute","photoshop","playback","pochade","popclip","productivity","quickview","readkit","reading","reflector","regexrx","regexmatch","regular","screenfloat","screenflow","scrivener","seamlessly","searchlink","searching","shush","sidecar","simplify","sketch","skitch","slate","slicereader","slicy","slogger","social","someday","sparkle","speakers","spelltower","spotify","spotlight","steadytune","store","strictcode","studio","sublime","superduper","taskpaper","textexpander","together","tower","tweetbot","twitter","ulysses","unmount","utilities","version","video","visits","xcode","yoink","yummy","ability","access","account","accurate","acorn","added","adjusted","affordable","airfoil","airsquirrels","alfredapp","allow","allowing","allows","almost","alphabetical","amazing","ampkit","annotation","annotations","announce","another","anyone","anywhere","apple","applications","appstore","arbitrary","array","assign","audio","audiovideo","augmentation","automatic","automatically","awesome","awesomeness","background","backing","backlink","backup","backups","badly","based","basement"]
	},{
		"title": "Quick Tip: Tag Filer without Hazel",
		"url": "/2013/12/22/quick-tip-tag-filer-without-hazel/",
		"tags": ["launchd","macos","quicktip","tagging"],
		"date": "Dec 22<span>nd</span>, 2013",
		"ts": "1387748040",
		"summary": "If you want to run the Tag Filer script, but don&rsquo;t have Hazel handy, you still have everything you need to get it done. One option is to run a \"cleanup\" command at intervals using . The easiest way to set up a launchd task is with LaunchControl or Lingon. Create a new task with an interval timer of 5-10 minutes. Have it run the following command: Replace the with the path to your copy of the Tag Filer script. If you&rsquo;re using something other than the Desktop for your inbox, be sure to modify the argument near the beginning of the command. Now the system will scan every so often for files with tags beginning with \"#\" and pass them one at a time to the Tag Filer script. See the post for more info on that system",
		"keywords": ["hazel","launchd","linux","property","script","shell","xargs","create","desktop","filer","hazel","launchcontrol","lingon","replace","argument","beginning","cleanup","command","easiest","everything","files","handy","inbox","interval","intervals","launchd","minutes","modify","often","rsquo","script","system","timer","using"]
	},{
		"title": "Marker: Web selections to Markdown",
		"url": "/2013/12/22/marker-web-selections-to-markdown/",
		"tags": ["bookmarklet","javascript","markdown","marker","marky"],
		"date": "Dec 22<span>nd</span>, 2013",
		"ts": "1387723020",
		"summary": "This is a variant of my Bullseye bookmarklet which takes a selection &ndash; including headlines, links, and images &ndash; and converts it to Markdown using Marky. It&rsquo;s not perfect, and still has some trouble loading on SSL sites (). Because you can select partial text nodes within an element, it occasionally has trouble putting the pieces back together. It also doesn&rsquo;t currently detect whether the selection contains hidden elements, so all elements present in the selection are converted (whether you know they&rsquo;re there or not). Overall, it seems to be working great. The bookmarklet below loads from a Gist, so it will always run the latest source. I&rsquo;ll update it as I need to, and feel free to fork or just offer suggestions in the comments of the gist or by contacting me. Install by dragging the link below into your Bookmarks bar. Drag a selection on a web page, click the bookmarklet and see the magic. By default, the bookmarklet will take you directly to the raw HTML for the selection. If you&rsquo;d rather load it in Marky&rsquo;s preview, you can edit the link and change to ",
		"keywords": ["bookmark","bookmarklet","markdown","marky","because","bookmarks","bullseye","install","markdown","marker","marky","overall","below","bookmarklet","change","click","comments","contacting","contains","converted","converts","default","detect","directly","doesn","dragging","element","elements","great","headlines","hidden","images","including","latest","links","loading","loads","magic","ndash","nodes","occasionally","offer","partial","pieces","preview","putting","rather","rsquo","seems","selection","sites","source","suggestions","takes","together","trouble","using","variant","within","working"]
	},{
		"title": "Marked 2.2 (811): one bit niftier",
		"url": "/2013/12/21/marked-2-dot-2-811-one-bit-niftier/",
		"tags": ["marked"],
		"date": "Dec 21<span>st</span>, 2013",
		"ts": "1387656780",
		"summary": "Marked 2.2 (811) is out as a free update for Marked 2 users (and available for download as a free trial). If you&rsquo;re currently using Marked 2, just run Marked &rarr; Check for Updates to get the latest version. A full changelog history is now available in the Marked Help. It will be updated automatically with each release. If you&rsquo;ve missed an update or two and skipped ahead, it&rsquo;s a good way to catch some of the finer details. This particular release isn&rsquo;t huge, but there&rsquo;s some cool stuff (especially custom fonts for print/PDF headers and footers). If you make use of collapsed sections (Preferences, Window, \"Headers Collapse Sections\"), you&rsquo;ll enjoy the ability to Command-click in the table of contents to collapse and expand sections on the fly. Clipboard Preview failed to open in editor after initial save Maintain CriticMarkup tab when refreshing Fix for &laquo;include in the first line of a file If pre-processor returns empty output, skip it Return proper error message for missing included code file () Allow \"~\" in included raw file paths () Don&rsquo;t allow multiple selections when adding Custom Styles Github task items with nested paragraphs and code blocks are now handled correctly",
		"keywords": ["cascading","contents","github","language","markdown","markup","preview","sheets","style","table","window","allow","check","clipboard","collapse","command","contents","criticmarkup","custom","fixes","fountain","github","grump","headers","headlines","maintain","marked","preferences","preview","print","return","sections","style","styles","table","updates","window","ability","above","adding","ahead","allow","automatically","available","below","blocks","borders","catch","changelog","click","clicking","collapse","collapsed","contents","correctly","custom","details","download","editor","empty","enabled","enjoy","error","especially","expand","failed","finer","first","fonts","footers","handled","headers","history","holding","included","initial","items","laquo","latest","links","message","missed","missing","multiple","nested","notes","optional","output","paragraphs","particular","paths","preferences","print","processor","proper","refreshing","release","results","returns","rsquo","section","sections","selections","skipped","stuff","success","table","toggle","trial","updated","users","using","validating","version","while"]
	},{
		"title": "Automatic filing with Hazel and Mavericks tags",
		"url": "/2013/12/20/automatic-filing-with-hazel-and-mavericks-tags/",
		"tags": ["hazel","macos","productivity","scripting","tagging"],
		"date": "Dec 20<span>th</span>, 2013",
		"ts": "1387568580",
		"summary": "I&rsquo;ve finished a tag-based filing system I started working on before Mavericks. I personally think it&rsquo;s flexible enough to be shared, but others may balk at the apparent complexity. It does take some planning and setup, but it&rsquo;s an effective way for me to manage files. The basic idea is that you save new files and incoming attachments that you don&rsquo;t immediately have a place for to your Desktop. I sometimes fill up about half my Desktop (with 64px icons) with new project files over a day. Then, when you have time to review, you apply special tags that Hazel recognizes, triggering a script that handles filing based on the tags applied. Speed up the tagging process with a keyboard shortcut. The files move to their locations in a shallow folder hierarchy, and the additional tags you put on them during the review make them searchable. The path tags are redundant after filing, because the folder path already roughly represents that metadata, in most cases. You can tag a target folder with a tag name completely different from its folder name, and you can have multiple target tags on one folder. Thus, it can be handy to have the path string in the tag to know why it originally ended up in that folder. There&rsquo;s a primary set of \"context\" folders that define major divisions in tag groups. Mine include \"Projects,\" \"Work,\" \"Writing,\" and \"Archive,\" among a few others. In my system these are the root folders of what I consider multiple organization paths. These are tagged with an equal sign prefix and start with a capital letter: . When tagging a file to find them, a hash is used instead: . The path strings are colon delimited \"paths.\" Each section of the string is parsed in order from left to right. Based on the primary context tag (#Tag) that must exist for it to be picked up for filing, the first segment of the string is searched for in the root folder. The first search is for a folder tagged (@string) in the full depth of the folder system. If one is found matching the current segment, it becomes the root for any further searches. If the string continues, it does the same search for the next part within the last located folder. If at any time a tagged folder is not found, it generates new nested folders the remainder of the path string. For example: The file is picked up by Hazel when it sees a #Tag on it and passed to the filing script. The script starts with \"brainstorm\" and searches for a tagged folder in \"Writing&hellip;",
		"keywords": ["folder","hazel","management","mavericks","archive","based","brainstorming","choose","context","desktop","finding","folder","general","hazel","inbox","installing","mavericks","notes","planter","project","projects","script","scrivener","searching","shell","smart","speaking","speed","tagname","terminal","writing","action","added","ahead","ambiguously","among","another","applied","apply","assign","assigned","attachments","autocomplete","backlink","based","basic","because","becomes","before","benefit","brainstorm","brettterpstra","bring","called","capital","chain","check","checks","chmod","choose","class","clicking","colon","colons","command","common","completely","complexity","consider","containing","contains","context","contexts","continues","contract","couple","create","created","creates","creating","deeply","define","delimited","depth","desktop","different","directories","directory","divisions","draft","dropdown","easily","effective","ended","endnotes","enough","error","errors","example","executable","exist","extra","fairly","filed","filename","files","filesystem","filing","filter","finished","first","flexible","fnref","folder","folders","footnote","footnotes","found","generates","github","grouping","groups","handles","handy","height","hierarchies","hierarchy","highlight","highlighter","https","icons","image","incoming","individual","inside","installing","instantly","keyboard","keystrokes","language","ldquo","letter","letters","level","levels","lists","loading","located","locations","longer","looking","major","makes","manually","match","matched","matches","matching","mavericks","maverickstagging","media","message","metadata","moved","multiple","named","names","nested","nests","noscript","noteref","notification","often","organization","original","originally","others","parsed","passed","paths","pearson","perfectly","personally","picked","picture","plaintext","planning","planter","point","possible","prefer","prefix","primary","process","project","projects","rarely","rdquo","recognized","recognizes","redundant","rename","repetitive","represents"]
	},{
		"title": "Web Excursions for December 19, 2013",
		"url": "/2013/12/19/web-excursions-for-december-19-2013/",
		"tags": ["bookmarks"],
		"date": "Dec 19<span>th</span>, 2013",
		"ts": "1387466580",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. watch.rb modified for Jekyll Ian Gable made a quick mod to my watch.rb script to make it work better with static site generators that are modifying multiple files at once. It allows you to watch a single file for changes so you&rsquo;re not triggering the update script repeatedly. Use MailMate Rules to Easily Create OmniFocus Tasks From Flags Perfect. This is the system I had going with Mail.app and I&rsquo;m excited to get it running again with MailMate. typing.io - Typing Practice for Programmers Good practice for those brackets and parenthesis that I never got good at typing quickly. Step through lessons in JavaScript, Ruby, C, C++, Java, PHP, Perl, Haskell, Scala and more. Markdown to Evernote beta testers needed If you use both Markdown and Evernote, Martin Kopischke needs your help testing a completely-rewritten version of his Markdown to Evernote Service. Focus@Will From Systematic listener Gabriel Pagan, a great service with a mix of background music to help you concentrate. Something to fit everyone&rsquo;s needs",
		"keywords": ["evernote","markdown","cleanmymac","create","easily","evernote","flags","focus","gable","gabriel","haskell","javascript","jekyll","kopischke","mailmate","markdown","martin","omnifocus","pagan","practice","programmers","rules","scala","service","systematic","tasks","typing","again","allows","background","brackets","brought","changes","completely","concentrate","everyone","excited","excursions","files","generators","going","great","lessons","listener","modified","modifying","multiple","music","needed","needs","parenthesis","partnership","practice","quick","quickly","repeatedly","rewritten","rsquo","running","script","service","single","speed","static","system","testers","testing","through","tools","triggering","typing","version","watch"]
	},{
		"title": "Sponsor: Webydo - Professional Website Design Software",
		"url": "/2013/12/19/sponsor-webydo-professional-website-design-software/",
		"tags": [],
		"date": "Dec 19<span>th</span>, 2013",
		"ts": "1387454400",
		"summary": "A big thanks to Webydo for sponsoring BrettTerpstra.com this week! Webydo enables professional web and graphic designers to create, publish, and manage pixel-perfect websites without having to write a single line of code, and provides them with the freedom of creativity to focus on what&rsquo;s important &mdash; the DESIGN. Webydo is made by designers, for designers, and is the only solution for website creation with a built in CMS (content management system) and DMS (design management system). Webydo also gives you the option to directly bill your clients, brand Webydo as your own, and provide full cross-browser capabilities. What&rsquo;s more, with Webydo, you can efficiently create a responsive website with complete cross-browser capabilities as well. Webydo is revolutionizing the way web designers create and work with clients, as the community of 30K designers has the power to vote on the future of which features should be added to this powerful and intuitive website creator. Experience the freedom of creativity with Webydo&rsquo;s professional online design software today for free",
		"keywords": ["content","design","management","syndicate","system","website","webydo","brettterpstra","design","experience","sponsorship","syndicate","webydo","added","brand","browser","built","capabilities","clients","community","content","create","creation","creativity","creator","cross","design","designers","directly","efficiently","enables","features","focus","freedom","gives","graphic","having","important","intuitive","management","mdash","online","pixel","powerful","professional","provides","publish","responsive","revolutionizing","rsquo","single","software","solution","sponsoring","system","thanks","today","website","websites","write"]
	},{
		"title": "Icon Grabber updated to search any platform",
		"url": "/2013/12/18/icon-grabber-updated-to-search-any-platform/",
		"tags": ["iphone","macos","scripting","search"],
		"date": "Dec 18<span>th</span>, 2013",
		"ts": "1387380840",
		"summary": "I&rsquo;ve updated the icon grabber script to allow you to specify what type of application you&rsquo;re looking for, be it iPhone, iPad or Mac. In case you&rsquo;re not familiar, this script uses the iTunes API to locate the highest resolution icon for an application based on a search query. It previously always assumed \"iPad.\" Just include \"#iphone,\" \"#ipad,\" or \"#mac\" in your query string to search the respective platform (defaults to iPad). It also works with \"@\" if you&rsquo;re using unquoted arguments in a shell. The string can appear anywhere in the query and will be stripped out before processing. The resulting filename will now include \"iphone,\" \"ipad,\" or \"_mac\" in the filename. For example, or&hellip; I&rsquo;ve also updated the Automator app version with this update, download it at the end of this post. The Gist has been updated with the new features, you can grab it here. ItunesIcon v2.4 Download ItunesIcon v2.4 An application for quickly retrieving the high-res icon for any Mac or iOS apps. Published 02/15/14. Updated 09/01/21. Changelog Donate &bull; More info&hellip",
		"keywords": ["github","interface","iphone","launchbar","programming","query","string","automator","changelog","donate","download","itunesicon","published","updated","allow","anywhere","appear","arguments","assumed","based","before","defaults","download","example","familiar","features","filename","grabber","hellip","highest","iphone","itunes","iphone","looking","platform","previously","processing","query","quickly","resolution","respective","resulting","retrieving","rsquo","script","search","shell","specify","string","stripped","unquoted","updated","using","version","works"]
	},{
		"title": "Systematic 75 with Jose de Pierola",
		"url": "/2013/12/17/systematic-75-with-jose-de-pierola/",
		"tags": ["podcast","systematic"],
		"date": "Dec 17<span>th</span>, 2013",
		"ts": "1387311000",
		"summary": "I had a great conversation with Jose de Pierola on Systematic this week. He&rsquo;s a writer these days, but he began working in tech back in the 80s, followed by a period of studying the humanities and eschewing technology, and finally incorporating tech into his workflow in intrugiung and exciting ways. Thanks to Jose for taking the time to share his history and thoughts on technology. Check out the episode at 5by5",
		"keywords": ["pierola","systematic","check","pierola","systematic","thanks","began","conversation","episode","eschewing","exciting","finally","followed","great","history","humanities","intrugiung","rsquo","share","studying","taking","technology","thoughts","workflow","working","writer"]
	},{
		"title": "A fix for network issues on my 2013 MacBook Air",
		"url": "/2013/12/16/a-fix-for-network-issues-on-my-2013-macbook-air/",
		"tags": ["apple","hardware","network"],
		"date": "Dec 16<span>th</span>, 2013",
		"ts": "1387210080",
		"summary": "Let me start by saying that I&rsquo;m horrible at understanding anything network-related in my computer setup. The following is just what worked for me in solving this problem, and may be of use to others. My 2013 13\" Macbook Air started having network speed and connection issues, primarily with WiFi, but also when hardwired through my 27\" Thunderbolt Display. My older Air, now owned by my wife, was able to connect to the same networks without issue and achieve reasonable speeds. I first noticed the issue on other people&rsquo;s networks, but chalked it up to cruddy routers and low bandwidth on their end. Then I noticed it on my home network, where I have a 100Mbps line and a 5GHz wireless router (new Airport Extreme). I was seeing about 1.2Mbps down and 0.2 up. My wife was getting 80 down and 5 up. I had to figure out what was going on. My setup includes a slightly older Airport Extreme in the basement that extends the wireless network and which has several machines hardwired to it. I spent a few hours poring over router settings, rebooting devices and even paring the network down to just one router. Nothing was consistently helping. I did notice a bandwidth difference between the 2.4GHz channel and the 5GHz, but speed tests didn&rsquo;t yield the same results every time. Oddly, the 2.4GHz channel was generally faster than the 5GHz. I still can&rsquo;t explain that, but I can tell you what ultimately solved it (after poring over the support forums): toggling Bluetooth. The instant I turned off Bluetooth on my Air, connection speeds became the same as my wife&rsquo;s (who never turns on Bluetooth). I know that Bluetooth can conflict with 2.4GHz signals, but it also fixed the 5GHz connection. I have no idea why. Turning it back on again did not change the speeds, it just needed to be toggled off once. I&rsquo;ve set up ControlPlane to toggle Bluetooth automatically when connecting and disconnecting my 27\" Thunderbolt Display now, which is where I use my external keyboard and mouse. I&rsquo;m not sure if the problem creeps back up eventually, but I&rsquo;m just toggling it regularly to avoid the issue altogether. Now that I&rsquo;ve found it, network connections and speeds are improved across all the networks I connect to",
		"keywords": ["airport","bluetooth","extreme","macbook","router","wireless","airport","bluetooth","controlplane","display","extreme","hopefully","macbook","nothing","oddly","thunderbolt","turning","achieve","across","again","altogether","automatically","avoid","bandwidth","basement","became","between","chalked","change","channel","computer","conflict","connect","connecting","connections","consistently","creeps","cruddy","devices","difference","disconnecting","eventually","explain","extends","external","faster","figure","first","fixed","forums","found","generally","getting","going","hardwired","having","helping","horrible","hours","improved","includes","instant","issues","keyboard","machines","mouse","needed","network","networks","noticed","older","others","owned","paring","people","poring","primarily","problem","reasonable","rebooting","regularly","related","results","router","routers","rsquo","saying","seeing","settings","setup","several","signals","slightly","solved","solving","speed","speeds","spent","started","support","tests","through","toggle","toggled","toggling","turned","turns","understanding","where","wireless","worked","yield"]
	},{
		"title": "The winners of the Cognitive Productivity giveaway",
		"url": "/2013/12/14/the-winners-of-the-cognitive-productivity-giveaway/",
		"tags": ["books","giveaway"],
		"date": "Dec 14<span>th</span>, 2013",
		"ts": "1387047300",
		"summary": "There was a pretty huge response to the Cognitive Productivity giveaway, and I&rsquo;d like to thank everyone who entered. The winners of a free copy (and all subsequent updates) are: If you&rsquo;re on the list and don&rsquo;t hear from the Giveaway Robot shortly, let me know. If you didn&rsquo;t win and haven&rsquo;t checked out the book yet, you can pick up a copy at Leanpub",
		"keywords": ["leanpub","literature","productivity","andrew","calligaris","christian","claudio","cognitive","david","giveaway","leanpub","productivity","reuter","rikert","robot","shuttleworth","thomas","checked","entered","everyone","giveaway","haven","response","rsquo","shortly","thank","updates","winners"]
	},{
		"title": "Now we'll sit through my vacation slideshow...",
		"url": "/2013/12/14/now-well-sit-through-my-vacation-slideshow/",
		"tags": ["personal","photography"],
		"date": "Dec 14<span>th</span>, 2013",
		"ts": "1387036200",
		"summary": "I haven&rsquo;t taken a real vacation with just my wife and no family reunion or work to do since my honeymoon. We got away last week and had a blast in San Francisco. It was nice to visit a city I knew pretty well but hadn&rsquo;t seen 1/10th of yet. Chillier than I&rsquo;d hoped, but a good 50&deg; warmer than the town I left behind. Since I don&rsquo;t have any new creations or other news to post today, I present the highlights of our journey",
		"keywords": ["california","francisco","states","united","chillier","francisco","since","behind","blast","creations","family","haven","highlights","honeymoon","hoped","journey","reunion","rsquo","since","taken","today","vacation","visit","warmer"]
	},{
		"title": "Sponsor: Atlassian's agile guide",
		"url": "/2013/12/12/sponsor-atlassians-agile-guide/",
		"tags": [],
		"date": "Dec 12<span>th</span>, 2013",
		"ts": "1386849600",
		"summary": "Thanks to Atlassian for sponsoring BrettTerpstra.com this week. What&rsquo;s the point of an agile standup meeting? Gone are the days of 30-minute status meetings where most people are half-asleep or pecking away on their laptops, oblivious to what&rsquo;s being said. Agile standups are the leaner, more efficient cousin of status meetings where attendees actually stand up. On our feet, we&rsquo;re more focused, attentive, and concise. It&rsquo;s science! Whether you need robust tools for planning and tracking projects, communicating with coworkers, deploying products, or just some general tips on how to run an agile shop (and how to run them Rong?), Atlassian is here to offer you the tools and advice you need to get the most out of your agile practice",
		"keywords": ["agile","atlassian","development","management","meeting","programming","project","scrum","stand","syndicate","agile","atlassian","brettterpstra","sponsorship","syndicate","thanks","advice","agile","asleep","attendees","attentive","communicating","concise","cousin","coworkers","deploying","efficient","focused","general","laptops","leaner","meeting","meetings","minute","oblivious","offer","pecking","people","planning","point","practice","products","projects","robust","rsquo","science","sponsoring","stand","standup","standups","status","tools","tracking","where"]
	},{
		"title": "Web Excursions for December 11, 2013",
		"url": "/2013/12/11/web-excursions-for-december-11-2013/",
		"tags": ["bookmarks","editor","markdown"],
		"date": "Dec 11<span>th</span>, 2013",
		"ts": "1386781920",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. This is the \"Brett&rsquo;s On Vacation\" edition. I have lousy wifi and an intentional lack of computer time here in sunny-but-chilly California. Nonetheless, here are a few destinations of interest&hellip; Sir Trevor JS Sir Trevor provides a means to transform a text input into a rich content editor thats been re-imagined for the web. The content of the editor is stored as markdown inside a JSON object, with the structure and the contents of the post serialized inside of it. The Not Nurse Ratched System for Mind-Mapping Markdown A great trick for using Tree.app to outline in Markdown. SkyJack: A Drone to Hack All Drones Yes. Markedstyle The start of a better interface for sharing Marked Custom Styles, by Matt Stauffer. Now we just need to work out live previews of available styles&hellip; latr.fm A simple, free, and straightforward service for bookmarking podcasts to \"listen later.\"",
		"keywords": ["editors","freeware","markdown","brett","california","check","custom","drone","drones","mapping","markdown","marked","markedstyle","nonetheless","nurse","ratched","setapp","skyjack","stauffer","styles","system","trevor","vacation","access","available","bookmarking","brought","chilly","computer","content","contents","destinations","edition","editor","excursions","great","hellip","hundreds","imagined","input","inside","intentional","interest","interface","later","listen","lousy","markdown","monthly","object","outline","partnership","podcasts","previews","provides","rsquo","serialized","service","sharing","simple","stored","straightforward","structure","styles","subscription","sunny","thats","today","transform","trick","using"]
	},{
		"title": "Giveaway! Five Copies of \"Cognitive Productivity\"",
		"url": "/2013/12/07/giveaway-five-copies-of-cognitive-productivity/",
		"tags": ["bookreview","books","productivity"],
		"date": "Dec 7<span>th</span>, 2013",
		"ts": "1386450000",
		"summary": "If you&rsquo;re interested in putting more of your brain into your productivity pursuits, Luc P. Beaudoin&rsquo;s book Cognitive Productivity is one you&rsquo;ll want to read. Luc is a Ph.D. in Cognitive Science, currently adjunct professor at Simon Fraser University where hes developed software to enhance self-regulated learning. The book covers the concepts, principles and strategies surrounding using knowledge to enhance productivity. It doesn&rsquo;t start with the tools, as a lot of us tend to do, but rather focuses on what you need to know about your brain and yourself to start enhancing productivity. Tools aren&rsquo;t neglected, though, and Part 3 of the book is dedicated to building a toolbox that harnesses tech and software to build serious productivity. The book is published on Leanpub, where it can be (and is) constantly updated. Leanpub allows a flexible pricing scheme, and the suggested price for this publication is $22.99. The author has generously provided five copies of Cognitive Productivity for my readers. If you&rsquo;re interested in reading up on intelligently approaching productivity, just enter below. Entries will be accepted until 12:00pm CST on Saturday, December 14th. Sorry, this giveaway has ended",
		"keywords": ["cognitive","fraser","science","sciences","simon","social","university","beaudoin","cognitive","entries","fraser","leanpub","productivity","saturday","science","simon","sorry","tools","university","accepted","adjunct","allows","approaching","author","below","brain","build","building","check","concepts","constantly","copies","covers","dedicated","developed","doesn","ended","enhance","enhancing","enter","flexible","focuses","generously","giveaway","harnesses","intelligently","interested","knowledge","learning","neglected","price","pricing","principles","productivity","professor","publication","published","pursuits","putting","rather","readers","reading","regulated","rsquo","scheme","serious","software","strategies","suggested","surrounding","toolbox","tools","updated","using","where"]
	},{
		"title": "Sponsor: Pencils.com",
		"url": "/2013/12/05/sponsor-pencils-dot-com/",
		"tags": [],
		"date": "Dec 5<span>th</span>, 2013",
		"ts": "1386244800",
		"summary": "Thanks to Pencils.com for sponsoring BrettTerpstra.com this week. At Pencils.com, we believe that creativity is the greatest of all virtues. And, with our selection of unique, high-quality pencils, notebooks, and creative tools, we&rsquo;ve got everything you need to unleash yours. Whether you&rsquo;re a pencil nut who knows all the brands (Caran d&rsquo;Ache, Blackwing, Faber-Castell, we stock them all), or a casual doodler looking for something to inspire you, there&rsquo;s something for you on Pencils.com. Combine that with our legendary customer service and fast, reliable shipping, and you&rsquo;ve got some serious creative potential. So, go ahead and read the story of the $40 pencil, learn about the pencil company that has been around since the French Revolution, and find the perfect notebook to capture your ideas. If you&rsquo;re in the giving mood, we also have gifts for artists, writers, musicians, and anyone else on your shopping list. Above all else, stay creative",
		"keywords": ["creativity","pencil","pencils","syndicate","above","blackwing","brettterpstra","caran","castell","faber","french","pencils","revolution","sponsorship","syndicate","thanks","ahead","anyone","artists","believe","brands","capture","casual","company","creative","creativity","customer","doodler","everything","gifts","giving","greatest","ideas","inspire","knows","learn","legendary","looking","musicians","notebook","notebooks","pencil","pencils","potential","quality","reliable","rsquo","selection","serious","service","shipping","shopping","since","sponsoring","stock","story","tools","unique","unleash","virtues","writers"]
	},{
		"title": "Marked 2.2 807: page numbers and more!",
		"url": "/2013/12/04/marked-2-dot-2-807-page-numbers-and-more/",
		"tags": ["marked"],
		"date": "Dec 4<span>th</span>, 2013",
		"ts": "1386176820",
		"summary": "Marked 2.2 (807) is up. For current customers, use Marked &rarr; Check for Updates to update, and the free trial on the website includes the latest features. The most exciting improvement is the ability to add customizable headers and footers for printing and PDF export. You can insert variables for Title, Date, Time, Page Number and Page Total in whatever string format you want to use. Just head for Marked &rarr; Preferences &rarr; Print to see the options. I&rsquo;ve also updated the CriticMarkup word counts after finding some bugs. Marked can show separate word counts for each panel of the CriticMarkup output, and now they&rsquo;re far more accurate than in the last version. If you haven&rsquo;t tried Marked 2, be sure to swing by and download the free trial",
		"keywords": ["cascading","criticmarkup","language","markup","sheets","snippet","style","check","criticmarkup","marked","preferences","print","title","updates","ability","accurate","counts","customers","customizable","download","exciting","export","features","finding","footers","format","haven","headers","improvement","includes","latest","options","output","panel","printing","rsquo","separate","string","swing","trial","tried","updated","variables","version","website","whatever"]
	},{
		"title": "Thanksgiving update: Systematic casting call",
		"url": "/2013/11/28/thanksgiving-update-systematic-casting-call/",
		"tags": ["podcast","systematic"],
		"date": "Nov 28<span>th</span>, 2013",
		"ts": "1385662380",
		"summary": "I can&rsquo;t tell you how much I&rsquo;ve enjoyed the last week as all kinds of Systematic casting call responses have come in. Listening to people of all ages from all around the world has been making me cheerful in a way I can&rsquo;t fully explain. Thanks to everyone who&rsquo;s brightened my week. I&rsquo;ll be starting to contact some of you this week to talk about scheduling. I&rsquo;m going to keep this going. I&rsquo;ll still be scheduling guests that I hunt down myself, but I now have a wealth of \"regular\" people doing amazing things to talk to, which is exactly what Systematic has always been about for me. I&rsquo;ll mention it on the shows, and hopefully continue to receive notes from people with great stories. For those who haven&rsquo;t yet, if you&rsquo;d ever be interested in being a guest on Systematic, you should definitely sit down for five minutes and tell me about yourself. I haven&rsquo;t heard one yet that was anything but wonderful to listen to. Just make a recording &mdash; audio quality isn&rsquo;t important, only what you have to say &mdash; and toss it into the Audio Drop. I would ask one favor: because I didn&rsquo;t build any kind of database system for this (yet), it&rsquo;s quite helpful if you include your full name in the audio filename. A few people have sent video, too, which is also really fun. Don&rsquo;t be shy! Happy Thanksgiving, and a big thank you to all the Systematic listeners",
		"keywords": ["thanksgiving","audio","happy","listening","systematic","thanks","thanksgiving","amazing","audio","because","brightened","build","casting","cheerful","contact","continue","database","definitely","doing","enjoyed","everyone","explain","favor","filename","fully","going","great","guest","guests","haven","heard","helpful","hopefully","important","interested","kinds","listen","listeners","making","mdash","mention","minutes","myself","notes","people","quality","receive","recording","regular","responses","rsquo","scheduling","shows","starting","stories","system","thank","video","wealth","wonderful","world"]
	},{
		"title": "MindNode 3 for iOS",
		"url": "/2013/11/28/mindnode-3-for-ios/",
		"tags": ["iphone","mindmapping"],
		"date": "Nov 28<span>th</span>, 2013",
		"ts": "1385647200",
		"summary": "MindNode 3 for iOS is out, and it&rsquo;s beautiful. I have a soft spot for the affordable-yet-wonderful mind mapping app for both Mac and iOS. It syncs flawlessly across the platforms with iCloud, and it&rsquo;s a pleasure to use. The latest update adds new interface polish, sharing and publishing options, and an amazing new icon, among other things. I think the trick originated with iThoughts HD, but it&rsquo;s amazingly handy: when you&rsquo;re done typing in a node, tap space three times to make a child, or return three times to make a sibling. There are two ways to make children with just a tap as well1, so you can mind map as quickly as possible. It also makes it easy to draw connections between two nodes and shape the bezier curve. You can quickly detach nodes, shuffle them with auto-arrangement and drag them to other branches. The auto layout feature is beautifully animated and adept at keeping everything looking good. There&rsquo;s even a dropdown for a quick Table of Contents type overview of your map for navigation, which is especially handy if you&rsquo;re working zoomed in and don&rsquo;t want to keep zooming in and out. Speaking of looking good, the lines, the text, the colors and the user interface are all impeccably designed. I love using this app. You can pick from multiple color themes (not a bad one in the bunch) and have your branches automatically colored. Manually adjusting colors on nodes takes just a couple of taps, and you can change the line type (solid, dashed, dotted) too. You can apply a node&rsquo;s settings to all child nodes, current and future, so creating a custom design is an easy task. MindNode 3 costs $9.99 US (universal app) and is available on the App Store now. don&rsquo;t repeat that sentence out of context.&nbsp;↩",
		"keywords": ["icloud","macintosh","mindnode","store","contents","manually","mindnode","speaking","store","table","across","adept","adjusting","affordable","amazing","amazingly","among","animated","apple","apply","arrangement","automatically","available","backlink","beautiful","beautifully","between","bezier","branches","brettterpstra","bunch","change","child","children","class","color","colored","colors","connections","context","couple","creating","curve","custom","dashed","design","designed","detach","dirty","dotted","dropdown","endnotes","especially","everything","feature","flawlessly","fnref","footnote","footnotes","handy","height","https","icloud","ithoughts","image","impeccably","interface","itunes","keeping","latest","layout","loading","looking","makes","mapping","media","mindnode","mindnodemin","multiple","navigation","nodes","noscript","noteref","options","original","originated","overview","picture","platforms","polish","possible","publishing","quick","quickly","repeat","return","reversefootnote","rsquo","screenshot","sentence","settings","shape","sharing","shuffle","sibling","solid","source","space","srcset","syncs","takes","themes","think","times","title","trick","typing","universal","uploads","using","width","wonderful","working","zoomed","zooming"]
	},{
		"title": "Sponsor: Fracture. Your picture, directly on glass.",
		"url": "/2013/11/28/sponsor-fracture-your-picture-directly-on-glass/",
		"tags": [],
		"date": "Nov 28<span>th</span>, 2013",
		"ts": "1385640000",
		"summary": "Fracture prints your photo in vivid color directly on glass. It&rsquo;s a picture, frame, & mount all in one. It&rsquo;s a modern, elegant, and affordable way to print and display your favorite memories. Your print comes with everything you need to display your photo, right in the durable packaging. Fractures come in a variety of sizes and prices, starting at just $12, with free shipping on orders of $100 or more. Fracture prints make great Christmas gifts and are the perfect way to fill up empty walls in your new home or apartment. Check it out",
		"keywords": ["fracture","shopping","check","christmas","fracture","fractures","sponsorship","syndicate","thanks","affordable","apartment","color","comes","directly","display","durable","elegant","empty","everything","favorite","frame","gifts","glass","great","memories","modern","mount","orders","packaging","photo","picture","prices","print","prints","right","rsquo","shipping","sizes","sponsoring","starting","variety","vivid","walls"]
	},{
		"title": "A collection of Custom Styles for Marked",
		"url": "/2013/11/27/a-collection-of-custom-styles-for-marked/",
		"tags": ["design","github","marked"],
		"date": "Nov 27<span>th</span>, 2013",
		"ts": "1385559840",
		"summary": "I finally realized I was probably never going to find the time to build a whole community platform for sharing Marked styles, and I don&rsquo;t know how many people would participate anyway. So I started a Github repository for it. It has one contribution right now, and that&rsquo;s from me. I often make Styles that I don&rsquo;t include in the defaults for one reason or another, so if nothing else, I have a place to put those, now. Grump is a little experiment I did last night that I rather like. If you have Styles you&rsquo;re willing to share, please either submit a pull request (if you&rsquo;re a Github user), or just contact me directly and I&rsquo;ll add it with credit to you. Requests and issues with Styles can be added to the Issues section. Just save the CSS file to your disk. You can open any Style in the list and then hit the \"Raw\" button to get a file ready for \"Save to&hellip;\". I suggest saving to , as in the near future Marked will read from that folder automatically. Then, open up the Style Preferences in Marked and click the \"+\" button under the Custom Styles list. Locate the file and select it. Now it will appear in your Styles dropdown selection and you can optionally make it the default window style. Custom Styles are added to the keyboard menu under Command-Opt-#, where # is 1-9 in the order they&rsquo;re added. I&rsquo;ve been creating my styles with Compass and Sass. I just turn on and point Marked to the output CSS file. Turn on \"Track CSS Changes\" under the Style list in Marked, and every time Compass compiles, Marked will update without refreshing the page (LiveReload-style injection). The document markup hasn&rsquo;t changed between v1 and v2 of Marked, so the original style guide still applies. There are just a few things to worry about for full compatibility. Inverted styles, poetry mode and print settings. However, submissions that lack any of these are still accepted, as people can add their own if they need to. The one thing your Style does need (aside from looking great in Marked), is the header.css information, customized to your Style. Just stick it at the top. I prefer to Base 64 encode any custom fonts in order to make the Stylesheet a single-file download with no online requirements. If you can make it work other ways, I&rsquo;m open to folder downloads, etc. Eventually I plan to create a bundle format for them. Thanks, and I hope you&rsquo;ll consider sharing the custom styles you create, even if&hellip;",
		"keywords": ["cascading","compass","github","sheets","style","changes","command","compass","creating","custom","eventually","github","grump","however","inverted","issues","livereload","marked","preferences","requests","style","styles","stylesheet","thanks","track","using","accepted","added","another","anyway","appear","applies","aside","automatically","between","build","bundle","button","changed","click","community","compatibility","compiles","consider","contact","contribution","create","creating","credit","custom","customized","default","defaults","directly","document","download","downloads","dropdown","either","encode","evolutions","experiment","finally","folder","fonts","format","going","great","guide","header","hellip","information","injection","issues","keyboard","little","looking","markup","night","nothing","often","online","optionally","original","output","people","platform","poetry","point","prefer","print","rather","ready","realized","refreshing","repository","revisions","right","rsquo","saving","section","selection","settings","share","sharing","single","started","stick","style","styles","submissions","suggest","under","where","whole","willing","window","worry"]
	},{
		"title": "Marked 2.2",
		"url": "/2013/11/26/marked-2-dot-2/",
		"tags": ["markdown","marked","multimarkdown"],
		"date": "Nov 26<span>th</span>, 2013",
		"ts": "1385514900",
		"summary": "Marked 2.2 is out, and it&rsquo;s a pretty big update. Stability, speed and rendering fixes and improvements, as well as some new features. I&rsquo;m working on a screencast about some of them, but it won&rsquo;t be ready before my Thanksgiving trip. Soon. The major highlights (in my opinion) are the ability to create blank new files and open them in your editor, separate word counts/stats for different panels of the CriticMarkup preview, and the ability to quickly locate and edit nested files within a multi-file document. That last one&rsquo;s my favorite, but it&rsquo;s going to take a screencast to explain it properly. For now, there&rsquo;s the help page. If you haven&rsquo;t picked up a copy, this is a great time to jump on board. There&rsquo;s a free 7-day trial waiting for you. Here are the release notes. I&rsquo;m also working on getting back to putting up a version history page, coming soon. Oh, I almost forgot to mention: this update fixes some Scrivener issues and improves support. Notes and annotations can now be included or hidden, and the \"blank screen\" syndrome should be no more. Even for non-English-language users. If E is used and no default external editor is selected, offer to let the user pick one. Keyword drawer design update. Smoother animation and scrolling for Zoom feature That&rsquo;s right, N does something now. No, Marked is not planning to be an editor, but it now allows you to start a new document and open it in both Marked and your text editor from one place. Added the ability to save a Clipboard (V) Preview Use the Save Clipboard Preview command in the File and Gear menus When pressing E (Edit in External Editor) on a Clipboard Preview, before opening the editor it will allow you to save it to disk. If you don&rsquo;t manually save a clipboard preview, it&rsquo;s considered transient and is cleaned up when the window closes. \"Quick Toggles\" in App Menu for global preferences that you may want to switch on and off quickly. Some of these may become per-document settings, but for now affect all open documents on refresh CriticMarkup Preview toolbar now shows the correct word count for each tab Detailed Info palette now shows correct stats for the current tab I said it would be too hard to do, but I figured it out the same day the support request came in. Yay&hellip; {/} navigation for CriticMarkup Tabs Marked&rsquo;s multi-document and book features are some of my personal&hellip;",
		"keywords": ["computer","editor","multimarkdown","added","autosave","boundaries","clean","clipboard","create","criticmarkup","detailed","editor","english","export","external","fixed","fixes","hovering","improvements","included","keyword","leanpub","marked","memory","multimarkdown","notes","performance","press","pressing","preview","quick","return","scrivener","smoother","stability","thanksgiving","toggles","updates","video","welcome","ability","allow","allows","almost","animation","annotations","authors","automatically","before","blank","block","board","canceling","cleaned","clicking","clipboard","closes","coming","command","considered","count","counts","crash","create","default","design","different","document","documents","drawer","editor","explain","external","favorite","favorites","feature","features","figured","filename","files","fixes","forgot","format","formats","frontmatter","getting","global","going","great","handle","handling","haven","hellip","hidden","highlights","history","improve","improvements","improves","included","includes","including","index","issues","language","launched","major","management","manually","mention","menus","merge","metadata","moving","multi","navigation","nested","notes","offer","older","opening","optionally","palette","panels","personal","picked","planning","plays","points","popup","preferences","pressing","preview","processing","properly","putting","quickly","ready","refresh","release","renaming","rendering","repeated","repetition","represents","requirement","right","rsquo","screen","screencast","scrolling","selected","separate","settings","showing","shows","specifiers","speed","stats","stipping","support","switch","syndrome","syntax","temporary","thought","tokens","toolbar","transient","trial","tweaks","updating","users","using","various","version","viewport","visible","waiting","watcher","where","window","within","working"]
	},{
		"title": "MarkdownEditing for Sublime Text updates",
		"url": "/2013/11/23/markdownediting-for-sublime-text-updates/",
		"tags": ["markdown","markdownediting","sublimetext"],
		"date": "Nov 23<span>rd</span>, 2013",
		"ts": "1385214600",
		"summary": "I&rsquo;m excited to announce that MarkdownEditing, the Sublime Text package I started to scratch a prose-in-Sublime itch, is now a community project. The repository has been turned over to the SublimeText-Markdown organization on GitHub, and development is being headed up by Ali Ayas. Check out the new GitHub project page for some details on all of the recent developments. Not everything is documented yet, but there are a lot of features and fixes happening daily on it now. The package started out as an \"opinionated\" set of styles and features. Basically, it was what I wanted to use and I haven&rsquo;t paid much attention to other people&rsquo;s requests for custom options and features. Ali is making it a \"democratic\" package with more configuration options and a feature set to appeal to a wider range of people. It even has full Github Flavored Markdown support with highlighting for fenced code blocks. The ultimate goal right now is to build the \"One Markdown Package To Rule Them All.\" We&rsquo;re hoping that we can assimilate some of the features (and even developers) of other Markdown packages, providing a single package you can install to cover every Markdown need. I don&rsquo;t know yet how receptive other package developers will be to the idea, but if you have Markdown-related features you&rsquo;d like to contribute, please fork and send pull requests! The package is up-to-date in Package Control, and should be compatible with both Sublime Text 2 and 3. It&rsquo;s even in the top trending packages right now! If you&rsquo;re a Sublime Text user and Markdown writer, be sure to check out the latest stuff and contribute to the GitHub repo",
		"keywords": ["control","github","package","programming","sublimetext","check","control","flavored","github","github","markdown","markdownediting","package","sublime","sublimetext","announce","appeal","assimilate","blocks","build","check","community","compatible","configuration","contribute","cover","custom","daily","democratic","details","developers","development","developments","documented","everything","excited","feature","features","fenced","fixes","happening","haven","headed","highlighting","hoping","install","latest","making","opinionated","options","organization","package","packages","people","picking","project","prose","providing","range","recent","receptive","related","repository","requests","right","rsquo","running","scratch","single","started","stuff","styles","support","thanks","trending","turned","ultimate","wanted","wider","writer"]
	},{
		"title": "Casting Call: Systematic Audition",
		"url": "/2013/11/22/casting-call-systematic-audition/",
		"tags": ["systematic"],
		"date": "Nov 22<span>nd</span>, 2013",
		"ts": "1385130960",
		"summary": "This might be a cockamamy scheme, but I&rsquo;m taking auditions for an upcoming Systematic guest. I&rsquo;m looking for people who: You have 5 minutes to wow me. Go! Here&rsquo;s how I&rsquo;m running this. I figure if you want to be on a podcast, you probably have the means to record a 2-5 minute clip introducing yourself and grabbing my attention with your savage wit or heartening story. Record at \"internet quality,\" no big fancy files needed. You can do it with Voice Recorder on your iPhone, QuickTime Player, or call a friend on Skype and ask them to record you. It&rsquo;s all good. Once you have a clip, head over to brettterpstra.com/audiodrop and type \"Systematic\" into the field. Then, enter your name and an email I can reach you at. You have the option to add a note, and feel free. Once you click the \"Choose file and upload button\" and select your recording, it will all be whisked away to a private server and I&rsquo;ll get a notification. I make no promises at all. This could be a bust, or I could be overwhelmed with very worthy potential guests. I just want to try it, and hopefully meet some new people along the way",
		"keywords": ["apple","iphone","player","quicktime","skype","bonus","choose","player","quicktime","record","recorder","skype","systematic","upload","voice","audiodrop","auditions","between","brettterpstra","button","calls","click","cockamamy","combination","decent","definition","email","enter","fancy","field","figure","files","friend","grabbing","guest","guests","headphone","headset","heartening","hellip","hopefully","iphone","interesting","interests","internet","introducing","looking","microphone","minute","minutes","needed","notification","overwhelmed","people","permissive","podcast","points","potential","private","promises","quality","questions","rambling","reach","record","recording","rsquo","running","savage","scheme","server","story","summarize","taking","talking","technology","thoughts","upcoming","upload","whisked","worthy"]
	},{
		"title": "Stay abreast with App.net Broadcast",
		"url": "/2013/11/22/stay-abreast-with-app-dot-net-broadcast/",
		"tags": [],
		"date": "Nov 22<span>nd</span>, 2013",
		"ts": "1385128800",
		"summary": "App.net announced a new feature today called \"Broadcast.\" It&rsquo;s a way to selectively subscribe to and receive push notifications from the news sources most important to you. When a source you&rsquo;ve subscribed to publishes a Broadcast, you recieve a push notification (of whatever type you prefer) on your iOS or Android device. Broadcasters are allowed a maximum of 12 alerts per day, and most of the channels have far fewer than that. As social media begins to replace RSS for many people, it&rsquo;s easier than ever for things you care about to get lost in your stream. This is a great way to easily highlight just the news you want to stay on top of. It&rsquo;s also a great way for readers to stay abreast of happenings, especially if they want to follow blogs with a slower posting rate (like this one). You just need the iOS or Android app to subscribe to a broadcast. For more information on how to publish your own, see the announcement post. If you browse the available channels, you&rsquo;ll find brettterpstra.com, too",
		"keywords": ["android","broadcast","caldwell","dalton","technology","twitter","android","broadcast","broadcasters","abreast","alerts","allowed","announced","announcement","available","begins","blogs","brettterpstra","broadcast","browse","called","channels","device","easier","easily","especially","feature","fewer","great","happenings","highlight","important","information","maximum","media","notification","notifications","people","posting","prefer","publish","publishes","readers","receive","recieve","replace","rsquo","selectively","slower","social","source","sources","stream","subscribe","subscribed","today","whatever"]
	},{
		"title": "MailMate and OmniFocus, productive hacking",
		"url": "/2013/11/21/mailmate-and-omnifocus/",
		"tags": ["email","mailmate","omnifocus","productivity"],
		"date": "Nov 21<span>st</span>, 2013",
		"ts": "1385081700",
		"summary": "TL;DR: Enable OmniFocus support in MailMate by turning on Experimental Features in General Preferences. Add Omnifocus.mmBundle to \"~/Library/Application Support/MailMate/Bundles/\" and edit the \"Commands/Add With Summary.mmCommand\" plist to change the hotkey. I&rsquo;ve been searching for a new email client for a long, long time now. I&rsquo;ve gone through just about every available option, from Mutt to AirMail, Postbox to MailPlane, and many along the way. I use each one exclusively for a week to see what issues I run into, what problems I need solved and whether or not I think I can stick with it. This week&rsquo;s test is MailMate, an email client with Markdown features, advanced rulesets, smart mailboxes and much more. It was recently \"crowd-funded\" and it was promising enough that I was happy to pledge some cash just to see what would happen. I&rsquo;d tried MailMate in the past, but it hadn&rsquo;t stuck. I was intrigued enough by its powerful features (well-highlighted by Gabe Weatherhead) that I came around and gave it another shot. I&rsquo;m blown away by both the default functionality and the extensibility of the system. The one thing I couldn&rsquo;t get working was integration with OmniFocus. The clipper failed to grab a message URL, and I couldn&rsquo;t find a way to script or hack what I needed. After some digging and with a little help from my friends, it turned out the solution was already available as a bundle. You just have to enable the \"Experimental features\" in preferences, and then look under the Commands menu after restarting MailMate. Here&rsquo;s where \"normal\" people can stop reading. For those who want to dig into the power of the underlying system&hellip; The bundle system that gets turned on when you enable this feature is exciting to nerds like me. It closely resembles the system that TextMate uses for building plugins and adding functionality. Each bundle contains commands that can be added to the menu system in MailMate, as well as a \"bin\" folder which can include tools built in any scripting language available to the system. To see examples of all of this in action, explore the existing bundles in \"/Applications/MailMate.app/Contents/SharedSupport/Bundles/\". There&rsquo;s also a mechanism for overriding and extending built-in bundles without touching core files (just like TextMate). If you put a bundle in \"~/Library/Application Support/MailMate/Bundles/\" which contains the same UUID as the default bundle, it&hellip;",
		"keywords": ["client","email","identifier","mailmate","mailplane","markdown","omnifocus","postbox","textmate","unique","universally","airmail","applications","bundles","commands","contents","download","experimental","features","general","jacob","library","mailmate","mailplane","markdown","omnifocus","omnifocus","plist","postbox","preferences","sharedsupport","summary","support","textmate","unzip","weatherhead","action","added","adding","advanced","alter","another","available","backlink","below","blockquote","blown","brettterpstra","building","built","bundle","bundles","change","changed","changing","class","client","clipper","closely","cocoa","comes","command","commands","community","contains","contents","couldn","crowd","custom","default","detail","details","digging","editor","email","embedded","endnotes","enough","entry","example","examples","excellent","excited","exciting","explorations","explore","extending","extensibility","failed","feature","features","files","finite","fnref","folder","footnote","footnotes","found","freron","friends","functionality","funded","hacking","happen","happy","harvard","height","hellip","highlight","highlighted","highlighter","hotkey","https","identifier","image","indiegogo","inside","integration","intrigued","isdelta","issues","keyequivalent","keybindings","language","ldquo","little","loading","looking","macdrifter","mailboxes","mailmate","mailmateexperimentalprefs","makes","making","matches","mechanism","media","message","mmbundle","mmcommand","modifiers","needed","nerds","normal","noscript","noteref","original","override","overriding","package","people","picture","plaintext","pledge","plist","plugins","point","portion","possibilities","powerful","preferences","problems","productivity","projects","promising","quick","rdquo","reading","recently","replacing","resembles","restarting","reversefootnote","right","rouge","rsquo","rulesets","script","scripting","searching","seeing","settings","smart","solution","solved","source","srcset","standard","stick","stuck","support","system","telling","think","through","times","title","tools","touching","tried","turned","turning","under","underlying","uploads","wanted","where","width","window","workflows","working"]
	},{
		"title": "Sponsor: Voila",
		"url": "/2013/11/21/sponsor-voila/",
		"tags": [],
		"date": "Nov 21<span>st</span>, 2013",
		"ts": "1385035200",
		"summary": "Thanks to Global Delight for sponsoring BrettTerpstra.com this week! As a Mac user, you know how crucial it is to have a simple and robust Screen Capture Tool in your arsenal. Voila is the most powerful screen capturing software available for your Mac, that not just lets you capture or record content, but also share across seamlessly. Voila is the perfect screen recorder for your Mac. You can easily make high quality product demos, DIY app simulations, and tutorials. Create interactive content by recording your Mac screen along with audio and all your click streams. Complete by annotating your screenshots with professional tools and value added features. Record like a pro and publish your final project to FTP/SFTP, Tumblr, Dropbox, Evernote and YouTube with Voila. Made for Mavericks, Voila is simple and intuitive. With Voila, keep your captures organized, within your reach and enjoy a boost in productivity. Try Voila today. Download Free Trial",
		"keywords": ["delight","dropbox","evernote","global","macintosh","mavericks","screencast","tumblr","youtube","brettterpstra","capture","create","delight","download","dropbox","evernote","global","mavericks","record","screen","sponsorship","syndicate","thanks","trial","tumblr","voila","youtube","across","added","annotating","arsenal","audio","available","boost","capture","captures","capturing","click","content","crucial","demos","easily","enjoy","features","interactive","intuitive","organized","powerful","product","productivity","professional","project","publish","quality","reach","record","recorder","recording","robust","screen","screenshots","seamlessly","share","simple","simulations","software","sponsoring","streams","today","tools","tutorials","value","within"]
	},{
		"title": "Begin 1.5 released",
		"url": "/2013/11/20/begin-1-dot-5-released/",
		"tags": ["appstore","iphone","productivity","themes"],
		"date": "Nov 20<span>th</span>, 2013",
		"ts": "1384959780",
		"summary": "Begin 1.5 for iPhone has been released on the iTunes App Store. Begin is an iPhone app that lets you quickly gather todos and check them off or move them to \"tomorrow\" with simple gestures. I first mentioned Begin when it was released, and it&rsquo;s progressed nicely with this version bump, which boasts quite a few refinements and new features: There are now six themes, including the gorgeous Solarized themes, as well as five fonts to choose from. If you&rsquo;re looking for a simple todo list app without an overkill of bells and whistles, Begin is an excellent option. Check it out in the App Store",
		"keywords": ["iphone","itunes","store","begin","chance","check","disable","reminder","screen","solarized","store","tasks","alert","apple","backlink","badge","begin","beginscreenshot","bells","boasts","brettterpstra","check","choose","class","count","custom","daily","double","endnotes","ethanschoonover","excellent","extended","extension","features","first","fnref","fonts","footnote","footnotes","gather","gestures","giveaway","gorgeous","height","https","iphone","itunes","image","including","indicator","iphone","itunes","ldquo","loading","looking","media","mentioned","nicely","noscript","noteref","original","overkill","picture","progressed","purchased","quickly","rdquo","refinements","released","remaining","reminders","reversefootnote","rsquo","scheduling","second","simple","solarized","source","srcset","stick","tapping","tasks","themes","title","todos","tomorrow","typefaces","uncompleted","uploads","version","weekends","whistles","width"]
	},{
		"title": "Systematic 71 with David Sparks",
		"url": "/2013/11/19/systematic-71-with-david-sparks/",
		"tags": ["podcast","systematic"],
		"date": "Nov 19<span>th</span>, 2013",
		"ts": "1384900680",
		"summary": "I was joined this week by my buddy David Sparks (MacSparky) to talk about his new email field guide. I showed my typical-of-late lack of preparation and our conversation digressed into a few completely unrelated &ndash; albeit interesting &ndash; zones. Whether you join us for the tangential voyage or not, you should check out \"Email\" on iBooks. It&rsquo;s a relevant read for anyone with access to the potential life-suck of electronic mail",
		"keywords": ["david","email","sparks","studios","twitter","check","david","email","macsparky","sparks","access","albeit","anyone","buddy","check","completely","conversation","digressed","electronic","email","episode","field","guide","ibooks","interesting","joined","ndash","potential","preparation","relevant","rsquo","showed","tangential","typical","unrelated","voyage","zones"]
	},{
		"title": "More languages for the GeekTool Weather geeklet",
		"url": "/2013/11/16/more-languages-for-the-geektool-weather-geeklet/",
		"tags": ["geeklet","geektool","icons","weather"],
		"date": "Nov 16<span>th</span>, 2013",
		"ts": "1384607400",
		"summary": "I&rsquo;ve received a few new languages for the Multilingual Weather and Forecast geeklet, including an updated version of the German translation and a new Catalan localization. Modifying the geeklet to work with your language is as easy as renaming the locale-specific file to \"weather_localization.rb\" in the same folder as the script. Set your location and units of measurement in that file and you&rsquo;ll get a forecast and local weather in your native tongue. The download includes icons that you can display as an image geeklet at any size and transparency. Just point the configuration to the folder where the icon should be updated, then create a new image geeklet with the \"weathericon.png\" file as its source. When the main weather geeklets update, that file will be replaced with an appropriate icon and your desktop will update automatically. Localized GeekTool Weather and Forecast v1.5 Download Localized GeekTool Weather and Forecast v1.5 Get the weather and forecast on your desktop in multiple languages. Includes French, German, Dutch, Italian, Norwegian, Swedish, Polish, Spanish, Russian, Catalan and Japanese with easy extensibility. Published 07/31/12. Updated 11/16/13. Changelog Donate &bull; More info&hellip",
		"keywords": ["geektool","weather","catalan","changelog","donate","download","dutch","forecast","french","geektool","german","includes","italian","japanese","localized","modifying","multilingual","norwegian","polish","published","russian","spanish","swedish","updated","weather","automatically","configuration","create","desktop","display","download","extensibility","folder","forecast","geeklet","geeklets","hellip","icons","image","includes","including","language","languages","local","locale","localization","location","measurement","multiple","native","point","quick","received","renaming","replaced","rsquo","script","source","specific","tongue","translation","transparency","units","updated","version","weather","weathericon","where"]
	},{
		"title": "Web Excursions for November 14, 2013",
		"url": "/2013/11/14/web-excursions-for-november-14-2013/",
		"tags": ["bookmarks","email","macos","tagging"],
		"date": "Nov 14<span>th</span>, 2013",
		"ts": "1384463040",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. The Email Field Guide Another excellent addition to David Spark&rsquo;s \"Field Guides\" series. This one tackles the topic of email with over 300 pages, 1.5 hours of video and more. Xcode Cheat Sheet The Tower crew has a handy PDF with Xcode shortcuts you might not know about. I&rsquo;ll probably add these to Cheaters soon&hellip; in the meantime, Tower is 50% off this week (I highly recommend it for git work). MailMate Explorations Gabe Weatherhead dives into one of the most promising email clients in development. I&rsquo;ve pledged funding to the campaign to keep it going, hopefully you will too after you see what Gabe digs up in this article. Handle Mavericks Tags with Alfred 2 More Mavericks tagging fun, this time with Alfred. Clean Links I think I&rsquo;ve mentioned this one before, but this is a great little iPhone app for cleaning up and un-shortening URLS when writing or for sharing them. Supports x-callback-url for integration with most text editing/posting apps. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["apple","client","david","email","field","guides","iphone","mavericks","spark","xcode","alfred","another","cheat","cheaters","check","clean","david","email","explorations","field","guide","guides","handle","links","mailmate","mavericks","mindmeister","sheet","spark","supports","tower","weatherhead","xcode","article","before","boosting","brainstorming","brought","callback","campaign","cleaning","clients","collaborating","collaborative","development","dives","editing","email","excellent","excursions","funding","going","great","handy","hellip","highly","hopefully","hours","iphone","integration","little","mapping","meantime","mentioned","pages","partnership","pledged","posting","productivity","promising","recommend","rsquo","series","sharing","shortcuts","shortening","software","tackles","tagging","think","topic","video","writing"]
	},{
		"title": "Sponsor: Lootback",
		"url": "/2013/11/14/sponsor-lootback/",
		"tags": [],
		"date": "Nov 14<span>th</span>, 2013",
		"ts": "1384430400",
		"summary": "Thanks to Lootback for sponsoring BrettTerpstra.com this week. Your client deadline is in the morning and you really need some web design resources to finish out the project. A dollar here and a dollar there, often stock items add up quickly. Just because you&rsquo;re using stock doesn&rsquo;t mean you have to jack up your prices. There is a better way to stay competitive. Lootback, the newest addition to your design toolbelt, pays you to make your purchase from the big stock retailers like Envato, iStock, Shutterstock, DepositPhotos, and ThinkStock. With Lootback you can search all the marketplaces in one spot. Once you find that perfect item, create an account with Lootback, then head over to the other marketplace and buy it. Lootback will track your purchase and get paid a commission for generating the sale. Then they split that commission with you and credit your account to lower your overall costs. Its a pretty unique idea that Ive never seen before. Lootback will save you time and money, so be sure to give it a try",
		"keywords": ["depositphotos","design","envato","getty","images","istockphoto","lootback","shutterstock","thinkstock","brettterpstra","depositphotos","envato","lootback","shutterstock","sponsorship","syndicate","thanks","thinkstock","account","because","before","client","commission","competitive","create","credit","deadline","design","doesn","dollar","finish","generating","istock","items","lower","marketplace","marketplaces","money","morning","newest","often","overall","prices","project","quickly","resources","retailers","rsquo","search","split","sponsoring","stock","toolbelt","track","unique","using"]
	},{
		"title": "Systematic 70 with Jamie Phelps",
		"url": "/2013/11/12/systematic-70-with-jamie-phelps/",
		"tags": ["podcast","systematic"],
		"date": "Nov 12<span>th</span>, 2013",
		"ts": "1384300920",
		"summary": "I had the pleasure of interviewing my buddy Jamie Phelps, a.k.a. jxpx777 on Systematic this week. The conversation covered magic, education, home entertainment and a wide variety of other topics. We even dug into our favorite text editor themes, just in case you&rsquo;re nerdy enough to care. We talked about Texas, too, but I cut it out. Mostly for time (it&rsquo;s a long episode&hellip;), plus I don&rsquo;t want to perturb all of Texas with my own ignorant opinions. I love Texas because Jamie loves Texas, and I love Jamie. Enough said. Thanks to Jamie for making the time, and to everyone for listening. Check out the episode at 5by5",
		"keywords": ["studios","systematic","texas","twitter","check","enough","jamie","mostly","phelps","systematic","texas","thanks","because","buddy","conversation","covered","editor","education","enough","entertainment","episode","everyone","favorite","hellip","ignorant","interviewing","listening","loves","magic","making","nerdy","opinions","perturb","rsquo","talked","themes","topics","variety"]
	},{
		"title": "Command line bar chart (for GeekTool, et al)",
		"url": "/2013/11/12/command-line-bar-chart-for-geektool-et-al/",
		"tags": ["geeklet","geektool","scripting"],
		"date": "Nov 12<span>th</span>, 2013",
		"ts": "1384265220",
		"summary": "This is a script I&rsquo;m using with GeekTool to output a bar chart of stats for my blog to my desktop. It&rsquo;s specifically geared toward the data returned by FeedPress, but I&rsquo;m posting it because it can pretty easily be modified to work with any date-based data set. The concept is actually easy enough to use with any sequential data, and can be modified to output horizontal bars as well. It parses through a JSON data object (requires the JSON gem) containing a set of objects with dates and counts, creating an array of dates and totals, one for each day (or whatever increments the data provides). It then outputs one row at a time, determining whether each column has a high enough total to generate a block in that level of the bar. You can set a maximum number of columns and a max height that will scale based on the high and low numbers in the data set. Note that you&rsquo;ll need to use a fixed-width font to display this. There&rsquo;s sample data from the FeedPress API at the bottom of the script that you can use to compare with other data sources and adjust the script accordingly. Feel free to copy or fork the script on GitHub; I&rsquo;d love to see what you do with it",
		"keywords": ["geektool","github","interface","object","programming","feedpress","geektool","github","adjust","array","based","because","block","bottom","chart","column","columns","compare","concept","containing","counts","creating","dates","desktop","determining","display","easily","enough","fixed","geared","height","horizontal","increments","level","maximum","modified","numbers","object","objects","output","outputs","parses","posting","provides","requires","returned","rsquo","sample","scale","script","sequential","sources","specifically","stats","through","totals","toward","using","whatever","width"]
	},{
		"title": "Planter 2.0 with Mavericks tagging",
		"url": "/2013/11/09/planter-2-dot-0-with-mavericks-tagging/",
		"tags": ["macos","planter","scripting","tagging","tools"],
		"date": "Nov 9<span>th</span>, 2013",
		"ts": "1384008540",
		"summary": "I&rsquo;ve finished the biggest update to Planter thus far, and bumped it to version 2.0. I don&rsquo;t know how popular this project is or ever will be, but I still find it useful enough to keep in good shape. Since it&rsquo;s been a while, I&rsquo;ll recap. Planter is a tool that allows you to \"plant\" directory hierarchies on the fly or from templates with variables accepted on the command line that replace placeholders in the template. It takes tab-indented lists and turns them into a directory structure. You can include files and bundles in a template to have them copied into folders in the hierarchy at the time of creation. This release adds the ability to assign Mavericks tags, either statically as part of a template or as variables that can be assigned at the time of planting. It uses standard Unix tools to do this, no extra utilities are required. It also adds the ability to run \"post-processing\" scripts embedded in the templates. You can use this to incorporate remote files, handle creating git repositories, etc. For example, you could \"plant\" a website structure, include a boilerplate stylesheet and index.html, then use to download the latest version of jQuery into the script folder. It now lets you repeat variables, and you can assign different defaults to different instances of the same variable placeholder. You can also make a variable completely optional, and skip it/use the default value by passing \".\" or \"-\" in its position in the command. See the project page for more details on all of this. I&rsquo;ve renamed the command \"plant.\" You can, of course, call it whatever you like, but seemed more intuitive to me than . I&rsquo;m not updating the LaunchBar version as I&rsquo;m not using it anymore, but it&rsquo;s still available on the project page with the older version of Planter, if you want it. By the way, I&rsquo;ve also silently updated the following for Mavericks compatibility",
		"keywords": ["command","directory","interface","launchbar","mavericks","plant","structure","launchbar","markdown","mavericks","planter","references","searchlink","service","since","tools","ability","accepted","allows","anymore","assign","assigned","available","biggest","boilerplate","bumped","bundles","command","compatibility","completely","copied","creating","creation","default","defaults","details","different","directory","download","either","embedded","enough","example","extra","files","finished","fixed","folder","folders","footnotes","handle","hierarchies","hierarchy","incorporate","indented","index","intuitive","jquery","latest","lists","longer","mangles","older","optional","passing","placeholder","placeholders","plant","planting","popular","position","processing","project","recap","release","remote","renamed","repaired","repeat","replace","reported","repositories","required","rsquo","script","scripts","seemed","shape","silently","standard","statically","structure","stylesheet","takes","template","templates","tools","turns","updated","updating","useful","using","utilities","value","variable","variables","version","website","whatever","while"]
	},{
		"title": "Marked 2.1 (793) with improved word repetition checking",
		"url": "/2013/11/08/marked-2-dot-1-793-with-improved-word-repetition-checking/",
		"tags": ["markdown","marked"],
		"date": "Nov 8<span>th</span>, 2013",
		"ts": "1383928500",
		"summary": "Marked 2.1 (793) just went live. Current users can use \"Marked &rarr; Check for Updates,\" and anyone else can download a trial version at http://marked2app.com. The biggest new feature, aside from redesigned Export and Keyword Highlight drawers, is the ability to ignore words when checking word repetition. You can edit a list of words to ignore in the Proofing preferences, but there&rsquo;s an easier way: When in the \"Visualize Word Repetition\" view (Control-Command-W), you can just Option-Click a highlighted word to ignore it temporarily (for the current document, and for as long as the the document is open). If you want to permanently ignore a word in all documents, use Shift-Option-Click to add it to the list in Preferences. Ignored words added in this manner will automatically be stripped down to their \"stem,\" meaning that if you ignore \"progressions,\" it will add \"progress\" to the ignore words, thus picking up \"progress,\" \"progressive,\" \"progression,\" and \"progressions.\" It&rsquo;s assumed that an ignored word is to be ignored regardless of its conjugation and pluralization. If you want to ignore just a specific instance of a word, you can edit the Proofing->Ignore Repeats panel directly. The new drawer designs are updated to remove linen backgrounds and overly-rounded edges. The highlight key has also been removed from the document itself and added to the Keyword Highlight drawer (Command-Shift-K). There&rsquo;s also a fix for some issues viewing Scrivener documents. I&rsquo;m working on a complete rewrite of that system that should alleviate any remaining issues. I love Scrivener and want to make the preview process as seamless as possible. Watch for more updates on that soon. Check out the current version at Marked2App.com",
		"keywords": ["marked","check","click","command","control","export","highlight","ignore","ignored","keyword","marked","preferences","proofing","repeats","repetition","scrivener","shift","updates","visualize","watch","ability","added","anyone","aside","assumed","automatically","backgrounds","biggest","checking","conjugation","designs","directly","document","documents","download","drawer","drawers","easier","edges","feature","highlight","highlighted","ignore","ignored","instance","issues","itself","linen","marked","meaning","overly","panel","permanently","picking","pluralization","possible","preferences","preview","process","progression","progressions","progressive","redesigned","regardless","remaining","remove","removed","repetition","rewrite","rounded","rsquo","seamless","specific","stripped","system","temporarily","trial","updated","updates","users","version","viewing","words","working"]
	},{
		"title": "Sponsor: Meet Techi: All the tech news in one place",
		"url": "/2013/11/07/sponsor-meet-techi-all-the-tech-news-in-one-place/",
		"tags": [],
		"date": "Nov 7<span>th</span>, 2013",
		"ts": "1383825600",
		"summary": "Thanks to Techi for sponsoring BrettTerpstra.com this week. Techi.com is a site dedicated to all things tech. From updates on Sony&rsquo;s PS4 to reports on Google&rsquo;s latest acquisition; whether you&rsquo;re looking for the latest Apple product or looking for views on mobile web, Techi is the site to visit. Techi.com&rsquo;s news is sourced from thousands of sites from across the Internet, then curated by an editorial team with their finger constantly on the pulse of the industry&rsquo;s most vital developments. You also get a quick summary of the news so you save time and read only what interests you most. In addition to the best news curated from across the Web, Techi.com also offers exclusive original articles and stories featured in the Drudge Report, Reddit, NYTimes, Google news, and many more. You don&rsquo;t even have to visit daily. Just sign up for the daily newsletter and get the latest tech news direct to your inbox &mdash; with no fuss whatsoever &mdash; in time for that commute or mid-day coffee. Don&rsquo;t spend your morning sifting through RSS feeds looking for the hot news. Go for the instant solution: get it all from Techi.com in less time than it takes to make your coffee",
		"keywords": ["apple","drudge","google","report","techi","apple","brettterpstra","drudge","google","internet","nytimes","reddit","report","sponsorship","syndicate","techi","thanks","acquisition","across","articles","coffee","commute","constantly","curated","daily","dedicated","developments","direct","editorial","exclusive","featured","feeds","finger","inbox","industry","instant","interests","latest","looking","mdash","mobile","morning","newsletter","offers","original","product","pulse","quick","reports","rsquo","sifting","sites","solution","sourced","spend","sponsoring","stories","summary","takes","thousands","through","updates","views","visit","vital"]
	},{
		"title": "Web Excursions for November 03, 2013",
		"url": "/2013/11/03/web-excursions-for-november-03-2013/",
		"tags": ["bookmarks"],
		"date": "Nov 3<span>rd</span>, 2013",
		"ts": "1383495300",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. Hovercraft! Turn reStructuredText into beautiful Impress.js slideshows. Check out the demo for a very impressive overview. jdberry/tag I&rsquo;ve been working on this, but James Berry beat me to it. Command line tagging and tag search for Mavericks that&rsquo;s way faster than using . App Performance Supercharged by New iPhone 5s Everybody loves charts. Interesting to see the iOS 7 wait times actually increased between the iPhone 4s and 5. The 5s is clearly going to be worth the upgrade for me&hellip; when Verizon decides it&rsquo;s ok. scripties/bin/tagsearch A great little Perl script for more complex CLI tag searches than my little bash function does. Handles complex boolean searches with \"+\" and \"-\" prefixes for AND searches and excludes. Goldee App for hue If you&rsquo;ve sprung for the Phillips Hue bulbs, this looks like an awesome application for them. If only my wife and I got up at the same time&hellip; Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["command","hovercraft","interface","iphone","mavericks","spotlight","backblaze","berry","check","command","everybody","goldee","handles","hovercraft","impress","interesting","james","mavericks","performance","phillips","supercharged","verizon","affordably","awesome","backs","beautiful","between","boolean","brought","bulbs","charts","clearly","cloud","complex","computer","decides","entire","everything","excludes","excursions","faster","function","going","great","hellip","iphone","impressive","increased","jdberry","little","looks","loves","overview","partnership","prefixes","restructuredtext","reliably","rsquo","script","scripties","search","searches","securely","slideshows","sprung","tagging","tagsearch","times","today","upgrade","using","working","worth"]
	},{
		"title": "Bash completion for Mac app aliases",
		"url": "/2013/11/02/bash-completion-for-mac-app-aliases/",
		"tags": ["scripting","terminal"],
		"date": "Nov 2<span>nd</span>, 2013",
		"ts": "1383397200",
		"summary": "I have a slew of aliases that launch various apps. Quite a few of them launch apps that I generally only use with one type of file. Xcode and TaskPaper, for example. I wanted a completion system that would find just the applicable files in the directory. In most cases with these apps there&rsquo;s only one file per project, so being able to type and hit tab to open the file for the current project is handy. Documentation on and isn&rsquo;t great, so it took me a while to figure out what should have been pretty simple. I got it, though, and I like the results. Here&rsquo;s the script. You&rsquo;ll want to modify it to add the applications and aliases you want, but it&rsquo;s simple enough that it shouldn&rsquo;t take a lot of explanation. Add some aliases at the top (examples in the comments), build out case statements for them, and then make sure they&rsquo;re all listed in the command at the bottom. Happy tabbing",
		"keywords": ["command","interface","management","taskpaper","xcode","happy","taskpaper","xcode","aliases","applicable","applications","bottom","build","command","comments","directory","enough","example","examples","explanation","figure","files","generally","great","handy","launch","listed","modify","nifty","project","results","rsquo","script","shouldn","simple","statements","system","tabbing","various","wanted","while"]
	},{
		"title": "Marked 2 tips: Long-form reading with Marked",
		"url": "/2013/11/01/marked-2-tips-long-form-reading-with-marked/",
		"tags": ["marked"],
		"date": "Nov 1<span>st</span>, 2013",
		"ts": "1383328800",
		"summary": "Marked 2 is great for live previews while you write Markdown, but it&rsquo;s also very handy for reading long form articles. There&rsquo;s a variety of themes to choose from and many features for quickly navigating through long pieces. The easiest way to read a blog post or web article in Marked is to grab an article to your clipboard using Marky or Bullseye, open Marked 2, and type Command-Shift-V to preview the contents of the clipboard. If you want to store an article permanently (and have nvALT), just drag a URL to the notes list in nvALT and hold down the Option key to convert it to Markdown. Here&rsquo;s a list of Marked 2 features you quite likely don&rsquo;t know about. For full information on all of Marked&rsquo;s features, see the help guide in the application, or visit it on the web. Pick a theme that suits you. The built-in themes include a variety of styles that cater to multiple preferences for line-height, font and other tastes. You can add or build your own custom theme if nothing suits you. Adjust the text size with Command-plus and Command-minus. Reset with Command-0. To auto-scroll (in any theme except for Multi-column), use \"s\" to begin scrolling and Shift-left/right arrow keys to adjust the speed. Escape or \"s\" stops scrolling. In full screen with a custom style this actually makes a pretty good Markdown teleprompter. Set bookmarks while you&rsquo;re reading long articles by using Shift-# (any number 1-9), and return to them pressing just the number you picked. The bookmarks only persist while the file is open, but they&rsquo;re handy when you want to skip ahead and then return to where you were. You can navigate multiple bookmarks in sequence. Use \"n\" and \"p\" to go to the next or previous bookmark in numeric order, and use \"N\" and \"P\" (Shift-n/p) to navigate in page sequence. For an overview of these single-key shortcuts at any time, type \"?\" in the Marked preview. \"j\" and \"k\" move up and down (or left and right in Multi-column), as do the arrow keys. Standard Spacebar navigation works, too, with Space moving a page down and Shift moving a page up. Shift-J and Shift-K will move in larger increments. Hold them down to scroll quickly and smoothly through an article. \"u\" and \"d\" will jump by a half page, up and down. \"t\" or \"gg\" will go back to the beginning of the article, and \"b\" or Shift-G will go to the end. The new \"zoom out\" feature is handy for scrolling quickly. Just type \"z\" and scroll&hellip;",
		"keywords": ["cascading","markdown","multimarkdown","sheets","style","adjust","advanced","alice","bullseye","command","contents","enter","escape","happy","markdown","marked","marky","multi","multimarkdown","navigation","press","reading","reset","search","selector","shift","space","spacebar","standard","table","wildcards","adjust","again","ahead","arrow","article","articles","asterisk","attribute","begin","beginning","between","bookmark","bookmarks","build","built","captions","cater","character","checkbox","checkboxes","choose","clipboard","column","columns","comma","conjugations","contents","continues","convert","custom","different","easiest","edges","example","except","expressions","feature","features","figcaption","figure","formatted","great","guide","handy","happen","haven","headers","height","horizontally","image","including","increments","information","jquery","keyboard","larger","letters","level","likely","location","longer","looking","makes","match","matched","matching","minus","moving","multiple","navigate","navigates","navigating","navigation","notes","nothing","numeric","nvalt","overflow","overview","pages","permanently","persist","phrase","picked","piece","pieces","pluralizations","point","preferences","press","pressing","preview","previews","quickly","quotes","reading","regular","results","return","right","rsquo","screen","scroll","scrolling","search","sections","selector","selectors","sensitive","sequence","shortcuts","single","smoothly","speed","stops","store","style","styles","suits","surrounding","switch","tastes","teleprompter","terms","theme","themes","through","ticking","trial","tried","turning","using","variety","visit","where","while","whole","width","window","within","words","works","write"]
	},{
		"title": "Save Pocket favorites to nvALT with IFTTT and Hazel",
		"url": "/2013/11/01/pocket-favorites-to-nvalt-with-ifttt-and-hazel/",
		"tags": ["hazel","ifttt","markdown","nvalt","scripting"],
		"date": "Nov 1<span>st</span>, 2013",
		"ts": "1383315540",
		"summary": "Here&rsquo;s a quick script that works with an IFTTT recipe to put your Pocket favorites into nvALT as Markdown. It works well for me because I typically use Pocket to store articles that are more informational than time sensitive. If you star a lot of \"newsy\" articles, this is probably a bad idea, but for reference material it&rsquo;s helpful. To run this, you need an IFTTT account, Dropbox, and Hazel. Set up the IFTTT recipe to point to a custom Dropbox folder, or use the default IFTTT folder and give your files names that are easy to pick out with Hazel (e.g. use a hardcoded prefix). Save the script below and edit it, changing the to your nvALT notes folder. Then set up Hazel to take new files in that folder and run the script below on them. You need to have nvALT store your notes as text files. Not just because of this, I mean in general. Really. If you have the OpenMeta CLI installed, it will transfer any tags you put on the post to nvALT. If you want to mirror those to Mavericks tags, be sure to get the latest build of . That&rsquo;s it. Any time you favorite an article on Pocket, you should get a new nvALT note with a Markdown version of the article. It uses the Marky API for converting to Markdown, but you don&rsquo;t need anything extra to do that. If I may make a shameless plug &mdash; and I may, because this is my blog &mdash; the Markdown results look great in Marked 2 with the Mutli-column theme. If you&rsquo;ve never tried it, it&rsquo;s pretty cool. I&rsquo;ll post some tips for reading long-form articles in Marked later today",
		"keywords": ["dropbox","ifttt","interface","markdown","programming","dropbox","hazel","ifttt","markdown","marked","marky","mavericks","mutli","openmeta","pocket","account","article","articles","because","below","build","changing","column","converting","custom","default","extra","favorite","favorites","files","folder","general","great","hardcoded","helpful","informational","installed","later","latest","mdash","mirror","names","newsy","notes","nvalt","point","prefix","quick","reading","recipe","results","rsquo","script","sensitive","shameless","store","theme","today","tried","typically","version","works"]
	},{
		"title": "Sponsor: DoublePane from 5am Code",
		"url": "/2013/10/31/sponsor-doublepane-from-5am-code/",
		"tags": [],
		"date": "Oct 31<span>st</span>, 2013",
		"ts": "1383217200",
		"summary": "A big thanks to 5am Code and DoublePane for supporting BrettTerpstra.com. With these four tools you can easily edit two documents side-by-side without spending time sizing or repositioning windows, or read an article on one half of the screen while taking notes on the other half. Mavericks brought us tabs in Finder windows, but still no split pane view. The latest version of DoublePane is fully OS X Mavericks compatible, and being able to effortlessly position two Finder windows next to each other makes file management much easier than dragging between tabs. You can use DoublePane via the onscreen menu bar, but if you want to be really productive, you&rsquo;ll memorize the four simple global keyboard shortcuts to instantly maneuver your windows in any application. There are a lot of window management apps these days, but if you&rsquo;re looking for a simple solution that takes zero setup and covers the most essential window management functions, DoublePane is an excellent solution. It&rsquo;s available in the Mac App Store for $4.99. To see DoublePane in action visit 5amcode.com",
		"keywords": ["finder","mavericks","store","brettterpstra","doublepane","finder","mavericks","position","restore","store","action","amcode","article","available","between","brought","compatible","covers","documents","dragging","easier","easily","effortlessly","entire","essential","excellent","fully","functions","global","instantly","keyboard","latest","looking","makes","management","maneuver","memorize","notes","onscreen","original","position","productive","repositioning","right","rsquo","screen","setup","shortcuts","simple","sizing","solution","spending","split","supporting","takes","taking","thanks","tools","version","visit","while","window","windows"]
	},{
		"title": "\"Lazy\" Markdown footnotes",
		"url": "/2013/10/30/lazy-markdown-footnotes/",
		"tags": ["markdown","marked","multimarkdown"],
		"date": "Oct 30<span>th</span>, 2013",
		"ts": "1383138000",
		"summary": "Carl Johnson left a comment on my \"Lazy Markdown Links\" post to mention that he&rsquo;s long used a similar \"lazy\" method for footnotes. It struck me as a great idea. I whipped up another preprocessor1 for Marked 2 to make it work. It works as a standalone script, too. While I thought the lazy Markdown links were a neat trick, they didn&rsquo;t really affect my personal writing style. I generally work in one of three ways: gather all of my reference links at once and put them together at the bottom, write inline links for speed and use the Markdown Service Tools to \"Flip Link Style\" and clean them up as reference links, or I&rsquo;m using SearchLink with a combination of the above. None of those lend themselves to the lazy style. My footnote format, however, is perfect for it. Let me first say that Fletcher Penney has recently made this irrelevant in MultiMarkdown 4 (downloads here). In MMD 4, you can now use and it will become a standard footnote. Even more recently, he added a &ndash;random option to randomize generated footnote ids and avoid duplication in scenarios such as blogs which render multiple documents and generate repeated footnote labels. That&rsquo;s as lazy as you can get (and exactly what I had in mind with the inline footnotes Service). That being said, I still like being able to separate my footnotes below the text so that my Markdown can be read the same way I want my output formatted. I rewrote the Lazy Markdown Links script to do footnotes instead. It accepts two formats: and (Option-T). You can use either or both freely, as long as the marker in the text matches the first following footnote you want to connect. Example text would look like&hellip; You can find the script on GitHub. It can be set up in Marked 2 as follows. Save it to a folder as Run on it in Terminal to make it executable In Marked 2, go to the Behavior preferences and select the Custom Preprocessor tab Enter the path to the script, such as Check the box to make it \"Enabled by default\" Copy the text of the first example above and hit \"Command-Shift-V\" in Marked 2 to test As always, hope somebody else finds this useful, too",
		"keywords": ["fletcher","markdown","multimarkdown","penney","preprocessor","behavior","check","command","custom","enabled","enter","example","fletcher","github","inspired","johnson","links","lorem","markdown","marked","multimarkdown","penney","preprocessor","processor","searchlink","service","shift","style","terminal","tools","while","above","accepts","added","adipisicing","aliqua","aliquip","another","avoid","backlink","below","blogs","bottom","brettterpstra","caret","carlsensei","chmod","class","clean","combination","comment","commodo","connect","consectetur","consequat","cross","default","detected","documents","dolor","dolore","download","downloads","duplication","either","eiusmod","endnotes","example","executable","exercitation","finds","first","fletcher","fletcherpenney","fnref","folder","follows","footnote","footnotes","format","formats","formatted","found","freely","gather","generally","generated","github","great","hellip","highlight","highlighter","however","https","incididunt","inline","instance","interchangeable","ipsum","irrelevant","labels","labore","laboris","language","lazyfootnotes","ldquo","links","magna","markdown","marked","marker","matches","mention","method","minim","multimarkdown","multiple","ndash","nostrud","noteref","output","personal","plaintext","preferences","prefixes","preprocessor","random","randomize","rdquo","recently","repeated","replace","replaces","reversefootnote","rewrote","rouge","rsquo","scenarios","script","scripts","second","separate","service","similar","somebody","speed","standalone","standard","strong","struck","style","syntaxes","tempor","themselves","thought","tidbits","together","trick","ullamco","useful","using","veniam","whipped","works","write","writing"]
	},{
		"title": "My favorite New Tab for Chrome",
		"url": "/2013/10/29/my-favorite-new-tab-for-chrome/",
		"tags": ["chrome","extension"],
		"date": "Oct 29<span>th</span>, 2013",
		"ts": "1383076800",
		"summary": "I&rsquo;ve been looking for a decent plugin to add a few features to my New Tab Page in Chrome. I found \"the one\" recently: Humble New Tab. It puts the weather (with forecast), and your bookmarks (with a \"recently added\" section), apps, most visited and recently closed onto the page that appears when you open a new tab or window. Every item on the page can be dragged around and/or hidden. You get complete control over the background (including images), fonts, colors, layout and even the speed of animations. It comes with default themes that aren&rsquo;t half bad, but you can tweak them in five minutes and have a very pleasing, very simple tab page. You can even add custom CSS in the options to get crazy. I refuse to do it. It&rsquo;s just a tab page, after all. I love the simplicity, speed, and especially the ability to put certain nested folders at the top level of any column for easy access. It doesn&rsquo;t make a bunch of calls out to social media and whatever else those other tab pages I tried do to make themselves so slow they miss dropped urls and files",
		"keywords": ["browser","browsers","chrome","google","chrome","humble","ability","access","added","animations","appears","background","bookmarks","bunch","calls","certain","closed","colors","column","comes","control","crazy","custom","decent","default","doesn","dragged","dropped","especially","features","files","folders","fonts","forecast","found","hidden","images","including","layout","level","looking","media","minutes","nested","options","pages","pleasing","plugin","recently","refuse","rsquo","section","simple","simplicity","social","speed","themes","themselves","thought","tried","tweak","visited","weather","whatever","window"]
	},{
		"title": "Sponsor: Cleartones Pure",
		"url": "/2013/10/28/sponsor-cleartones-pure/",
		"tags": ["notifications"],
		"date": "Oct 28<span>th</span>, 2013",
		"ts": "1382987700",
		"summary": "About one year ago, Hugo Verweij brought us Cleartones Organic (mentioned here), and I&rsquo;ve used the collection of cleverly simple, non-grating ringtones and alerts ever since. Now he&rsquo;s produced Cleartones Pure, and I&rsquo;m excited that he&rsquo;s sponsoring BrettTerpstra.com to celebrate. Cleartones Pure is a new set of minimalist, elegant ringtones and notification sounds. The sine wave is the only sound in the world which can be called a \"pure\" tone: it&rsquo;s is the only sound consisting of a single frequency with no overtones. It&rsquo;s an excellent basis for a set of ringtones, but a single sine wave by itself isn&rsquo;t very compelling. Carefully sculpting it using techniques such as frequency modulation and subtle effects can bring it to life, and Cleartones Pure is the result. Cleartones Pure is a set of gentle ringtones and notification sounds. The original Cleartones concept was to offer ringtones which are clean, simple and unobtrusive, yet pleasant to listen to. Cleartones Organic did this with various wood instruments and light percussion sounds. Cleartones Pure achieves the same result with electronic sounds. A single set of 50 ringtones or 50 notification sounds can be purchased for $10 each, and you can get both sets for $17 US. The combined package will give you more than enough sounds to cover every type of notification and unique ringtones for all your favorite people. Twice. Find Cleartones Pure at the Cleartones website. The complete lineup consists of the new sine-wave-based Cleartones Pure, the acoustic Cleartones Organic, and the original Cleartones Classic",
		"keywords": ["apple","cleartone","iphone","ringtone","brettterpstra","carefully","classic","cleartones","organic","twice","verweij","achieves","acoustic","alerts","based","basis","bring","brought","called","celebrate","clean","cleverly","collection","compelling","concept","consisting","consists","cover","effects","electronic","elegant","enough","excellent","excited","favorite","frequency","gentle","grating","instruments","itself","light","lineup","listen","mentioned","minimalist","modulation","notification","offer","original","overtones","package","people","percussion","pleasant","produced","purchased","ringtones","rsquo","sculpting","simple","since","single","sound","sounds","sponsoring","subtle","techniques","unique","unobtrusive","using","various","website","world"]
	},{
		"title": "Mavericks tags, Spotlight and Terminal",
		"url": "/2013/10/28/mavericks-tags-spotlight-and-terminal/",
		"tags": ["macos","tagging","terminal"],
		"date": "Oct 28<span>th</span>, 2013",
		"ts": "1382965200",
		"summary": "I&rsquo;ve actually begun work on a book about tagging, and Mavericks in particular. It&rsquo;s a subject I truly enjoy, and so far it&rsquo;s kind of been writing itself. I hope to wrap it up faster than some of my other side projects. Bits that I think aren&rsquo;t mass-consumable enough for publication will end up here, where my gentle readers can decide for themselves if they want to do anything with it. One such bit is a reminder that can search tags just like Spotlight (tag:tagname). A simple Terminal command such as will return all your spicy recipes in a list. There are a lot of possibilities for scripting complex tag functionality. I&rsquo;ve done a lot with mdfind and OpenMeta in the past, but I&rsquo;ve decided to start integrating tagging into my command line life a bit more. To start, I wrote a quick shell function as a shortcut to find files in the current directory based on tags: When you run it, you can give it a single tag or a space-separated list of tags. By default, it will list every file that has any of the listed tags (boolean OR search), but if you make the first argument the word \"and\", it will turn it into a search that will only list files that contain ALL the tags listed. I noticed something interesting while playing with this. With both this script and in Spotlight, you can use just the first few letters of a tag, if they&rsquo;re enough to make it unique within the folder. Partials have to be the start of the tag, unless there&rsquo;s a non-letter character in the tag. Punctuation splits the queried term and you can match from the beginning of anything immediately following the non-alphabet character. Think , , , and other symbols that have become standards for representing tags, categories, projects and contexts. If I have a tag called , I can turn up results with , and . Of course, and mix in with other results that actually start with those words, but being able to search for and separate it from is actually intriguing. This led me to thinking about combining tags to semantically categorize a file and still make it searchable in larger groups, trimming down the number of tags on each file. The more I thought about it, the more I couldn&rsquo;t really see the point of not just putting the two tags on the file separately. But&hellip; it does open the door to the possibility of \"tag groups,\" a hierarchical taxonomy that can be searched in various ways. I have to think about that one a bit more",
		"keywords": ["command","computer","finder","interface","mavericks","spotlight","accidental","mavericks","openmeta","partials","punctuation","spotlight","terminal","think","alphabet","argument","based","beginning","begun","boolean","called","categories","categorize","character","combining","command","complex","consumable","contain","contexts","couldn","decide","decided","default","directory","discoveries","enjoy","enough","faster","files","first","folder","function","functionality","gentle","groups","hellip","hierarchical","integrating","interesting","intriguing","itself","larger","letter","letters","listed","match","mdfind","noticed","particular","playing","point","possibilities","possibility","projects","publication","putting","queried","quick","readers","recipes","reminder","representing","results","return","rsquo","script","scripting","search","searchable","searched","semantically","separate","separated","separately","shell","shortcut","simple","single","space","spicy","splits","standards","symbols","tagging","tagname","taxonomy","themselves","think","thinking","thought","trimming","truly","unique","various","where","while","within","words","writing","wrote"]
	},{
		"title": "Macminicolo Mavericks Promo",
		"url": "/2013/10/27/macminicolo-mavericks-promo/",
		"tags": ["hosting","macminicolo"],
		"date": "Oct 27<span>th</span>, 2013",
		"ts": "1382907060",
		"summary": "This is not a sponsored post, it&rsquo;s a PSA about an awesome deal from an awesome service. This site and a couple others of mine are hosted on a colocated Mac mini on a rack in Las Vegas. I have free reign over the box through VNC and SSH. Macminicolo provides the hosting, support and maintenance of the hardware, and I&rsquo;ve loved working with them. The transfer and response times are amazing, the customer support is outstanding and the only 5 minutes of downtime I&rsquo;ve had in the six months since I switched this website from Dreamhost was because I foolishly crashed my remote mini doing a software update in the middle of the day. Brian had me back online in minutes. I&rsquo;m not an IT guy and I&rsquo;m horrible at network stuff. I&rsquo;ve heard plenty of neckbeards1 complain about OS X as a server platform, but I&rsquo;ve never had as much fun managing a remote server as I have with a colocated Mac mini. I thought I should share the love and mention that there&rsquo;s an awesome promo going on right now. In celebration of the release of Mavericks, you can colocate a Mac mini for $10/month for the next nine months, with no setup fee. If you&rsquo;re in a position to spare a Mac mini and could make use of your own Mac-based server on a 100mb/s up/down connection, it&rsquo;s a great deal. Check out the details of the package, and tell &lsquo;em I sent you. It&rsquo;s ok when we say it.&nbsp;↩",
		"keywords": ["computing","macmini","mavericks","network","operating","server","system","virtual","brian","check","dreamhost","macminicolo","mavericks","vegas","amazing","awesome","backlink","based","because","brettterpstra","celebration","class","colocate","colocated","complain","couple","crashed","customer","details","doing","downtime","endnotes","fnref","foolishly","footnote","footnotes","going","great","hardware","heard","height","horrible","hosted","hosting","https","image","loading","loved","lsquo","macmini","macminicolo","maintenance","managing","mavericks","media","mention","middle","minutes","neckbeards","network","noscript","noteref","online","original","others","package","picture","platform","plenty","position","promo","provides","reign","release","remote","response","reversefootnote","right","rsquo","server","service","setup","share","since","software","source","spare","sponsored","srcset","stuff","support","switched","thought","through","times","title","uploads","website","width","working"]
	},{
		"title": "Speedier file tagging in Mavericks",
		"url": "/2013/10/27/speedier-file-tagging-in-mavericks/",
		"tags": ["finder","macos","tagging"],
		"date": "Oct 27<span>th</span>, 2013",
		"ts": "1382890980",
		"summary": "As you might expect, I&rsquo;m enthusiastically exploring Mavericks&rsquo; file tagging. I looked into the state of the OpenMeta transition yesterday and found that many of the best OpenMeta tagging apps already have reasonable solutions, including Hazel, HoudahSpot, Leap and Yep. There are a few others that I&rsquo;m not certain will ever get updates, but I have word that my favorite, Tags, should be getting some serious love soon. Of special interest to me, the latest version of the CLI mirrors to Finder&rsquo;s tag attributes as well as OpenMeta1. All of my scripts appear to be continuing to function as before. Thanks to Tom Andersen of Ironic for his continued work on that. On day one of the official Mavericks release, I used a great script by Zett to convert a few folders full of OpenMeta tags over to Finder tags. Eventually I noticed that Leap will actually do your whole system when you open it now. I don&rsquo;t use Leap much, but for making a seamless transition it was a great choice. It&rsquo;s a bit expensive for the task if you don&rsquo;t already own it, though, and there are scripting solutions to handle it. Now that tagging is in the spotlight2, I&rsquo;ll be writing more about why I think everyone should use it and sharing more ideas from my own experiences over the last few years. If you&rsquo;re reading this because of what I said in the headline, though, I should probably get around to offering a tip&hellip; I like being able to tag files in Save dialogs. Default Folder X has always been excellent for that with OpenMeta, and now I can do it in some native dialogs as well. However, I do most of my tagging in sweeps from Finder (store new files to the desktop and tag/archive them all at once). I&rsquo;m used to tools like Tags always being available from a hotkey. I loathe right clicking and choosing options from the context menu when I&rsquo;m navigating by keyboard, and there&rsquo;s not a shortcut for the Finder \"Tags\" dialog by default. So here&rsquo;s the tip: fix that. Open up System Preferences and go to Keyboard Preferences, select the Shortcuts tab and choose App Shortcuts on the left side of the table. Hit the plus (+) button at the bottom. Set the Application dropdown to Finder.app, and for the menu title type in \"Tags\". Note that the three dots are a single ellipsis character, which you can type with Option-semicolon3 (;). Then click in the Keyboard shortcut field and type your preferred key combination. Note: if you&&hellip;",
		"keywords": ["finder","houdahspot","keyboard","mavericks","openmeta","preferences","shortcut","system","andersen","arrow","characters","default","defaultfolderx","enter","eventually","finder","folder","google","hazel","houdahspot","however","ironic","keyboard","mavericks","openmeta","preferences","shortcuts","system","thanks","twitter","anyway","appear","archive","attributes","autocompletion","automatically","available","backlink","because","before","bottom","brettterpstra","built","button","caseapps","certain","character","choice","choose","choosing","class","clear","click","clicking","close","codebase","combination","comma","commit","compiled","context","continued","continuing","convert","default","desktop","dialog","dialogs","doesn","dropdown","ellipsis","endnotes","enthusiastically","everyone","excellent","expect","expensive","experiences","exploring","faster","favorite","field","files","fnref","folders","footnote","footnotes","found","function","getting","google","grabbed","great","handle","hazel","headline","height","hellip","highlighter","hotkey","houdah","houdahspot","https","ideas","image","including","intended","interest","ironicsoftware","keyboard","keyboardshortcuttagging","language","latest","ldquo","loading","loathe","looked","making","mavericks","media","mirrors","native","navigating","noodlesoft","noscript","noteref","noticed","offering","official","openmeta","options","original","others","picture","plaintext","popup","possibly","preferred","punch","rdquo","reading","reasonable","release","remember","replaces","reversefootnote","right","rouge","rsquo","script","scripting","scripts","seamless","selected","semicolon","serious","sharing","shortcut","shortcuts","single","smart","solutions","source","special","spotlight","srcset","stclairsoft","store","strong","surfer","sweeps","system","table","tagging","think","title","tools","transition","trouble","twitter","updates","uploads","version","while","whole","width","writing","years","yesterday","zettt"]
	},{
		"title": "TextExpander and Lorem Ingsoc in Wonderland",
		"url": "/2013/10/26/textexpander-and-lorem-ingsoc-in-wonderland/",
		"tags": ["lipsum","snippet","textexpander","tools"],
		"date": "Oct 26<span>th</span>, 2013",
		"ts": "1382823060",
		"summary": "I&rsquo;ve updated the Random Lipsums group in the TextExpander Tools. Again. I removed some services that weren&rsquo;t working any more, and expanded some of the other tools. The biggest new addition is a Random Markdown generator, complete with tables, definition lists, footnotes and more. It&rsquo;s perfect for testing stylesheets and, if you happen to develop a Markdown preview app, it&rsquo;s also perfect for testing various processors. There are also versions included in the snippet group that include Maruku for going straight to HTML. The two versions of the snippets are based on Alice in Wonderland and 1984 (quite hilarious when mixed together1), using the Ruby gem to slice and dice local text files. You can grab a copy of the source files I use, or find your own substitutes at Project Gutenberg. The two text files need to be located in a \"words\" directory off of your home folder ( and ). It should install for you without issue. Once that successfully completes and you have the text files in place, the Snippets will generate random and often hilarious text for you. Here&rsquo;s the script (Mavericks-compatible), which can also be used as a standalone for creating text with a Service or from the command line. It&rsquo;s a little brute force in some areas, but it&rsquo;s dependable. Filthy greenish water like this other people round abruptly. Actually he remember and hatching his nose and Big Brother the door closed down in time of solid-looking men with horror. Momentarily he KNEW. Down down down both sat down important as look like being upset and sneezing all moved off Beau ootiful Soo oop of bread-and butter But they COULD NOT SWIM you please. Stuff and once without considering how old fellow.&nbsp;↩",
		"keywords": ["mavericks","snippets","textexpander","tools","again","alice","bigrammodel","brother","filthy","generates","gutenberg","level","lipsums","markdown","maruku","mavericks","momentarily","project","raingrams","random","sequentially","service","snippets","stuff","terminal","textexpander","tools","wonderland","abruptly","again","alice","another","apart","areas","available","backlink","based","biggest","block","blockquote","bread","brettterpstra","brute","build","builds","bunch","butter","cells","class","closed","command","compatible","completes","considering","containing","count","creating","dammit","definition","deflist","dependable","develop","directory","dummy","element","endnotes","expand","expanded","false","fellow","figcaption","figure","files","fnref","folder","footnote","footnotes","force","generates","generator","github","githubusercontent","going","greenish","group","gutenberg","happen","hatching","header","headers","headline","headlines","height","highlight","highlighter","hilarious","horror","https","image","important","included","index","inputtext","install","italics","items","language","ldquo","length","linkend","lipsum","lists","little","loading","local","located","looking","loremingsoc","marked","maruku","maximum","media","medium","minumum","mixed","model","moved","multi","needed","noscript","noteref","often","ootiful","ordered","original","output","overlap","pairs","paragraph","paragraphs","people","picture","placekitten","plaintext","prefix","preview","print","processors","project","projects","quote","raingrams","random","randommarkdown","rdquo","recommend","refresh","remember","removed","return","returns","reversefootnote","rouge","round","rsquo","rubygems","script","sentence","sentences","services","share","short","slice","smilesoftware","sneezing","snippet","snippets","solid","source","split","srcset","standalone","straight","strong","stylesheets","substitutes","successfully","table","tables","testing","times","title","together","tools","train","ttscoff","unordered","updated","uploads","upset","using","variable","various","version"]
	},{
		"title": "Top RAM processes Geeklet Mavericks fixer upper",
		"url": "/2013/10/26/top-ram-processes-geeklet-mavericks-fixer-upper/",
		"tags": ["geeklet","macos","scripting"],
		"date": "Oct 26<span>th</span>, 2013",
		"ts": "1382810820",
		"summary": "For those of you using the Geeklet to display your top RAM processes on your Desktop, I&rsquo;ve updated the script located here with a version compatible with Mavericks and Ruby 2.0. If you&rsquo;re wondering, it&rsquo;s a tiny edit on line 37 to split the lines into an array before filtering them. used to do that for me, but it needs to be explicit in Ruby 2.0. You may run into this with some of my other scripts, so if you see an error like: when running any of my scripts, you can probably just look for a line like and change it to to fix it. While I&rsquo;m offering fixes you can do at home, I should also mention that the syntax I used for case statements in older scripts has been fully deprecated and will now break on Mavericks. It looked like this: and all will be well. I&rsquo;m working my way through broken scripts as I find them. Slogger is under way. If you have any pressing needs, feel free to tweet or ping me and I&rsquo;ll add them to the list. Turns out that I put out more stuff than I can support&hellip",
		"keywords": ["apple","mavericks","programming","desktop","geeklet","mavericks","reformat","slogger","turns","while","array","before","break","broken","change","colon","compatible","deprecated","display","error","explicit","filtering","fixes","fully","hellip","located","looked","mention","needs","offering","older","pressing","processes","rsquo","running","script","scripts","split","statements","stuff","support","syntax","through","under","updated","using","version","wondering","working"]
	},{
		"title": "Markdown Service Tools update for Mavericks",
		"url": "/2013/10/24/markdown-service-tools-update-for-mavericks/",
		"tags": ["macos","markdown","markdownservices","service"],
		"date": "Oct 24<span>th</span>, 2013",
		"ts": "1382651760",
		"summary": "One step at a time, I&rsquo;m updating as many of my tools as are still relevant to work with Mavericks. Up for review right now are the Markdown Service Tools. This update should fix all of them, but if you have any issues with a particular Service, let me know. Markdown Service Tools v3.0.3 Download Markdown Service Tools v3.0.3 The Markdown Service Tools are a collection of macOS Services designed to make creating Markdown-formatted text that much easier. Services work in almos any macOS application. Published 01/09/14. Updated 09/14/20. Changelog Donate &bull; More info&hellip",
		"keywords": ["github","markdown","mavericks","tools","twitter","changelog","donate","download","markdown","mavericks","published","service","services","tools","updated","almos","collection","creating","designed","easier","formatted","hellip","issues","macos","particular","relevant","right","rsquo","tools","updating"]
	},{
		"title": "Web Excursions for October 24, 2013",
		"url": "/2013/10/24/web-excursions-for-october-24-2013/",
		"tags": ["bookmarks","evernote","gmail","hazel","macos","notes","scripting","tagging"],
		"date": "Oct 24<span>th</span>, 2013",
		"ts": "1382637600",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. A special \"Mavericks Day 1\" edition, consisting of a few tricks and pitfalls I&rsquo;ve discovered now that I&rsquo;ve put Mavericks on my main work machine. Mavericks: The Review Helluva writeup on Mavericks from Stephen Hackett. Mail in Mavericks Changes the Gmail Equation Important information if you ever got your GMail account functioning \"just perfect\" in Mail.app. You&rsquo;ll need to make some changes. Hazel 3.2 Release Notes Hazel 3.2 is out and includes actions for Mavericks tags, among other enhancements. Code Signing and Mavericks This post from Craig Hockenberry saved me a ton of trouble today. If you&rsquo;re writing Mac Apps, you&rsquo;ll probably want this sooner than later. OS X Mavericks video tip: Using Automator and Speakable Items to control your Mac by voice Awesome super double plus good fun times (which I&rsquo;m going to assign as a keyword for something). The AppleScript \"display notification\" Command I wish this had more options for replacing, removing and adding click urls. I&rsquo;ll keep using Growl for now. One \"trick\" I noticed last night: if you pull back in the middle of a 4-finger pinch-out when showing your Desktop, you can \"scratch\" the window animations. It works for Launchpad, too, which is even less useful. Mavericks tags are turning out to be fun, as I&rsquo;d hoped. I used my Pinboard/OpenMeta script and a handy OpenMeta &rarr; Mavericks script to put Mavericks tags on my entire Pinboard collection, just to do some mass experimenting. Worked perfectly. Mohiomap - A Visual Memory for Evernote Interesting mind map visualization of Evernote notebooks. Useful? Unsure",
		"keywords": ["apple","applescript","craig","evernote","hockenberry","items","launchpad","mavericks","speakable","applescript","automator","awesome","changes","cleanmymac","command","craig","desktop","equation","evernote","gmail","gmail","growl","hackett","hazel","helluva","hockenberry","important","interesting","items","launchpad","mavericks","memory","mohiomap","notes","openmeta","pinboard","release","signing","speakable","stephen","unsure","useful","using","visual","worked","account","actions","adding","among","animations","assign","because","brought","changes","click","collection","consisting","control","discovered","display","double","edition","enhancements","entire","excursions","experimenting","extra","finger","functioning","going","handy","hanging","hoped","includes","information","keyword","later","machine","middle","night","notebooks","notes","noticed","notification","options","partnership","perfectly","pinch","pitfalls","random","removing","replacing","rsquo","saved","scratch","script","showing","sooner","special","speed","super","times","today","tools","trick","tricks","trouble","turning","useful","using","video","visualization","voice","window","works","writeup","writing"]
	},{
		"title": "Ulysses III 1.1",
		"url": "/2013/10/24/ulysses-3-1-point-1/",
		"tags": ["editor","markdown","ulysses"],
		"date": "Oct 24<span>th</span>, 2013",
		"ts": "1382618880",
		"summary": "The Soulmen have released Ulysses III version 1.1 with a ton of welcome features and enhancements. I previously reviewed Ulysses 3 when it was first released. I&rsquo;ve been testing v1.1 for a couple of weeks and I&rsquo;m pleased to report that many of my initial concerns have been addressed. It was a great editor to begin with, but now it&rsquo;s a powerhouse. First off, it&rsquo;s optimized for Mavericks. If you&rsquo;ve just upgraded, you&rsquo;ll appreciate the interface and speed. It&rsquo;s also been localized for French, German, Italian, Japanese and Spanish. Next, some of the editing features that I consider vital in a Markdown editor have been fully implemented, including auto-continuation of lists (bullet and numbered), and auto-continuation of code blocks and blockquotes with consistent indentation. It also adds auto-complete for tags. It even has a built-in Preview for seeing your Markdown as styled output (though I&rsquo;m secretly pleased it&rsquo;s not as powerful as Marked, to which you can still send Ulysses documents with a keystroke). There&rsquo;s a new \"Sidebar Search\" accessible with Command-Shift-F that will filter matches in full text as you type, highlighting pertinent terms. It can even search specific elements such as comments or links for quickly narrowing down the list. Although it takes a little extra effort, there&rsquo;s an entire system for customizing HTML and ePub (yes, it exports ePub now) with CSS, and a special syntax called ULSS for PDF creation. The Word export maintains style names, and is one of the best Markdown to Word conversions I&rsquo;ve seen. You can even assign a specific code editor to call from within Style preferences for editing your custom stylesheets. Typewriter scrolling is improved and includes a line highlight and allows scrolling and repositioning. This makes it truly usable and a pleasure to edit with. When you&rsquo;re editing in full screen, switching between files used to be a bit of a chore. Now there&rsquo;s a Quick Open panel you can pop up with Command-O and see an Alfred-style file list with type-ahead filtering. Smart Paste is pretty cool, too. You can switch modes quickly between pasting as Text, Code Block and Raw Source, and can even paste HTML as Markdown with instant conversion. There are a few things I&rsquo;d like to change about the resulting Markdown, but it&rsquo;s a very cool feature. Check out Ulysses III on the Mac App Store. It&rsquo;s $44.99 US, and if&hellip;",
		"keywords": ["cascading","document","management","markdown","mavericks","sheets","store","style","system","alfred","although","block","check","command","first","french","german","italian","japanese","markdown","marked","mavericks","paste","preview","quick","search","shift","sidebar","smart","soulmen","source","spanish","store","style","typewriter","ulysses","accessible","addressed","ahead","allows","appreciate","assign","begin","between","blockquotes","blocks","built","bullet","called","change","chore","comments","concerns","consider","consistent","continuation","conversion","conversions","couple","creation","custom","customizing","document","documents","editing","editor","effort","elements","enhancements","entire","export","exports","extra","feature","features","files","filter","filtering","first","fully","great","highlight","highlighting","implemented","improved","includes","including","indentation","initial","instant","interface","keystroke","links","lists","little","localized","looking","maintains","makes","management","matches","modes","names","narrowing","numbered","optimized","output","panel","paste","pasting","pertinent","pleased","powerful","powerhouse","preferences","previously","quickly","released","report","repositioning","resulting","reviewed","rsquo","screen","scrolling","search","secretly","seeing","short","special","specific","speed","style","styled","stylesheets","switch","switching","syntax","system","takes","terms","testing","truly","upgraded","usable","version","vital","weeks","welcome","within","writing"]
	},{
		"title": "Sponsor: Tonx",
		"url": "/2013/10/24/sponsor-tonx/",
		"tags": [],
		"date": "Oct 24<span>th</span>, 2013",
		"ts": "1382612400",
		"summary": "I&rsquo;m really excited to have Tonx as a sponsor this week. I&rsquo;ve been brewing their coffee for quite a while now, and I look forward to every delivery. Tonx is a small team of coffee experts who believe it&rsquo;s easy to make a better cup in your kitchen than you&rsquo;ll get at the best cafes - and for a fraction of the cost. By sourcing the finest coffees in the world and roasting them 24-hours before shipping, you&rsquo;ll have the freshest coffee delivered straight to your door. And for a limited time, get a free trial to taste for yourself. Also, Tonx is pleased to introduce The Frequency, an email newsletter packed with coffee secrets, brew tips, and special limited offers, exclusively for Tonx members",
		"keywords": ["beverages","coffee","shopping","syndicate","frequency","sponsorship","syndicate","before","believe","brewing","cafes","coffee","coffees","delivered","delivery","email","excited","experts","finest","fraction","freshest","hours","introduce","kitchen","limited","members","newsletter","offers","packed","pleased","roasting","rsquo","secrets","shipping","small","sourcing","special","sponsor","straight","taste","trial","while","world"]
	},{
		"title": "Systematic 67 with Dan Peterson",
		"url": "/2013/10/23/systematic-67-with-dan-peterson/",
		"tags": ["podcast","systematic"],
		"date": "Oct 23<span>rd</span>, 2013",
		"ts": "1382562840",
		"summary": "It was fun to connect with old friend and former co-worker Dan Peterson on this week&rsquo;s Systematic. Dan&rsquo;s the lead designer for AgileBits, makers of 1Password. We talked about the new release of 1Password 4 for Mac, iOS design, tattoos and procrastination of all kinds. A big thanks to Dan for taking the time to chat! Check out the episode at 5by5",
		"keywords": ["agilebits","apple","iphone","peterson","studios","agilebits","check","password","peterson","systematic","connect","design","designer","episode","former","friend","kinds","makers","procrastination","release","rsquo","taking","talked","tattoos","thanks","worker"]
	},{
		"title": "TextExpander tools updated for Mavericks",
		"url": "/2013/10/23/textexpander-tools-updated-for-mavericks/",
		"tags": ["macos","textexpander","tools"],
		"date": "Oct 23<span>rd</span>, 2013",
		"ts": "1382534160",
		"summary": "The TextExpander Tools have been updated to fix many of the snippets in the Tools group, including the URL shortening and creation snippets. You can download them from the TE-Snippets page, and if you&rsquo;ve added the group as a URL it should automatically update. I&rsquo;m still trying to figure out why some of my Random Lipsums aren&rsquo;t working. I have them working fine from the command line, but they&rsquo;re not expanding in TextExpander. I&rsquo;ll post an update once I figure that out. I&rsquo;m not sure anyone but me is slicing up Orwell&rsquo;s 1984 and turning it into Lipsum text anyway&hellip; Let me know if you have any trouble. The updated group should still be backwards-compatible with Mountain Lion",
		"keywords": ["ipsum","lipsum","locator","lorem","mountain","resource","snippets","textexpander","lipsum","lipsums","mountain","orwell","random","snippets","textexpander","tools","added","anyone","anyway","automatically","backwards","command","compatible","creation","download","expanding","figure","group","hellip","including","rsquo","shortening","slicing","snippets","trouble","trying","turning","updated","working"]
	},{
		"title": "\"Lazy\" Markdown reference links",
		"url": "/2013/10/19/lazy-markdown-reference-links/",
		"tags": ["markdown","marked","scripting"],
		"date": "Oct 19<span>th</span>, 2013",
		"ts": "1382210460",
		"summary": "Inspired by a workflow used at TidBits , here&rsquo;s a script that allows you to use This allows you to not bother naming or numbering links while writing, and easily move links along with their paragraphs without breaking numbering sequences or naming conventions. It requires a little scripting to work, though, as you have to process the lazy links before running it through your normal processor. This script works as a Custom Preprocessor in Marked 2, as well as a standalone script as part of a chained workflow: If this fits with the way you typically write, it&rsquo;s a neat trick. Credit goes to Glenn Fleishman at TidBits for the idea and original implementation",
		"keywords": ["fleishman","glenn","language","preprocessor","scripting","tidbits","workflow","credit","custom","fleishman","glenn","inspired","marked","preprocessor","tidbits","allows","before","bother","breaking","chained","conventions","definition","easier","easily","first","found","implementation","links","little","markers","naming","normal","numbering","original","paragraphs","process","processor","requires","rsquo","running","script","scripting","sequences","standalone","through","trick","typically","while","workflow","works","write","writing"]
	},{
		"title": "A Markdown Service to strip Markdown",
		"url": "/2013/10/18/a-markdown-service-to-strip-markdown/",
		"tags": ["markdown","markdownservices","service"],
		"date": "Oct 18<span>th</span>, 2013",
		"ts": "1382111040",
		"summary": "I&rsquo;ve added a new Service to the Markdown Service Tools for stripping out Markdown formatting, leaving just plain text. It&rsquo;s not something I do often, but I&rsquo;ve received a couple of requests for it and it does have its uses. By default, the Service (md - Convert - Strip Markdown) will also remove the leaders from list items (*, +, - and 1.). To turn this off, open the Service in Automator and edit the first line of the script to read: Markdown Service Tools v3.0.3 Download Markdown Service Tools v3.0.3 The Markdown Service Tools are a collection of macOS Services designed to make creating Markdown-formatted text that much easier. Services work in almos any macOS application. Published 01/09/14. Updated 09/14/20. Changelog Donate &bull; More info&hellip",
		"keywords": ["document","markdown","automator","changelog","convert","donate","download","markdown","published","service","services","strip","tools","updated","added","almos","bulleted","collection","couple","creating","default","designed","easier","first","formatted","formatting","hellip","items","leaders","leave","leaving","macos","often","received","remove","requests","rsquo","script","stripping","trouble"]
	},{
		"title": "Marked 2.1 released",
		"url": "/2013/10/17/marked-2-dot-1-released/",
		"tags": ["marked"],
		"date": "Oct 17<span>th</span>, 2013",
		"ts": "1382017620",
		"summary": "Marked 2.1 (build 771) was released this morning. The trial verison on the website has been updated, and current users can use Marked->Check for Updates if you don&rsquo;t automatically receive the update notification. The update is free to all Marked 2 customers. The 2.1 update includes several major fixes and adds rewritten and redesigned document statistics and word repetition features. For an overview of the new features, see the video I released previously. Tooltips for Processor indicators in bottom bar Zoom overview (type \"z\" while previewing) Vastly improved Word Repetition Visualization feature No overlay, highlights within main preview zoom feature for overview progress bar during calculation document available during calculation (background processing) keyboard navigation, highlighting, statistics work during visualization Handle cyrillic and most UTF-16 characters in word repetition visualizer Revamped and redesigned text statistics generation background calculation, no blocking main window Live changes to detailed stats (I) Prettier detailed stats panel Reading time calculation GitHub task checkbox rendering You can download a 7-day, full-featured trial at Marked2App.com",
		"keywords": ["preview","processor","repetition","speech","bbedit","check","github","handle","highlight","marked","markup","prettier","preview","processor","reading","repetition","revamped","scroll","tooltips","updates","vastly","visualization","automatically","available","avoid","background","blocking","blocks","bottom","build","calculation","changes","characters","checkbox","comment","customers","cyrillic","detailed","document","download","editing","export","feature","featured","features","fixes","generation","height","highlighting","highlights","improved","includes","indicators","keyboard","major","missing","morning","navigation","notification","overlay","overview","panel","preview","previewing","previously","processing","receive","redesigned","release","released","rendering","repetition","rewritten","rsquo","several","statistics","stats","think","trial","updated","users","verison","video","visualization","visualizer","website","while","window","within","words"]
	},{
		"title": "Sponsor: Squarespace",
		"url": "/2013/10/17/sponsor-squarespace/",
		"tags": [],
		"date": "Oct 17<span>th</span>, 2013",
		"ts": "1382007600",
		"summary": "A huge thanks to Squarespace for sponsoring BrettTerpstra.com this week! Whether you&rsquo;re growing a business, starting a blog, or are ready to sell online, you need to make a great impression. Squarespace is the best way to create a modern and professional website, with all the features you need integrated into one platform. Every Squarespace website is mobile-ready, includes e-commerce, and is backed up by award-winning 24/7 customer service. Try Squarespace today at squarespace.com",
		"keywords": ["customer","design","service","squarespace","brettterpstra","sponsorship","squarespace","syndicate","award","backed","business","commerce","create","customer","features","great","growing","impression","includes","integrated","mobile","modern","online","people","platform","professional","ready","rsquo","service","sponsoring","squarespace","starting","thanks","today","website","winning"]
	},{
		"title": "Terminology 3 for iOS is more useful than ever",
		"url": "/2013/10/16/terminology-3-for-ios-is-more-useful-than-ever/",
		"tags": ["appreview","iphone"],
		"date": "Oct 16<span>th</span>, 2013",
		"ts": "1381936560",
		"summary": "Agile Tortoise, developer of the renowned productivity app Drafts, has released Terminology 3, a new and completely rewritten version of the excellent dictionary and thesaurus app. It now features the ability to work with all manner of reference searches, from Wikipedia to Google, and the system is extensible for adding your own additional resources. Terminology 3 is now a universal app for both iPhone and iPad, and features iCloud sync for starred terms and browsing history. An updated offline dictionary, customizable fonts and Dropbox export round out some great new features. The aforementioned custom actions now have a home in the Terminology Action Directory as well. Terminology 3 is available for just $2.99 US on the App Store. See the blog announcement for full details on all the new features",
		"keywords": ["dropbox","icloud","iphone","store","action","agile","directory","drafts","dropbox","google","store","terminology","tortoise","wikipedia","ability","actions","adding","aforementioned","announcement","available","browsing","completely","custom","customizable","details","developer","dictionary","excellent","export","extensible","features","fonts","great","history","icloud","iphone","offline","productivity","released","renowned","resources","rewritten","round","searches","starred","system","terms","thesaurus","universal","updated","version"]
	},{
		"title": "Systematic 66 with Tim Stevens",
		"url": "/2013/10/15/systematic-66-with-tim-stevens/",
		"tags": ["podcast","systematic"],
		"date": "Oct 15<span>th</span>, 2013",
		"ts": "1381874340",
		"summary": "I had Tim Stevens, former Editor in Chief of Engadget and currently an Editor at Large for CNET, as this week&rsquo;s guest on Systematic. Tim and I have known each other for a while and worked together while he was at Engadget. He&rsquo;s a great journalist and an even better human being. We got to talk about everything from auto racing to dogs, with quite a few stops in between. Thanks to Tim for a very interesting chat. I hope you all enjoy the conversation! Also, Barry stopped by. Check out the episode at 5by5",
		"keywords": ["engadget","stevens","studios","systematic","twitter","barry","check","chief","editor","engadget","stevens","systematic","thanks","between","conversation","enjoy","episode","everything","former","great","guest","human","interesting","journalist","racing","rsquo","stopped","stops","together","while","worked"]
	},{
		"title": "Essence icons for iOS 7 app design",
		"url": "/2013/10/15/essence-icons-for-ios-7-app-design/",
		"tags": ["design","icons"],
		"date": "Oct 15<span>th</span>, 2013",
		"ts": "1381857540",
		"summary": "Silvia Gatta and Federico Viticci comprise Icons & Coffee, which previously brought us the Perspective Icons set for OmniFocus. Now, they&rsquo;ve launched Essence, an icon set for iOS 7 designers. It contains 300 icons created with the iOS 7 design sensibility, and comes with a generous license that makes it an ideal fit for app designers (and anyone looking to leverage the new look). Check out the Essence icon set at the Icons & Coffee website. It&rsquo;s a great deal at $19.99 (for a limited time), and includes full vector versions for your next design project",
		"keywords": ["coffee","computer","essence","federico","gatta","icons","omnifocus","silvia","viticci","check","coffee","essence","federico","gatta","icons","omnifocus","perspective","silvia","viticci","anyone","brought","comes","contains","created","design","designers","generous","great","icons","ideal","includes","launched","leverage","license","limited","looking","makes","previously","project","rsquo","sensibility","vector","versions","website"]
	},{
		"title": "Web Excursions for October 15, 2013",
		"url": "/2013/10/15/web-excursions-for-october-15-2013/",
		"tags": ["bookmarks","macos","security","tagging"],
		"date": "Oct 15<span>th</span>, 2013",
		"ts": "1381845840",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. HoudahSpot beta 3.8 with Mavericks tagging The beta of HoudahSpot is compatible with both OpenMeta and Mavericks tags, and offers the option to merge them. So it begins. Send Secure information, passwords, links with dead drop Need to send some data securely? Password? Love Note? Haiku? This is the place. phoshare I&rsquo;ve had a couple of people ask if this was possible, so I figured this might be worth sharing: it \"exports and synchronizes images and metadata from iPhoto or Aperture on a Mac.\" Via OneThingWell. Intro to Tmux If you&rsquo;re a Terminal person and haven&rsquo;t tried , you really should. This intro from NetTuts is a great place to get started. Note that iTerm 2 provides deep tmux integration with . Quickly toggling elements in the Web Inspector A very handy trick from Bricss, including a tip for toggling \"display:none\" with the same hotkey",
		"keywords": ["houdahspot","iphoto","mavericks","aperture","bricss","check","haiku","houdahspot","inspector","intro","mavericks","nettuts","onethingwell","openmeta","password","quickly","secure","setapp","terminal","access","begins","brought","compatible","couple","display","elements","excursions","exports","figured","great","handy","haven","hotkey","hundreds","iphoto","iterm","images","including","information","integration","intro","links","merge","metadata","monthly","offers","partnership","passwords","people","person","phoshare","possible","provides","rsquo","securely","sharing","started","subscription","synchronizes","tagging","today","toggling","trick","tried","worth"]
	},{
		"title": "A better SearchLink fix",
		"url": "/2013/10/14/a-better-searchlink-fix/",
		"tags": ["itunes","macappstore","macos","searchlink","service"],
		"date": "Oct 14<span>th</span>, 2013",
		"ts": "1381757940",
		"summary": "Thanks to notes from Jeremy Mack and die_krabbe, SearchLink is restored to its former glory, complete with a working iTunes API search for the Mac App Store. It&rsquo;s also now Mavericks-compatible and should handle UTF-8 characters appropriately. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["apple","interface","itunes","mavericks","programming","store","changelog","donate","download","jeremy","markdown","mavericks","published","searchlink","store","thanks","updated","appropriately","characters","compatible","editor","former","glory","handle","hellip","itunes","krabbe","leaving","links","notes","restored","rsquo","search","searches","working"]
	},{
		"title": "A SearchLink MAS stopgap",
		"url": "/2013/10/13/a-searchlink-mas-stopgap/",
		"tags": ["macappstore","searchlink"],
		"date": "Oct 13<span>th</span>, 2013",
		"ts": "1381690680",
		"summary": "If you use SearchLink at all, you&rsquo;ve probably noticed that the Mac App Store searches have stopped working. This happened the day iOS 7 came out, and it still hasn&rsquo;t resolved. iTunes App Store links are functioning better, but the MAS returns no results. In order to be able to continue using the utter convenience that is SearchLink, I&rsquo;ve switched (!mas) searches to use a Google site search instead. This is a temporary stopgap, and I&rsquo;ll switch back to using the iTunes Search API once it can handle it again. Let me know if it doesn&rsquo;t work for you. You can find more info on SearchLink on the project page. If you&rsquo;re updating, remember to swap in your iTunes and Amazon affiliate codes as needed. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["apple","google","iphone","itunes","store","amazon","changelog","donate","download","google","markdown","published","search","searchlink","store","updated","affiliate","again","codes","continue","convenience","doesn","editor","functioning","handle","happened","hellip","itunes","leaving","links","needed","noticed","project","remember","resolved","results","returns","rsquo","search","searches","stopgap","stopped","switch","switched","temporary","updating","using","utter","working"]
	},{
		"title": "Sidecar13 - for the little guys",
		"url": "/2013/10/13/sidecar13-for-the-little-guys/",
		"tags": ["jacket","sideshow","simplify"],
		"date": "Oct 13<span>th</span>, 2013",
		"ts": "1381669200",
		"summary": "I&rsquo;m releasing Sidecar13 for Simplify today. It&rsquo;s a smaller version of the original Sidecar jacket, which was designed for my 27\" display. I failed to make the original scale on its own, so I had to release this as a separate jacket. It has all of the features and skins of the original, just scaled to fit on my 13\" MacBook Air. Snozzberry (blue) Easy being green (green) Absence of dark (white) Obsidious (black) Wallflower (translucent black) Nightfall (sunset, blurred) Oddity (blue on black, blurred) Superfuzz Bigmuff (white on black, blurred) Clicking on the jacket will play/pause, double-clicking will advance to the next song and command clicking will jump to a point in the song determined by the location of the click on the vertical axis of the jacket. If you&rsquo;ve been enjoying Sidecar on a 27\" screen and have a 13\" laptop around, or have been waiting for a smaller version to try it out, here you go. I&rsquo;d be curious to know how the 13\" version looks on an 11\" too, if you care to try it out. You&rsquo;ll need Simplify, of course. Sidecar13 v1 Download Sidecar13 v1 A 13-inch version of the Sidecar jacket for Simplify. Published 10/12/13. Updated 10/12/13. Changelog Donate &bull; More info&hellip",
		"keywords": ["jacket","macbook","sidecar","bigmuff","changelog","clicking","donate","download","macbook","nightfall","obsidious","oddity","published","sidecar","simplify","snozzberry","superfuzz","updated","wallflower","black","blurred","click","clicking","command","curious","designed","determined","display","double","enjoying","failed","features","green","hellip","jacket","laptop","location","looks","original","pause","point","release","releasing","rsquo","scale","scaled","screen","separate","skins","smaller","sunset","today","translucent","version","vertical","waiting","white"]
	},{
		"title": "Run while you have to, stop when you can",
		"url": "/2013/10/12/run-while-you-have-to-stop-when-you-can/",
		"tags": ["personal"],
		"date": "Oct 12<span>th</span>, 2013",
		"ts": "1381621620",
		"summary": "This would normally be a Twitter or Facebook post, but I feel like writing just a few more characters than I should. The weather is starting to turn cold, and I think once again about moving away from here. But there&rsquo;s something addictive about the chill in the air. I think I could actually live with Fall all year &lsquo;round. I&rsquo;ve come to a point in my life where I can afford nice computers, good scotch and a great view of the leaves changing colors across the hills and bluffs of Southeastern Minnesota. My wife and I can afford to take good care of our pets, and I can afford to take better care of myself. I honestly never would have guessed I&rsquo;d get to this point. I&rsquo;ve been told many times that I&rsquo;m lucky to be alive, and on many different occasions. I&rsquo;ve always taken that seriously, but at the same time I&rsquo;ve taken it for granted. In the past, I&rsquo;d always just go back to what almost killed me on the first go-round, somehow thinking I&rsquo;d do the same thing&hellip; just a little different this time. My life was a scientific experiment with no control group. I&rsquo;ve fallen down stairs. I&rsquo;ve fallen into 20-foot holes and landed on my back in broken concrete. I&rsquo;ve been held at knifepoint, and gunpoint. I&rsquo;ve overdosed. I&rsquo;ve engaged in risky behavior of all kinds. There are a couple dozen reasons I shouldn&rsquo;t be sitting here looking at this view, feeling as comfortable as I am now. I grew up at some point, I guess. Some of my friends weren&rsquo;t so lucky. I didn&rsquo;t know how to grieve appropriately back then, so it still sneaks up on me sometimes. Retroactive remorse. I get especially emotional and sentimental at this time of year, for some reason. Every time, it reminds me how lucky I am and how grateful I should be. Maybe you haven&rsquo;t been as lucky. Maybe you haven&rsquo;t been as careless to begin with. Still, do me a favor and step back to appreciate that you get to be picky about your coffee, snobby about your beer and pretentious about your text editors. If you&rsquo;re not doing so hot right now, take heart: things can work out. Don&rsquo;t give in, don&rsquo;t give up. Run while you have to, stop when you can",
		"keywords": ["addiction","gratitude","facebook","maybe","minnesota","retroactive","southeastern","twitter","across","addictive","again","alive","almost","appreciate","appropriately","begin","behavior","bluffs","broken","careless","changing","characters","chill","coffee","colors","comfortable","computers","concrete","control","couple","different","doing","dozen","editors","emotional","engaged","especially","experiment","fallen","favor","feeling","first","friends","granted","grateful","great","grieve","group","guess","guessed","gunpoint","haven","heart","hellip","hills","holes","honestly","killed","kinds","knifepoint","landed","leaves","little","looking","lsquo","lucky","moving","myself","normally","overdosed","picky","point","pretentious","reasons","reminds","remorse","right","risky","round","rsquo","scientific","scotch","sentimental","seriously","shouldn","sitting","sneaks","snobby","somehow","sometimes","stairs","starting","taken","think","thinking","times","weather","weren","where","while","writing"]
	},{
		"title": "Wallflowers: my favorite OS X augmentations",
		"url": "/2013/10/12/wallflowers-os-x-augmentation/",
		"tags": ["bettertouchtool","finder","hazel","keyboard","macos","popclip","scripting","tagging","textexpander"],
		"date": "Oct 12<span>th</span>, 2013",
		"ts": "1381592760",
		"summary": "There are quite a few apps on my machine that run in the background, waiting for that moment when they get to shine. These apps augment the OS X experience in ways that I&rsquo;d have trouble functioning without. This is a list of my top picks at the moment. Though the list changes frequently, most of these have been long-standing choices on my machine and have survived several re-installs and cleanings&hellip; TextExpander You&rsquo;ve heard me talk plenty about TextExpander. It&rsquo;s easily the most-used application on my computer, assisting with just about every task that involves typing. BetterTouchTool BetterTouchTool is another app that is in such constant use that I get confused using machines without it. It not only adds vital functionality to my Magic Trackpad, it also maps a lot of keys on my keyboard for launching applications and triggering scripts. PopClip I&rsquo;ve spent a lot of time tweaking PopClip, and it&rsquo;s to a point where I use it as often as I use Services with shortcut keys. I essentially use it for running scripts that would normally be Services, but are now easily accessible when I&rsquo;m making mouse selections. TotalFinder TotalFinder is kind of a background app, but definitely an augmentation. It adds split panes and tabs to Finder, along with some basic tweaks like Command-X cut and paste of files. Much of its functionality won&rsquo;t be necessary with the advent of Mavericks, but for right now it&rsquo;s a must-have for me. Default Folder X Default Folder X augments Open and Save dialogs, adding recently-used folders, default folders for different apps, quick access to favorite folders and &ndash; importantly for me &ndash; OpenMeta tagging (which I assume/hope will update for Finder tags in Mavericks). Bartender With all these background apps running, Bartender keeps my menu bar sane. It lets me allow any of these apps to show their menu bar icon for easy access to settings without actually having them appear in the main menu bar. Without it, my menu bar would make me crazy, especially on my 13\" Air with limited screen space. Moom Moom gives me keyboard control over my windows. It lets me use hotkeys to center and maximize windows, expand and shrink, snap to edges and more. It also lets me create \"snapshots\" of app combinations to automatically position windows based on running apps. FastScripts If you run a few (or more) AppleScripts regularly, FastScripts gives you a quick menu&hellip;",
		"keywords": ["applescript","fastscripts","keyboard","magic","shortcut","textexpander","totalfinder","trackpad","almost","applescripts","bartender","bettertouchtool","cocoa","command","default","defaultfolderx","desktop","fastscripts","finder","folder","hazel","hyper","keyremap","macbook","magic","mavericks","notably","openmeta","pckeyboardhack","popclip","scripts","services","space","textexpander","totalfinder","trackpad","access","accessible","adding","admit","advent","allow","almost","another","appear","applications","assisting","assume","augment","augmentation","augments","automatically","available","background","backlink","based","basic","bettertouchtool","binaryage","brettterpstra","build","center","changes","checking","choices","class","cleanings","combinations","complex","computer","confused","constant","control","crazy","create","customizable","cycles","default","definitely","depend","depends","detail","dialog","dialogs","different","display","easier","easily","eating","edges","embarrassed","endnotes","especially","essential","essentially","expand","experience","fastscripts","favorite","field","files","flexible","fnref","folder","folders","footnote","footnotes","foreground","function","functionality","functioning","gamma","gives","hacking","having","hazel","heard","height","hellip","hierarchy","hotkeys","https","image","importantly","index","installs","interaction","involves","justgetflux","keeps","keyboard","keyremap","launching","ldquo","limited","little","loading","macbartender","macbook","machine","machines","macosx","making","manytricks","maximize","media","menus","mouse","navigating","navigation","ndash","necessary","night","noodlesoft","normally","noscript","noteref","notes","often","organize","original","panes","parameters","paste","pckeyboardhack","picks","picture","pilotmoon","plenty","point","popclip","position","previously","provides","quick","quickly","rdquo","receive","recently","recommend","regular","regularly","remapping","reversefootnote","right","rsquo","rules","running","screen","script","scripts","selections","services","settings","several","shame","shine","shortcoming","shortcut","shortcuts","shrink","slightly","smilesoftware","snapshots","source","space","spent","split"]
	},{
		"title": "Web Excursions for October 11, 2013",
		"url": "/2013/10/11/web-excursions-for-october-11-2013/",
		"tags": ["blogging","bookmarks","coffee","scripting","service","webdesign","writing"],
		"date": "Oct 11<span>th</span>, 2013",
		"ts": "1381498800",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. Introducing Paperback Paperback, the elegant Pinboard \"read later\" service is live. I mentioned it in beta, and I think it&rsquo;s a great tool. Sign up for $15/year. AppleScript XML-RPC Via MacStories, Daniel Jalkut notes that AppleScript has long supported XML-RPC and SOAP functionality for interacting with blogging platforms and other services on the web. Pretty awesome, especially for people running WordPress blogs. Brew Methods For the coffee fiddlers out there: recipes for Aeropress, Chemex, Pour-over and more. 50 writing errors that make you look like an amateur A handy list for better writing. Also see the followup: 25 more writing errors. Safari on iOS 7 and HTML5: problems, changes and new APIs Interesting mix of good and bad changes in Safari on iOS 7. I&rsquo;m concerned about the number of regressions. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["aeropress","applescript","interface","pinboard","programming","safari","wordpress","aeropress","applescript","check","chemex","daniel","interesting","introducing","jalkut","macstories","methods","mindmeister","paperback","pinboard","safari","wordpress","amateur","awesome","blogging","blogs","boosting","brainstorming","brought","changes","coffee","collaborating","collaborative","elegant","errors","especially","excursions","fiddlers","followup","functionality","great","handy","interacting","later","mapping","mentioned","notes","partnership","people","platforms","problems","productivity","recipes","regressions","rsquo","running","service","services","software","supported","think","writing"]
	},{
		"title": "Marked 2.1 document stats sneak peek",
		"url": "/2013/10/10/marked-2-dot-1-document-stats-sneak-peek/",
		"tags": ["marked"],
		"date": "Oct 10<span>th</span>, 2013",
		"ts": "1381424400",
		"summary": "Marked 2.1 will be out in the next week (free update for Marked 2 customers), featuring faster and more accurate document statistics. The detailed statistics view (Command-I) is vastly improved, and the word repetition visualization is a complete rewrite that works within the document instead of in an overlay, allowing keyword highlighting, standard navigation and table of contents to function while it&rsquo;s enabled. Even refreshing after an edit is possible. There&rsquo;s also a new \"zoom\" feature, which lets you zoom out of your document and navigate it at half size. Scrolling to a section while zoomed out will maintain the position when you zoom back in. This is great in word repetition mode, making it easy to see where occurences of a word occur, but also functions in regular preview mode for navigation. You just press \"z\" to enter and exit zoom mode. Here&rsquo;s a sneak peek at the new features. As I said, this should be released in the next few days and will be a free update for all Marked 2 users. This update also marks the removal of the last vestige of Ruby dependency in Marked. The new statistics engine is written entirely in Objective-C and handles threading and background processing much better. Calculating statistics happens in the background as soon as a document is loaded, without blocking you from using Marked while it calculates. Word repetition is also calculated in the background when you trigger it. In most cases, the processing is nearly instant, but on longer documents it offers a progress bar at the bottom of the preview as it calculates, allowing you to continue using Marked while it analyzes the repeated words",
		"keywords": ["repetition","calculating","command","marked","scrolling","accurate","allowing","analyzes","background","blocking","bottom","calculated","calculates","contents","continue","customers","dependency","detailed","document","documents","enabled","engine","enter","entirely","faster","feature","features","featuring","function","functions","great","handles","happens","highlighting","improved","instant","keyword","loaded","longer","maintain","making","marks","navigate","navigation","nearly","occur","occurences","offers","overlay","position","possible","press","preview","processing","refreshing","regular","released","removal","repeated","repetition","rewrite","rsquo","section","sneak","standard","statistics","table","threading","trigger","users","using","vastly","vestige","visualization","where","while","within","words","works","written","zoomed"]
	},{
		"title": "Sponsor: MailChimp",
		"url": "/2013/10/10/sponsor-mailchimp/",
		"tags": [],
		"date": "Oct 10<span>th</span>, 2013",
		"ts": "1381402800",
		"summary": "Thanks to MailChimp for sponsoring BrettTerpstra.com this week! The new generation of MailChimp adapts to your workflow, regardless of the device you&rsquo;re using and size of your team. A cohesive experience across desktop and mobile devices means you can create, send, and track email campaigns in any context",
		"keywords": ["device","email","mailchimp","mailing","marketing","mobile","brettterpstra","check","mailchimp","sponsorship","syndicate","thanks","across","adapts","campaigns","cohesive","context","create","desktop","device","devices","email","experience","generation","mobile","regardless","rsquo","sponsoring","today","track","using","workflow"]
	},{
		"title": "Systematic 65 with Merlin Mann",
		"url": "/2013/10/08/systematic-65-with-merlin-mann/",
		"tags": ["podcast","systematic"],
		"date": "Oct 8<span>th</span>, 2013",
		"ts": "1381255440",
		"summary": "It&rsquo;s always a pleasure to have Merlin on the show. We didn&rsquo;t even go long this time&hellip; We talked about drugs (legal ones), nerd tips, and exercise, among myriad tangential topics. The top picks were, as always, one of my favorite parts of the show, and Merlin had some great ones to share",
		"keywords": ["benjamin","merlin","studios","check","merlin","among","drugs","episode","exercise","favorite","great","hellip","legal","myriad","parts","picks","rsquo","share","talked","tangential","topics"]
	},{
		"title": "Web Excursions for October 03, 2013",
		"url": "/2013/10/03/web-excursions-for-october-03-2013/",
		"tags": ["bookmarks","macos","skype"],
		"date": "Oct 3<span>rd</span>, 2013",
		"ts": "1380830400",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. 1Password 4 for Mac is in the Mac App Store now One of my all time favorite apps just got an impressive update. It&rsquo;s a full refresh, including hotkey access to your entire password (and credit cards, and serial numbers&hellip;) database from anywhere on your Mac. iOS 7 Tips Treasury - Flipboard An impressive Flipboard collection of iOS 7 notes and tips. Skype says my application will stop working&hellip; Skype has announced that they&rsquo;re shutting off the Desktop API in December. I checked with the developers of some of my most-used 3rd party apps (Shush, Call Recorder, Audio Hijack Pro), and for the most part everything&rsquo;s cool. My scripts and LaunchBar actions will break, though, and that makes me love Microsoft less. Again. Demo - jQuery.JamCity (1.1) That&rsquo;s it. I&rsquo;m re-creating my Last.fm page with this. Emmet LiveStyle \"Emmet LiveStyle is a plugin for live bi-directional (editorbrowser) CSS editing&hellip;\" I mentioned this on Systematic #64, but it&rsquo;s cool enough to mention again. Takana does very similar, too: Connect Chrome/Safari directly to Sublime Text and edit CSS live. Takana supports Sass and others, too. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["audio","hijack","launchbar","microsoft","recorder","skype","store","sublimetext","again","audio","backblaze","check","chrome","connect","desktop","emmet","flipboard","hijack","jamcity","launchbar","livestyle","microsoft","password","recorder","safari","shush","skype","store","sublime","systematic","takana","treasury","access","actions","affordably","again","announced","anywhere","backs","break","brought","cards","checked","cloud","collection","computer","creating","credit","database","developers","directional","directly","editing","editorbrowser","enough","entire","everything","excursions","favorite","hellip","hotkey","impressive","including","jquery","makes","mention","mentioned","notes","numbers","others","partnership","party","password","plugin","refresh","reliably","rsquo","scripts","securely","serial","shutting","similar","supports","today","working"]
	},{
		"title": "Sponsor: The Theme Foundry",
		"url": "/2013/10/03/sponsor-the-theme-foundry/",
		"tags": [],
		"date": "Oct 3<span>rd</span>, 2013",
		"ts": "1380798000",
		"summary": "The Theme Foundry has been building premium WordPress themes since 2008. They recently released Collections &mdash; a unique and beautiful WordPress theme for sharing, designed by Veerle Pieters. Visit the live demo of Collections to see it in action, or purchase it now for $79. A focus on quality over quantity. You won&rsquo;t find a huge assortment on their site &mdash; they keep a small, curated collection of premium WordPress themes. Exclusive partner with WordPress.com (the official hosted WordPress provider). Each and every theme goes through a stringent audit process from some of the best WordPress coders in the world. Whole team support. You get fast and friendly support from the team that actually built your theme, not a part time support rep",
		"keywords": ["syndicate","template","wordpress","collections","exclusive","foundry","pieters","sponsorship","syndicate","theme","veerle","visit","whole","wordpress","action","assortment","audit","beautiful","building","built","coders","collection","curated","designed","focus","friendly","hosted","makes","mdash","official","partner","premium","process","provider","quality","quantity","recently","released","rsquo","sharing","since","small","special","stringent","support","theme","themes","through","unique","world"]
	},{
		"title": "Yes, I spend too much time tweaking PopClip",
		"url": "/2013/10/01/yes-i-spend-too-much-time-tweaking-popclip/",
		"tags": ["email","extension","popclip"],
		"date": "Oct 1<span>st</span>, 2013",
		"ts": "1380659400",
		"summary": "I made a few changes and additions to my PopClip extensions early this morning. The GitHub repo is current and the project page is updated. First, I updated the OpenURLS extension to better handle finding urls without a protocol (, no \"http://\"). It does a pretty decent job of figuring out what&rsquo;s a link and what&rsquo;s not. I also added a new feature: hold down Option to fix urls broken by hard-wrapped lines. This was an issue I kept running into on old CocoaDev forums, where the email processor would split a URL in half, making it unclickable. Now I can just higlight both lines, hold down option and click the OpenURLS button to join the halves together before parsing. I also duplicated the OpenURLS extension to a CopyURLS extension, which does the exact same thing (with the Option add-on), but puts the detected urls in your clipboard instead of opening them. A plain list, separated by newlines, no Markdown stuff. Lastly, I can&rsquo;t remember who suggested this, but it sounded like fun to create a regex for. It&rsquo;s called \"FixPoorlyObscuredEmails,\" and it takes \"dan AT danssite DOT com\" and turns it into . It handles a dot in the middle of the username, and multiple dots in the server address. As a bonus feature, if you hold down Option, it will create a new email in your default application for all detected addresses. This works even in fields you can&rsquo;t edit (e.g. in a Tweet), so you can create emails quickly from social applications and the like1. That&rsquo;s all for now. If you&rsquo;re a PopClip user, check out the full details for the package on the project page. You won&rsquo;t regret it. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip; I&rsquo;ve just handed the spammers the regular expression to harvest your \"protected\" email address that you tweet around. Now they&rsquo;ll be unstoppable. Also, your dog&rsquo;s name in 1337 isn&rsquo;t going to keep the bad guys out for long. Somehow this footnote ended up being a 1Password plug&hellip;&nbsp;↩",
		"keywords": ["expression","github","popclip","regular","brett","brettspopclipextensions","changelog","cocoadev","copyurls","donate","download","extensions","first","fixpoorlyobscuredemails","github","lastly","markdown","openurls","password","popclip","popclipicon","published","somehow","tuvbv&#39;","updated","added","additions","address","addresses","agilebits","applications","background","backlink","before","bonus","bretts","brettterpstra","broken","button","called","changelog","changes","check","class","click","clipboard","cover","create","danssite","decent","default","description","details","detected","dlbox","donate","download","downloads","duplicated","email","emails","ended","endnotes","exact","expression","extension","extensions","fathom","feature","fields","figuring","finding","fnref","footnote","footnotes","forums","github","going","google","gradient","halves","handed","handle","handles","harvest","hellip","highlighter","higlight","https","information","language","ldquo","linear","making","middle","morning","multiple","newlines","noteref","onclick","opening","package","parsing","pilotmoon","plaintext","popclip","popclipextensions","processor","project","projects","protected","protocol","published","quickly","rdquo","regex","regret","regular","remember","repeat","reversefootnote","rouge","rsquo","running","separated","server","social","sounded","spammers","split","stuff","style","suggested","takes","title","together","tools","trackgoal","ttscoff","turns","unclickable","unstoppable","updated","uploads","useful","username","where","wikipedia","works","wrapped","writing"]
	},{
		"title": "Systematic 64 with Evelyn Jean Pine",
		"url": "/2013/10/01/systematic-64-with-evelyn-jean-pine/",
		"tags": ["podcast","systematic"],
		"date": "Oct 1<span>st</span>, 2013",
		"ts": "1380655560",
		"summary": "It was a lot of fun talking to Evelyn Jean Pine on today&rsquo;s Systematic. She&rsquo;s not your typical podcast guest, which I always enjoy. Evelyn is a playwright in San Francisco, with a new play centering around Bill Gates and the birth of the personal computer opening soon. We talked about the play, the writing tools and processes, and Quakers, oddly enough. Thank you to Evelyn for taking the time for a chat, I learned quite a bit! Check out the episode at 5by5",
		"keywords": ["francisco","gates","quakers","studios","check","evelyn","francisco","gates","quakers","systematic","thank","birth","centering","computer","enjoy","enough","episode","guest","learned","oddly","opening","personal","playwright","podcast","processes","rsquo","taking","talked","talking","today","tools","typical","writing"]
	},{
		"title": "Web Excursions for September 27, 2013",
		"url": "/2013/09/27/web-excursions-for-september-27-2013/",
		"tags": ["bookmarks"],
		"date": "Sep 27<span>th</span>, 2013",
		"ts": "1380317220",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. There&rsquo;s a lot of news to share and I&rsquo;ve been short on writing time all week1. I figured rather than let good stories slip by, I&rsquo;d encapsulate them in an Excursions post. Semi-Automated blogging for the win. Evernote Essentials Brett Kelly wrote the definitive book on Evernote a while back. He released version 4 yesterday. It has new chapters, updates for the latest features, and you can get it as a DRM-free ePub in addition to PDF. Make A Meal Of It This iPhone app lets you find great recipes based on a set of criteria ranging from ingredients to dietary restrictions. Set your preferences and start browsing for your next meal. A Beginners Guide to Pinboard Shawn Blanc offers some great tips for using Pinboard. Of all of the services I&rsquo;ve signed up for in the last 5 years, Pinboard has gotten the most use by a long shot. Write for iPhone updated Write for iPhone (reviewed previously) has updated for iOS 7 with an awesome new feature: inline Markdown formatting. Similar to what FoldingText and Texts do, it does an amazing job of showing your headlines, lists, emphasis, et al as rich text while maintaining the plain text Markdown in the document. The Write update also includes some really good-looking new themes. And, of course, the requisite GitHub discoveries: skrollr A standalone JavaScript library for making awesome (or crazy) things happen when users scroll down a web page. Parallax scrolling is just the beginning. minimit-anima There are quite a few jQuery animation libraries with CSS3 optimization, but this one is really slick. You probably know why.&nbsp;↩",
		"keywords": ["evernote","github","iphone","markdown","pinboard","automated","beginners","blanc","brett","cleanmymac","essentials","evernote","excursions","foldingtext","github","guide","javascript","kelly","markdown","parallax","pinboard","prinzhorn","shawn","similar","texts","write","absolute","amazing","anima","animation","apple","awesome","backlink","based","beautiful","beginning","blogging","border","brettterpstra","brought","browsing","chapters","class","crazy","criteria","definitive","dietary","discoveries","display","document","emphasis","encapsulate","endnotes","essentials","evernote","examples","excursions","feature","features","figured","fnref","footnote","footnotes","formatting","github","gotten","great","guide","happen","headlines","height","hidden","https","iphone","impactradius","includes","ingredients","inline","iphone","itunes","jquery","latest","libraries","library","lists","looking","macpaw","maintaining","making","marked","master","minimit","nerdgap","noteref","offers","optimization","partnership","pinboard","position","preferences","previously","ranging","rather","recipes","released","requisite","restrictions","reversefootnote","reviewed","rsquo","scroll","scrolling","services","share","shawnblanc","short","showing","signed","skrollr","slick","speed","standalone","stories","style","themes","tools","updated","updates","users","using","version","visibility","webexcursions","while","width","write","writing","wrote","years","yesterday"]
	},{
		"title": "Winners of the Begin for iPhone giveaway",
		"url": "/2013/09/27/winners-of-the-begin-for-iphone-giveaway/",
		"tags": ["giveaway","iphone","productivity"],
		"date": "Sep 27<span>th</span>, 2013",
		"ts": "1380308220",
		"summary": "If you didn&rsquo;t win but still need a solid, elegant to-do list app for your iPhone, be sure to check out Begin in the App Store",
		"keywords": ["apple","iphone","store","anderson","anndi","begin","bigler","daniel","dickson","friesen","george","haynes","jordan","steve","store","testa","thanks","victor","walter","check","elegant","entered","everyone","iphone","license","lucky","rsquo","solid","winners"]
	},{
		"title": "Marked 2 launched",
		"url": "/2013/09/26/marked-2-launched/",
		"tags": ["marked"],
		"date": "Sep 26<span>th</span>, 2013",
		"ts": "1380196800",
		"summary": "Marked 2 has officially launched. There&rsquo;s a lot to love about the new version, but let me start by clearing up any confusion. Marked 2 is currently only available outside of the App Store. It costs $US 11.99 and there is no upgrade price from the App Store version of Marked. The App Store version is very solid, and from here will serve as a \"light\" version for people who don&rsquo;t want to drop $12. Unfortunately, I&rsquo;m pretty sure I can&rsquo;t add that copy to the App Store description, but I don&rsquo;t feel that leaving Marked 1 up for a while is going to cause anyone undue harm, and I&rsquo;ll be providing fixes as needed (though it hasn&rsquo;t needed many for a while now). You can try Marked 2 for free (seven day trial) and see if it&rsquo;s worth the $12 price to you. If not, you can still grab the original Marked and receive full support for it. The decision to go outside the App Store was a difficult one, and I&rsquo;ve definitely had second thoughts. I now plan to have an App Store version of Marked 2 (at the same price) in addition to the current one1, but I need to work around a couple of sandboxing roadblocks first. That&rsquo;s on my plate right next to a spoonful of time off. Anyway, on to Marked 2. This version includes a rewrite of the file watching system which speeds up response times. Quite a bit in some circumstances. Just about every part of the app is faster, actually. The JavaScript-based features are rewritten and optimized, and even the scroll-to-edit feature is over 10x faster at processing version differences on long documents. In addition to Scrivener support, Marked 2 supports everything from clipboard previews (hit Command-Shift-V) to MarsEdit blog posts (under the Preview menu). VoodooPad is supported, too. It has a fast search (with regular expression options), a keyword highlighting feature for finding overused phrases, keyword density and much more. MultiMarkdown 4.2 built in, including inline footnotes Alternative \"Discount\" parser built in New and improved search features case sensitive option whole word option regular expressions CSS selector searching Fountain support (including \"scrippets\") CriticMarkup support Keyword highlighting Live highlighting of common/overused phrases using the Plain English Campaign guides regex/wildcard search for keyword/phrase highlighting Keyword drawer with counter to easily add temporary keywords for highlighting and viewing&hellip;",
		"keywords": ["apple","marsedit","multimarkdown","store","voodoopad","youtube","advanced","anyway","apple","campaign","cheaper","collapse","command","criticmarkup","custom","detect","discount","dozen","embed","english","export","fountain","index","javascript","keyword","markdown","marked","marsedit","multimarkdown","plnooprhobv","paddle","paginated","preview","purchasing","scrivener","shift","store","unfortunately","visit","voodoopad","watch","youtube","access","allows","amazing","anyone","appreciate","approval","arguments","available","backlink","based","basic","because","behind","between","brettterpstra","building","built","bundle","cause","changed","changes","channels","cheaper","circumstances","class","clearing","clipboard","coming","common","confusion","contact","contents","couple","create","creating","criticmarkup","custom","decision","definitely","density","description","designed","detailed","differences","difficult","discrepancy","document","documents","dozen","drawer","earlier","easily","either","endnotes","eventually","everything","evolution","expand","expectations","export","exported","expression","expressions","faster","feature","features","fields","files","filter","finding","first","fixes","fnref","folder","footnote","footnotes","forum","found","fountain","generating","going","goodies","great","guides","happy","headers","headlines","hearing","height","highlighting","hoping","https","iconaholic","image","images","improved","improvements","included","includes","including","incorporate","indexes","information","inline","interview","keeping","keyboard","keyword","keywords","launched","ldquo","leaving","light","limitations","listeners","lists","lives","loading","looking","lsquo","maintain","makes","marked","markedapp","markedicon","media","mentioned","migrate","navigation","ndash","needed","nested","noscript","noteref","officially","online","optimized","options","original","outside","overdue","overused","overview","paddle","palette","parity","parser","people","phrase","phrases","picture","plainenglish","planning","plate","playlist","podcast","portability","possible","posts","preview","previews","price","process","processing"]
	},{
		"title": "Sponsor: Igloo",
		"url": "/2013/09/26/sponsor-igloo/",
		"tags": [],
		"date": "Sep 26<span>th</span>, 2013",
		"ts": "1380193200",
		"summary": "Thanks to Igloo for their sponsorship of BrettTerpstra.com this week! Stop waiting for your IT department to move off SharePoint and start using an intranet you&rsquo;ll actually like. Igloo is free to use with your team, it&rsquo;s built around easy to use apps like blogging and file sharing, and it has social tools built right in to help you get work done. It works on your desktop, your tablet and your phone. Inside or outside of your office. With your team or with your customers. Igloo is 100% white label, so you can make it look like your brand (with your developers or our in-house design and services team). And if you&rsquo;re in San Francisco, come learn how a social intranet can help your business succeed. Hear real world examples from our customers, technologists, and writers from Forbes and The Huffington Post. Our Social Intranet Tour hits San Francisco on October 15. We hope to see you there",
		"keywords": ["filesharing","igloo","intranet","brettterpstra","forbes","francisco","huffington","igloo","inside","intranet","sharepoint","social","sponsorship","syndicate","thanks","blogging","brand","built","business","customers","department","design","desktop","developers","examples","house","intranet","label","learn","office","outside","phone","right","rsquo","services","sharing","social","sponsorship","succeed","tablet","technologists","tools","using","waiting","white","works","world","writers"]
	},{
		"title": "Giveaway: Begin - a todo list for iPhone",
		"url": "/2013/09/25/giveaway-begin-for-iphone/",
		"tags": ["giveaway","iphone"],
		"date": "Sep 25<span>th</span>, 2013",
		"ts": "1380128400",
		"summary": "Begin is a new iPhone app for keeping track of your daily todos. What sets it apart is its sheer simplicity. Pull down to add a task, swipe left to check it off, swipe right to move it to \"tomorrow\" and swipe up to see your completed tasks. Easy. Tasks that aren&rsquo;t finished each day get cleared, so it&rsquo;s great for keeping track of tasks that really only matter if you get them done today or put them off until tomorrow. It&rsquo;s not a full-featured productivity app like OmniFocus, but it&rsquo;s a great way to track errands, house chores and other things you need to get done each day. Developers Kyle Rosenbluth and Benjamin Brooks have kindly offered 10 copies of Begin for me to give away for free. All you have to do to enter is fill out the form below. On Friday, Sept. 27th, I&rsquo;ll be drawing 10 random winners from all the entries. The contest is open to anyone, with the exception of Quebec residents. Entrance will be closed on Friday at noon CST. One entry per person. Sorry, this giveaway has ended. p.s. I know posting has been slim for a while now. As I may have mentioned before, I&rsquo;m gearing up for the release of Marked 2 tomorrow (Thursday). As a tip for my regular readers, you can get a peek at some of the new features by visiting the documentation section. I&rsquo;ll be posting some video walkthroughs over the next couple of weeks as well, so stay tuned for some Marked tips and tricks",
		"keywords": ["apple","iphone","store","begin","benjamin","brooks","developers","entrance","friday","marked","omnifocus","quebec","rosenbluth","sorry","tasks","thursday","anyone","apart","before","below","check","chores","cleared","closed","completed","contest","copies","couple","daily","drawing","ended","enter","entries","entry","errands","exception","featured","features","finished","gearing","giveaway","great","house","iphone","keeping","kindly","mentioned","offered","person","posting","productivity","random","readers","regular","release","residents","right","rsquo","section","sheer","simplicity","swipe","tasks","today","todos","tomorrow","track","tricks","tuned","video","visiting","walkthroughs","weeks","while","winners"]
	},{
		"title": "Systematic 63 with Keith Blount",
		"url": "/2013/09/24/systematic-63-with-keith-blount/",
		"tags": ["podcast","systematic"],
		"date": "Sep 24<span>th</span>, 2013",
		"ts": "1380046140",
		"summary": "I was joined by Keith Blount this week for a discussion about coding, writing and how a developer picks features for their app. Keith is the author of Scrivener for Mac and Windows, an app designed by a writer, for writers. If you write and you haven&rsquo;t tried it, it&rsquo;s worth every dollar. It was great to talk to a developer I admire, and very interesting to learn that he picked up coding almost solely to write Scrivener. Check out the episode at 5by5, and stay tuned for more great guests in the very near future",
		"keywords": ["processor","resources","scrivener","studios","windows","writer","blount","check","keith","scrivener","windows","admire","almost","author","coding","designed","developer","discussion","dollar","episode","features","great","guests","haven","interesting","joined","learn","picked","picks","rsquo","tried","tuned","worth","write","writer","writers","writing"]
	},{
		"title": "Web Excursions for September 21, 2013",
		"url": "/2013/09/21/web-excursions-for-september-21-2013/",
		"tags": ["bookmarks","footnotes","mindmapping","multimarkdown","omnifocus"],
		"date": "Sep 21<span>st</span>, 2013",
		"ts": "1379790960",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. A quick PSA off the top for SearchLink users: the iTunes Search API is currently a little wonky. The instability is related to the iOS 7 launch and may last a couple of weeks. It will be back soon! I&rsquo;ve been short on time for exploring the net (and writing in general) this week due to a combination of a large project at the day job and the fact that I&rsquo;m gearing up for a Marked 2 launch next week. Here are some top picks from my last week of surfing, nonetheless. MultiMarkdown 4.3.1 released In case you missed it, Fletcher Penney&rsquo;s MultiMarkdown now includes inline footnotes with a very simple syntax. No need for my little Service hack now, just use and it gets converted to a link and a footnote at the end. Super/sub text was recently added as well ( prefix).The upcoming Marked 2 release includes the latest version of MultiMarkdown, inline footnotes and all. Clean Links A handy little one-purpose app that cleans up links and removes things like Google Analytics query strings. It supports the x-callback-url scheme, which lets you use it quickly and easily with apps like Tweetbot, Drafts and Notesy. On Apple, the new iPhones and points made and missed Excellent post and thoughts on Apple from Victor Agreda Jr. over at TUAW. OmniFocus 2 for iPhone I received the beta for OmniFocus 2 just a little bit ago, and it&rsquo;s already out on the App Store. It&rsquo;s still missing a few things that I was hoping for in the update, and there additional features that are in-progress but not implemented yet (TextExpander support, for example). Nonetheless, the update is gorgeous and improves navigation and organization features. Paper, Digital or Online Mind Mapping? A mind map about mind mapping, comparing paper and digital mapping. iTextEditors updates The iTextEditors chart continues to grow. I&rsquo;ve been pruning out apps that are no longer maintained/available, but enough new editors are coming along every week that it&rsquo;s still growing. The most recent updates in the list are marked with a blue asterisk",
		"keywords": ["analytics","apple","google","iphone","multimarkdown","omnifocus","store","tweetbot","agreda","analytics","apple","check","clean","digital","drafts","excellent","fletcher","google","links","mapping","marked","multimarkdown","nonetheless","notesy","omnifocus","online","paper","penney","search","searchlink","service","setapp","store","super","textexpander","tweetbot","victor","access","added","asterisk","available","brought","callback","chart","cleans","combination","coming","comparing","continues","converted","couple","digital","easily","editors","enough","example","excursions","exploring","features","footnote","footnotes","gearing","general","gorgeous","growing","handy","hoping","hundreds","iphone","iphones","itexteditors","itunes","implemented","improves","includes","inline","instability","latest","launch","links","little","longer","maintained","mapping","marked","missed","missing","monthly","navigation","nonetheless","organization","paper","partnership","picks","points","prefix","project","pruning","query","quick","quickly","received","recent","recently","related","release","released","removes","rsquo","scheme","short","simple","strings","subscription","support","supports","surfing","syntax","thoughts","today","upcoming","updates","users","version","weeks","wonky","writing"]
	},{
		"title": "Sponsor: Booking.com",
		"url": "/2013/09/19/sponsor-booking-dot-com/",
		"tags": [],
		"date": "Sep 19<span>th</span>, 2013",
		"ts": "1379588400",
		"summary": "Thanks again to Booking.com for sponsoring BrettTerpstra.com this week! Forgive the cliche, but coming to work for Booking.com has been one of the best decisions. Within a week of arriving to the Netherlands, I had already created two UI experiments and pushed code to the live site. It was intimidating and thrilling at the same time. Those feelings haven&rsquo;t left. I&rsquo;m constantly humbled by the more than 300 super intelligent colleagues of 51+ nationalities! I learn every day. If there&rsquo;s a day I don&rsquo;t? It means I wasn&rsquo;t in the office. The warmth and acceptance of new hires is brilliant. I was invited for chess, football, drinks, and even knitting, within a fortnight. Friday after work drinks can easily evolve into an adventure anytime. There&rsquo;s always something to do in this city. And at Booking.com, there&rsquo;s always someone who&rsquo;s willing to join in. The many parties are just something that has to be experienced. Come join and I&rsquo;ll show you around",
		"keywords": ["amsterdam","booking","interface","netherland","programming","booking","brettterpstra","forgive","friday","netherlands","sponsorship","syndicate","thanks","within","acceptance","adventure","again","anytime","arriving","brilliant","chess","cliche","colleagues","coming","constantly","created","decisions","drinks","easily","evolve","experienced","experiments","feelings","football","fortnight","haven","hires","humbled","intelligent","intimidating","invited","knitting","learn","nationalities","office","parties","pushed","rsquo","sponsoring","super","thrilling","warmth","willing","within"]
	},{
		"title": "Generational 52",
		"url": "/2013/09/17/generational-52/",
		"tags": ["interview","podcast"],
		"date": "Sep 17<span>th</span>, 2013",
		"ts": "1379445900",
		"summary": "I was fortunate enough to be invited to join Generational with Gabe Weatherhead and special guest Rob Trew this week. I&rsquo;ve long admired Rob&rsquo;s knack for AppleScript and the genius behind his integrations of various Mac apps. He, Gabe and I all share a common thread in our scripting pursuits, and it was a great chance to talk with both of them about how and why we code. We also talk about getting started with coding of all types, and offered what suggestions we each have for people interested in getting started. If you&rsquo;re one of the many people who ask \"where do I start?\", you especially will enjoy this episode",
		"keywords": ["apple","applescript","development","languages","macintosh","script","applescript","check","generational","weatherhead","admired","behind","chance","coding","common","enjoy","enough","episode","especially","fortunate","genius","getting","great","guest","integrations","interested","invited","knack","offered","people","pursuits","rsquo","scripting","share","special","started","suggestions","thread","types","various","where"]
	},{
		"title": "Systematic 62 with Ellen Hinton",
		"url": "/2013/09/17/systematic-62-with-ellen-hinton/",
		"tags": ["podcast","systematic"],
		"date": "Sep 17<span>th</span>, 2013",
		"ts": "1379444880",
		"summary": "I had the great pleasure of being joined this week by Ellen Hinton, also known as \"Ellen Once Again.\" She&rsquo;s a recording artist with a soulful, upbeat sound and a history of combining technology and traditional music to create some great tracks. I was first exposed to Ellen back in 2011 when she put out a YouTube video that I wrote about on TUAW. She&rsquo;s done many videos since then, almost always combining iPad instruments and recording tools with more conventional instruments. It was a fun chat about her music, technology and songwriting. I think you&rsquo;ll enjoy it&hellip; check out the episode at 5by5",
		"keywords": ["iphone","studios","twitter","youtube","again","ellen","hinton","youtube","almost","artist","check","combining","conventional","create","enjoy","episode","exposed","first","great","hellip","history","instruments","joined","music","recording","rsquo","since","songwriting","soulful","sound","technology","think","tools","tracks","traditional","upbeat","video","videos","wrote"]
	},{
		"title": "And the ForkLift winners are...",
		"url": "/2013/09/13/and-the-forklift-winners-are-dot-dot-dot/",
		"tags": ["giveaway","macappstore","macos"],
		"date": "Sep 13<span>th</span>, 2013",
		"ts": "1379096820",
		"summary": "Thanks to everyone who entered. If you didn&rsquo;t win, you can still check out ForkLift on the Mac App Store or direct from the BinaryNights website",
		"keywords": ["battery","business","forklift","management","manager","public","safety","store","binarynights","fairhurst","forklift","forklift","frank","kevin","lavallee","marco","mcmahon","poupore","store","thanks","william","check","direct","entered","everyone","hellip","rsquo","website","winners"]
	},{
		"title": "Announcing the BusyCal Winners",
		"url": "/2013/09/12/announcing-the-busycal-winners/",
		"tags": ["giveaway","macappstore","macos"],
		"date": "Sep 12<span>th</span>, 2013",
		"ts": "1379020380",
		"summary": "Thanks to everyone who entered the giveaway for BusyCal 2.5. The lucky three winners are: If you&rsquo;re on the list and didn&rsquo;t receive a code, you&rsquo;ll need to contact me from the email address you entered with. Of course, if you failed to provide a last name, you might never know if you won or not&hellip; If you didn&rsquo;t win, you can still check out BusyCal and all that it can do for you on the Mac App Store and download a free trial from the BusyCal website. Don&rsquo;t forget that there&rsquo;s still time to enter for a chance in the ForkLift giveaway, too",
		"keywords": ["apple","busycal","busysync","calendar","google","store","busycal","chris","forklift","lawrence","michael","reynolds","store","thanks","address","chance","check","contact","download","email","enter","entered","everyone","failed","forget","giveaway","hellip","lucky","receive","rsquo","trial","website","winners"]
	},{
		"title": "Sponsor: Careers at Booking.com",
		"url": "/2013/09/12/sponsor-careers-at-booking-dot-com/",
		"tags": [],
		"date": "Sep 12<span>th</span>, 2013",
		"ts": "1378983600",
		"summary": "An exciting job opportunity from this week&rsquo;s sponsor, Booking.com: The front-end team at Booking.com continues to grow and we are looking for talented UX Designers, Web Designers, Product Owners, and Front End Developers to come help us create the world&rsquo;s best accommodation platform. You&rsquo;ll work at our head office in central Amsterdam which is sandwiched in-between canals, museums and the occasional statue of an old Dutch master (good evening, Mr. Rembrandt). We&rsquo;ll pay to move you and your family from anywhere in the world; USA, Portugal, New Zealand, Brazil, Japan, just to name a few! We&rsquo;ll provide short-term accommodation and help you adjust to your new home in Amsterdam. You&rsquo;ll be given the freedom to make impactful improvements to a website and collection of apps used by millions of people. We also have unique company perks like bicycle reimbursement, on site lunch, monthly parties, and our world class year end party complete with live performances",
		"keywords": ["amsterdam","brazil","japan","portugal","zealand","amsterdam","apply","booking","brazil","designers","developers","dutch","front","japan","owners","portugal","product","rembrandt","sponsorship","syndicate","zealand","adjust","anywhere","between","bicycle","canals","central","class","collection","company","continues","create","evening","exciting","family","freedom","front","impactful","improvements","looking","lunch","master","millions","monthly","museums","occasional","office","parties","party","people","performances","perks","platform","reimbursement","rsquo","sandwiched","short","sponsor","statue","talented","today","unique","website","world"]
	},{
		"title": "Web Excursions for September 11, 2013",
		"url": "/2013/09/11/web-excursions-for-september-11-2013/",
		"tags": ["bookmarks","design","macos","markdown"],
		"date": "Sep 11<span>th</span>, 2013",
		"ts": "1378922400",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. facebook/watchman Seems file watchers are a dime a dozen these days, but this one offers a heaping serving of configuration options and capabilities. Intermission: Pause and rewind live audio A new product from Rogue Amoeba that lets you pause, rewind and play back any audio that runs through your computer. Hook it up to Audio Hijack Pro and be able to get recordings of conversations&hellip; from the past. Transform Markdown Outline into a Numbered Outline A cool System Service for converting simple Markdown outlines to a nested numerical outline format. Textastic for Mac OS X Definitely the best programmers editor on iOS, the Mac version is progressing nicely. The latest release adds sidebar enhancements and fixes a few sandboxing issues. It&rsquo;s not replacing Sublime Text for me, but it&rsquo;s quite impressive for the price tag ($8.99). iBackpack Backpack Design With iPad by Soohun Jung Yanko Design Via Patrick Welker, this is brilliant. Use your backpack as a rearview mirror (with iPad and iPhone combo), turn signals and a message board to people behind you. Designed for bikers, but I want it for my car, too. Especially the message system&hellip; you know, for those occasions when a \"sorry\" shrug or certain fingers just don&rsquo;t convey the message. \"I just passed you on the right because you&rsquo;re driving like a Wisconsinite\" would be among my saved messages.1 Check out MindMeister and start brainstorming, collaborating, and boosting productivity. Hey, that rhymes.&nbsp;↩",
		"keywords": ["amoeba","audio","hijack","iphone","rogue","sublime","wisconsinite","amoeba","audio","backpack","check","definitely","design","designed","especially","hijack","intermission","markdown","mindmeister","numbered","outline","patrick","pause","rogue","seems","service","soohun","sublime","system","textastic","transform","welker","wisconsinite","yanko","among","apple","audio","backlink","backpack","because","behind","bikers","board","boosting","brainstorming","brilliant","brought","capabilities","certain","class","collaborating","collaborative","combo","computer","configuration","conversations","converting","convey","dozen","driving","editor","endnotes","enhancements","excursions","facebook","fingers","fixes","fnref","footnote","footnotes","format","github","hackademic","heaping","hellip","https","ibackpack","iphone","ibackpack","imessaging","impressive","intermission","issues","itunes","latest","ldquo","linklist","mapping","markdown","message","messages","mindmeister","mirror","nested","nicely","noteref","numbered","numerical","offers","options","outline","outlines","partnership","passed","pause","people","postach","price","product","productivity","programmers","progressing","rdquo","rearview","recordings","release","replacing","reversefootnote","rewind","rhyme","rhymes","right","rocketink","rogueamoeba","rsquo","sandboxing","saved","serving","shrug","sidebar","signals","simple","software","sorry","system","textastic","through","transform","version","watchers","watchman","webexcursions","yankodesign"]
	},{
		"title": "Advanced file management with ForkLift (plus giveaway!)",
		"url": "/2013/09/11/advanced-file-management-with-forklift-plus-giveaway/",
		"tags": ["finder","giveaway","keyboard","macappstore","macos","tools"],
		"date": "Sep 11<span>th</span>, 2013",
		"ts": "1378904400",
		"summary": "ForkLift is a file manager which &mdash; in my opinion &mdash; doesn&rsquo;t get mentioned nearly often enough. It combines the best features of file managers such as Path Finder, Finder extensions like TotalFinder, and FTP apps like YummyFTP and Transmit. It offers blazing fast remote file transfers and management with great tools for local file navigation. There&rsquo;s a long list of features, but a few of my favorites: Tabbed, dual-pane navigation Cmd-Shift-G provides a dropdown for tab completion when navigating folders via the keyboard Create custom tools using Unix scripts and have them available in the contextual menu.For example, I have tools for sharing files using StrongSpace and for quickly opening documents in Marked Remote editing of text files and source code is fast and surprisingly smooth Fully-customizable keyboard shortcuts for every feature Easy keyboard navigation between panes and tabs Assign shortcuts to any favorites you add Add favorites groups Save your \"workspaces\" and window setups A \"Stacks\" feature for collecting files from multiple locations Easily create and destroy multiple \"stacks\" Keyboard selection mode which allows for selecting and performing actions on files and folders without ever touching the mouse ForkLift also creates FTP droplets, handles dual local/remote browsing and folder sync, provides an array of compression formats, S3/WebDAV support, Growl integration, and FXP support (copying files between servers without downloading locally). It even provides filtering and searching options in addition to normal Spotlight capabilities, as well as some very cool batch file renaming features. Just because I like you all so much, I have five free copies of ForkLift ($19.99 US value) to hand out. Enter below (Quebec residents excluded) to have a chance at one. One entry per person, duplicates will be terminated by the Giveaway Robot. Five (5) winners will be drawn randomly on Friday, Sept. 13th at 12:00pm CDT. Check out ForkLift on the Mac App Store, and feel free to download a free trial to take for a spin. And don&rsquo;t forget, there&rsquo;s still one more day to enter the BusyCal giveaway! Sorry, this giveaway has ended",
		"keywords": ["finder","forklift","keyboard","protocol","shortcut","store","totalfinder","assign","busycal","check","create","easily","enter","finder","forklift","friday","fully","giveaway","growl","keyboard","marked","quebec","remote","robot","shift","sorry","spotlight","stacks","store","strongspace","tabbed","totalfinder","webdav","yummyftp","actions","allows","array","available","batch","because","below","between","blazing","browsing","capabilities","chance","collecting","combines","compression","contextual","copies","copying","create","creates","custom","customizable","destroy","documents","doesn","download","downloading","dropdown","droplets","duplicates","editing","ended","enough","enter","entry","example","excluded","extensions","favorites","feature","features","files","filtering","folder","folders","forget","formats","giveaway","great","groups","handles","integration","keyboard","local","locally","locations","management","manager","managers","mdash","mentioned","mouse","multiple","navigating","navigation","nearly","normal","offers","often","opening","options","panes","performing","person","provides","quickly","randomly","remote","renaming","residents","rsquo","scripts","searching","selecting","selection","servers","setups","sharing","shortcuts","smooth","source","stacks","support","surprisingly","terminated","tools","touching","transfers","trial","using","value","window","winners","workspaces"]
	},{
		"title": "Systematic 61 with Craig Scott",
		"url": "/2013/09/10/systematic-61-with-craig-scott/",
		"tags": ["developer","podcast","systematic"],
		"date": "Sep 10<span>th</span>, 2013",
		"ts": "1378828140",
		"summary": "This week I had the pleasure of hosting Craig Scott, the indie developer behind iThoughts, iThoughtsHD, iThoughtsX, makeSlides and makeDoc. We dove into development talk, chatted about the App Store and conversed about our favorite software in the Top 3 Picks. Thanks to Craig for joining me, and for working out the whole international time zone thing with me. Check out the episode on 5by5",
		"keywords": ["apple","programs","store","studios","twitter","check","craig","picks","scott","store","thanks","behind","chatted","conversed","developer","development","episode","favorite","hosting","ithoughts","ithoughtshd","ithoughtsx","indie","international","joining","makedoc","makeslides","software","whole","working"]
	},{
		"title": "Get busy: BusyCal 2.5 giveaway",
		"url": "/2013/09/09/get-busy-busycal-2-dot-5-giveaway/",
		"tags": ["giveaway","macappstore","macos","notifications"],
		"date": "Sep 9<span>th</span>, 2013",
		"ts": "1378744200",
		"summary": "Is the built-in OS X Calendar app not doing the trick for you? BusyCal is a great alternative that won&rsquo;t make you sacrifice the system integration you&rsquo;re used to. It adds full support for iCloud, Exchange, Google Calendar and other CalDAV servers. It features advanced alarms which can optionally integrate with Notification Center and be snoozed for any length of time. It even combines weather forecasts with your events and to-dos, and offers multiple views &mdash; including a menubar dropdown for a quick overview. If you&rsquo;re a Mac user working in a Windows world, BusyCal is now compatible with Exchange 2007, 2010 and 2013, plus hosted services such as Office 365. It supports Exchange Calendars and Tasks, calendar sharing, and meeting scheduling. There&rsquo;s a \"Find\" window that lets you search your entire calendar, regardless of the current view. Also, and importantly, Events and To Dos all sync with the iOS 6 Calendar and Reminders apps. BusyCal is $29.99 US on the Mac App Store, (free trial available), but I happen to have three copies to give away for free. If you make frequent use of your Calendar but have run up against the various intrinsic faults of the built-in one, you should sign up for a chance to win. Winners will be drawn on Thursday, September 12 at Noon CDT. Promo codes for three (3) copies of BusyCal ($29.99 US value) will be sent to randomly selected entrants. Open to everyone except for residents of Quebec (as always, apologies). Sorry, this giveaway has ended",
		"keywords": ["apple","busycal","busysync","calendar","center","google","icloud","notification","reminders","store","busycal","caldav","calendar","calendars","center","events","exchange","google","notification","office","promo","quebec","reminders","sorry","store","tasks","thursday","windows","winners","advanced","against","alarms","apologies","available","built","calendar","chance","codes","combines","compatible","copies","doing","dropdown","ended","entire","entrants","events","everyone","except","faults","features","forecasts","frequent","giveaway","great","happen","hosted","icloud","importantly","including","integrate","integration","intrinsic","length","mdash","meeting","menubar","multiple","offers","optionally","overview","quick","randomly","regardless","residents","rsquo","sacrifice","scheduling","search","selected","servers","services","sharing","snoozed","support","supports","system","trial","trick","value","various","views","weather","window","working","world"]
	},{
		"title": "Federico Viticci wrote the book on Editorial for iPad",
		"url": "/2013/09/09/federico-viticci-wrote-the-book-on-editorial-for-ipad/",
		"tags": ["bookreview","books","ibooks","reading"],
		"date": "Sep 9<span>th</span>, 2013",
		"ts": "1378735200",
		"summary": "Federico Viticci, editor of Macstories, has published his first book on the iBookstore, and the topic is one he&rsquo;s proven passionate about: Editorial for iPad. The book is an expansion of the already-expansive review he published when Editorial first came out. The book is called \"Writing On The iPad: Text Automation with Editorial.\" It&rsquo;s reformatted and updated with Retina screenshots, video tutorials, interactive graphics and 20 new workflows you won&rsquo;t find elsewhere. For a limited time, he&rsquo;s selling it for just $2.99 US. You can read the book right on your iPad and install the workflows from the book as you read it. Much like the current $4.99 price of Editorial, It&rsquo;s a good deal, check it out",
		"keywords": ["automation","editorial","federicoviticci","ibooks","macstories","workflow","automation","editorial","federico","macstories","retina","viticci","writing","called","check","editor","elsewhere","expansion","expansive","first","graphics","ibookstore","install","interactive","limited","passionate","price","proven","published","reformatted","right","rsquo","screenshots","selling","topic","tutorials","updated","video","workflows"]
	},{
		"title": "Editor and CriticMarkup extensions for PopClip",
		"url": "/2013/09/08/editor-and-criticmarkup-extensions-for-popclip/",
		"tags": ["criticmarkup","markdown","popclip"],
		"date": "Sep 8<span>th</span>, 2013",
		"ts": "1378672920",
		"summary": "Update: Of course, as usual, I did this without checking to see if there was already a PopClip extension for CriticMarkup. I haven&rsquo;t tried the one that comes with the download, so I can&rsquo;t say if mine adds anything worthwhile or not. If you have input, let me know. Ever since creating the Too Many Wrappers extension for PopClip, I&rsquo;ve primarily been using it to wrap , and tags when editing in HTML and Markdown. I decided I should just make that it&rsquo;s own extension, and put together a CriticMarkup extension while I was at it. These make adding \"editor&rsquo;s marks\" to Markdown documents as easy as selecting the text to highlight, insert or delete and clicking a button. In the case of CriticMarkup, holding down Control and Option inserts the necessary markup for signifying a suggested change. All CriticMarkup commands include an optional comment with your signature or initials, set in the preferences for the extension. The extensions are now part of the pack, and the source is available on GitHub. The different marks are all contained in one extension and triggered by holding down various modifier keys. I really wanted to use \"Shift\" in a few places (insertions), but have found that key problematic in my extensions. So think of Control as Shift in these for a slightly more mnemonically-sensible set of bindings. In the extension&rsquo;s preferences, there&rsquo;s a toggle for datetime. If it&rsquo;s left turned on, and tags will include a attribute for the current time. Just a little microdata that comes in handy when reviewing. This extension allows the quick insertion of CriticMarkup syntax, a means for collaborative editing using plain text markup. Optionally fill in a signature or initials to have a comment included after every insert, deletion or change signifying who made the edit. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["editor","github","markdown","shift","twitter","brett","change","changelog","command","comment","control","criticmarkup","deletion","donate","download","editor","extensions","github","highlight","insertion","markdown","optionally","popclip","published","shift","updated","wrappers","adding","allows","attribute","available","bindings","button","change","checking","click","clicking","collaborative","comes","commands","comment","contained","creating","datetime","decided","deletion","different","documents","download","editing","editor","extension","extensions","found","handy","haven","hellip","highlight","holding","included","initials","input","insertion","insertions","inserts","little","marks","markup","microdata","mnemonically","modifier","necessary","optional","places","preferences","primarily","problematic","quick","reviewing","rsquo","selecting","sensible","signature","signifying","since","slightly","source","suggested","syntax","think","together","toggle","tools","tried","triggered","turned","useful","using","various","wanted","while","worthwhile","writing"]
	},{
		"title": "Sponsor: Encoding.com",
		"url": "/2013/09/05/sponsor-encoding-dot-com/",
		"tags": [],
		"date": "Sep 5<span>th</span>, 2013",
		"ts": "1378378800",
		"summary": "A big thanks to Encoding.com for sponsoring BrettTerpstra.com this week! Still encoding video with on-premise hardware? Encoding.com is the world&rsquo;s fastest cloud encoding service. We&rsquo;ve made proprietary optimizations for ingest, queue times, processing, and egress of your source content that rivals the fastest on-premise equipment, with infinite scalability. We support nearly every video format imaginable, including a few that only we offer. We can accommodate a number of different transcoding workflows with an easy to use web interface, a flexible watch folder, a desktop uploader, or our robust and mature API. You can even automate basic editing tasks such as video overlays and concatenation programmatically using our API. Vid.ly is a unique feature of our service that completely takes the guesswork out of your transcoding workflow, combining transcoding, device detection, delivery, and storage into a single short url. Don&rsquo;t take our word for it, try our forever free account today, complete with your own API key",
		"keywords": ["encoding","interface","programming","syndicate","transcoding","workflow","brettterpstra","encoding","sponsorship","syndicate","accommodate","account","automate","basic","cloud","combining","completely","concatenation","content","delivery","desktop","detection","device","different","editing","egress","encoding","equipment","fastest","feature","flexible","folder","forever","format","guesswork","hardware","imaginable","including","infinite","ingest","interface","mature","nearly","offer","optimizations","overlays","premise","processing","programmatically","proprietary","queue","rivals","robust","rsquo","scalability","service","short","single","source","sponsoring","storage","support","takes","tasks","thanks","times","today","transcoding","unique","uploader","using","video","watch","workflow","workflows","world"]
	},{
		"title": "Web Excursions for September 04, 2013",
		"url": "/2013/09/04/web-excursions-for-september-04-2013/",
		"tags": ["bookmarks"],
		"date": "Sep 4<span>th</span>, 2013",
		"ts": "1378336740",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. explainshell.com - match command-line arguments to their help text Via One Thing Well, this little tool can do more to explain the shell commands I and others share than any of us will probably ever write out. Just paste in the command and get an explanation for every option and argument. square/apropos A very handy Compass plugin that sets up CSS for serving mobile, desktop and @2x versions appropriately from a specifically-named set of assets. Spektro Audio A talented new sound design company looking to work with developers on UI and game sounds. Demos and a sample pack available. Inc We&rsquo;ve started using this at work and it&rsquo;s been great for collaborative bookmarking. Ice.js Via Erik Sagen: Ice is a track changes implementation, built in javascript, for anything that is contenteditable on the web. Conceived by the CMS Group at The New York Times, ice has been piloting successfully for articles written in the newsroom. Mac App Store - Droplr This has long been my file-and-screenshot-sharing app of choice. The new annotation option (pro subscription required) is everything I needed to make it a complete solution for me. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["apple","cascading","command","github","interface","sheets","store","style","audio","backblaze","check","compass","conceived","demos","droplr","group","sagen","spektro","store","times","affordably","annotation","appropriately","apropos","argument","arguments","articles","assets","available","backs","bookmarking","brought","built","changes","choice","cloud","collaborative","command","commands","company","computer","contenteditable","design","desktop","developers","entire","everything","excursions","explain","explainshell","explanation","great","handy","implementation","javascript","little","looking","match","mobile","named","needed","newsroom","others","partnership","paste","piloting","plugin","reliably","required","rsquo","sample","screenshot","securely","serving","share","sharing","shell","solution","sound","sounds","specifically","square","started","subscription","successfully","talented","today","track","using","versions","write","written"]
	},{
		"title": "A guided tour of brettterpstra.com",
		"url": "/2013/09/04/a-guided-tour-of-brettterpstra-dot-com/",
		"tags": ["hacks","jekyll","webdesign"],
		"date": "Sep 4<span>th</span>, 2013",
		"ts": "1378321200",
		"summary": "I tend to spend a couple hours every weekend hacking new features into this website. A lot of them are convenience features on the back end that really have no visible effect on the user experience, but some of them do. I think a lot of them fly under the radar. In order to make myself feel a little better about the time invested, as well as helping me to remember what all I&rsquo;ve done, I thought I&rsquo;d point out a few of the prominent, front-facing \"tricks.\" I&rsquo;m happy to share the techniques behind any of these, but will conserve writing time and wait for any specific requests to come up before I decide what&rsquo;s worth a post. Feel free to leave a comment here or ping me on Twitter about anything you&rsquo;d like more detail on. The box at the top of the homepage is driven by a background process that polls every hour to see which of the last 40 posts have the most links on Twitter, which I&rsquo;ve found to be a pretty accurate gauge of popularity. It caches straight HTML and loads it asynchronously after the page load is complete. The web excursions are powered by a Pinboard tag (\"blogit\") and a local script which waits for five links with that tag to accumulate before generating a draft post. I just edit the post for any corrections and hit publish. jTag and Zemanta handle adding keywords, and boilerplate text is inserted at the beginning of the permalink page during page render based on YAML header tags. Twitter cards, Facebook embeds and other social sharing metadata is handled via simple plugins which do things like extracting the first image from the post, detecting YouTube embeds and generating keywords and descriptions from summarized text. If I include a file with the same name as the first image but with \"lg\" at the end and before the extension, that version is used for the image share. In reality, I just have an htaccess rule that always uses \"imagelg.png\" as the embed image, but if the file doesn&rsquo;t exist it serves the regular-sized image under that name. The download box you see at the bottom of posts with related scripts or applications is driven by a downloads manager that I&rsquo;ve written about before. It uses a CSV file which I can update at any time to regenerate all of the links to a download across the site to the latest version. It also works with external links such as GitHub zipballs. My current tag for Jekyll creates grey-box images with data attributes for the original source. When you scroll&hellip;",
		"keywords": ["github","iphone","javascript","youtube","collapsing","contents","desktop","discover","donate","downloads","excursions","facebook","filtering","github","github","graph","headline","infinite","javascript","jekyll","kramdown","links","markdown","nobody","opendyslexic","paypal","pinboard","podcast","projects","recently","responsive","search","series","stars","superreadable","table","topics","twitter","watches","waypoints","youtube","zemanta","accept","accumulate","accurate","across","active","activity","added","adding","affecting","algorithms","alters","animated","animations","applications","applied","approaches","article","asynchronously","attempted","attributes","automatically","avoid","background","based","before","beginning","behind","blogit","boilerplate","bottom","breakpoints","bring","build","built","business","button","caches","called","capability","cards","causes","certain","choice","chronological","class","click","close","cloud","collapse","comment","comprehension","compressing","conserve","consider","consist","contains","contents","contrast","convenience","corrections","couple","create","creates","creating","curious","custom","decide","descriptions","detail","detected","detecting","dimensions","directly","disabled","document","doesn","donation","download","downloads","draft","driven","dyslexic","easier","editing","embed","embeds","enabled","enough","entire","entirely","entry","eventual","evolve","example","excursions","exist","experience","expression","extension","external","extra","extracting","facing","fairly","faster","feature","features","feeds","files","filter","first","floating","folder","fonts","forgot","found","front","gauge","general","generated","generates","generating","going","hacking","hacks","handle","handled","happen","happens","happy","haven","header","headers","headlines","helping","highlights","homepage","hours","htaccess","iphone","icons","image","images","improves","includes","index","indicating","individual","infinite","inline","inserted","invested","issues","itself","jquery","jarring","jekylljournal","jewelry","keywords","latest","layout","leave"]
	},{
		"title": "Using Growl for long-running script status",
		"url": "/2013/08/31/using-growl-for-long-running-script-status/",
		"tags": ["applescript","growl","jekyll","notifications","scripting","status"],
		"date": "Aug 31<span>st</span>, 2013",
		"ts": "1377987420",
		"summary": "My Jekyll build takes a while, and when I&rsquo;m at my machine I like to know at a glance if a build is running. I&rsquo;ve gone to great lengths with and GeekTool to put status lights on my desktop. I do the same for multiple long-running tasks. I realized the other day, though, that Growl could do this very easily, and could be automated as part of a script or Rake task. It&rsquo;s simple: just post a sticky Growl notification with growlnotify and use at the end of the script to clear it. In order for this to work, you have to be using Growl with its native notifications, not passing them to Notification Center1. You can pass an app name to the initial notification and then use Growl settings to pick a special theme and screen location for anything from that name. For example, I have a \"notify\" function in my Jekyll Rakefile that includes a Growl option. I pass it a message at the beginning of the \"generate\" task and it runs: As long as the task is running, the sticky notification stays there. At the end, it clears. I have an exception handler that will clear it on error as well, and post a sticky red notification in its place. For various reasons I&rsquo;ve gone back to loving Growl and use it in addition to Notification Center rather than in tandem with it.&nbsp;↩",
		"keywords": ["center","exception","geektool","growl","handling","linux","notification","&#39;tell","center","geektool","growl","growlhelperapp","handy","jekyll","notification","rakefile","automated","backlink","beginning","black","build","class","clear","clears","close","desktop","downloads","easily","endnotes","error","example","exception","fnref","footnote","footnotes","function","generaldownloads","generation","glance","great","growl","growlnotify","handler","highlight","highlighter","includes","initial","language","ldquo","lengths","lights","location","loving","lower","machine","message","multiple","native","noteref","notification","notifications","notifications&#39;","notifyutil","osascript","passing","plaintext","rather","rdquo","realized","reasons","reversefootnote","rouge","rsquo","running","screen","script","settings","simple","small","special","specific","status","stays","sticky","takes","tandem","tasks","theme","using","various","while"]
	},{
		"title": "It's a blue period, but with PopClip instead of paint",
		"url": "/2013/08/30/its-a-blue-period-but-with-popclip-instead-of-paint/",
		"tags": ["extension","popclip"],
		"date": "Aug 30<span>th</span>, 2013",
		"ts": "1377867600",
		"summary": "And me instead of Picasso. Take what you can get, I suppose. I recently put version 1.8 of \"Brett&rsquo;s PopClip Extensions\" up for download, and added a project page with the latest information. It&rsquo;s become quite a collection, I figured it was time. Here&rsquo;s a rundown of some of the most recent changes. Blockquote: Handle line breaks better Command-click to decrease quote level Command-Option-click key to remove all quoting don&rsquo;t quote reference link definitions BulletList: Bullet type configuration options, Command modifier to remove list formatting CopyPlus: Option modifier to concatenate strings with no extra whitespace Credits block for all extensions URLEncode extension (also available at Pilot Moon) Grab the updated versions below. If you&rsquo;re already using any of them, double clicking it from the downloaded package will update the installed version. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["encoding","extension","github","percent","popclip","blockquote","brett","bullet","bulletlist","changelog","command","copyplus","credits","donate","download","extensions","handle","markdown","outdent","picasso","pilot","popclip","published","removed","shift","urlencode","updated","wrappers","added","available","below","between","block","breaking","breaks","changes","click","clicking","collection","concatenate","configuration","decrease","definitions","double","download","downloaded","entries","extension","extensions","extra","figured","formatting","fully","hellip","information","installed","latest","level","linebreak","modifier","options","outdent","package","project","quote","quoting","recent","recently","remove","rsquo","rundown","strings","stuff","suppose","tools","updated","useful","using","version","versions","whitespace","writing"]
	},{
		"title": "Easily save that wicked awesome shell command",
		"url": "/2013/08/30/easily-save-that-wicked-awesome-shell-command/",
		"tags": ["function","scripting","shell","source","terminal"],
		"date": "Aug 30<span>th</span>, 2013",
		"ts": "1377867600",
		"summary": "This isn&rsquo;t a brand new trick. It&rsquo;s based on a Bash function for \"alias last\" that I&rsquo;ve seen in a few places. The original version uses to get the last command you ran and turn it into a temporary alias. I expanded it a little with some escaping for quotes and trimming whitespace, but it&rsquo;s the same function. I wanted an easy way to get it into a more permanent place, though. So I wrote (\"alias last and save\"). You can just drop it in , edit in the filename to save to in the line1, and run . Next time you come up with a complex pipeline of commands to accomplish a task, just run . A line will be appended to your alias file that turns into an alias that will be available every time you use your shell (it also goes ahead and creates it in the current session so you don&rsquo;t have to source the file). If you run it with \"c\" being the first argument before the alias name (), it will cut off the last argument in the command you&rsquo;re saving. That&rsquo;s for if the last argument is a filename or pattern and you&rsquo;ll be changing it next time you want to run the command. Hacky, but handy if you remember it. I&rsquo;ve been starting to port over to zsh lately, but I&rsquo;m still learning about a few quirks. In this case, I&rsquo;m not certain why the command behaves differently. If I figure that out, this will work fine in zsh as well. This file can be your file, or any other file, as long as you it in your main profile.&nbsp;↩",
		"keywords": ["alias","computer","operating","shell","systems","alias","chopping","filename","hacky","ahead","alias","aliases","aliasfile","aliaslast","appended","argument","available","backlink","based","before","behaves","brand","certain","changing","class","command","commands","complex","creates","custom","differently","endnotes","escaping","exists","expanded","ffeff","figcaption","figure","filename","filenames","first","fnref","footnote","footnotes","function","github","githubusercontent","handy","highlight","highlighter","history","https","language","ldquo","learning","little","local","myawesomecommand","nalias","noteref","original","pattern","patterns","permanent","pipeline","places","plaintext","profile","quirks","quotes","rdquo","remember","return","reversefootnote","rouge","rsquo","saving","session","shell","shift","source","starting","temporary","touch","trick","trimming","ttscoff","turns","version","wanted","whitespace","wrote"]
	},{
		"title": "PopClip hacking",
		"url": "/2013/08/29/popclip-hacking/",
		"tags": ["extension","hacks","popclip","quicktip"],
		"date": "Aug 29<span>th</span>, 2013",
		"ts": "1377800280",
		"summary": "I&rsquo;ve obviously been on a PopClip kick lately. I run a lot of my little scripts through Services, but there are only so many shortcut combinations on a keyboard (and in my memory) and right clicking to run a Service is cumbersome. PopClip streamlines it for me, so I&rsquo;m exploring&hellip; Here&rsquo;s a quick tip that Pilot Moon posted on Twitter recently: you can change the labels of \"Copy,\" \"Cut,\" and \"Paste\" to short versions (e.g. \"C\") in the PopClip bar. Just run the following in Terminal. If you&rsquo;re an avid PopClip user, you probably have a popup window that&rsquo;s overflowing. It sometimes takes at least two clicks to get to what you want, and it takes time to scan for the right button, and that all kind of defeats the purpose of PopClip. If this is the case for you (it is for me), it might be time to clean up the list. If there are some extensions you can&rsquo;t bear to part with but you only need in certain apps, you can restrict them from appearing everywhere else with a bit of hacking. In most cases this won&rsquo;t be a huge help, but there are some extensions, for example, that I only need when editing text in a few specific editors, and some that I really only use when reading emails or browsing the web (e.g. SkypeCall). This is something extension developers can choose to do when they build one, but in most cases they have no inkling of your specific use case. So, it&rsquo;s up to you to do a little hacking. It&rsquo;s kind of easy to break these when editing the PLIST, but the worst case scenario is that your extension will refuse to load. Just make sure you have a backup of the original. Download a fresh copy of the extension you want to edit. Unzip it if it&rsquo;s compressed, but don&rsquo;t double click the file Rename the file from to and then double click it Right click the file that is extracted and choose \"Show Package Contents\" Find and open in a text editor After the first tag (line 4) insert a block like this1 Modify the bundle identifier strings in the block above to match the applications you want the extension to show up in. It&rsquo;s easiest to find the bundle identifier on the command line. Run: The bundle ID will look like . Save the Config.plist file Test it out by double clicking the enclosing folder in Finder. If the folder doesn&rsquo;t have the extension , you&rsquo;ll need to add that for PopClip to recognize and load it. When loaded from a non-compressed&hellip;",
		"keywords": ["context","popclip","property","appname","applications","blocked","compress","config","contents","download","extensions","finder","modify","plist","package","paste","pilot","popclip","popcliphacking","rename","required","restricting","right","service","services","shorter","skypecall","terminal","textedit","twitter","unzip","useshorttitles","above","appearing","apple","applications","array","backlink","backup","block","break","brettterpstra","browsing","build","bundle","button","certain","change","check","choose","class","clean","click","clicking","clicks","combinations","command","companyname","compressed","cumbersome","curious","defaults","defeats","developers","disappear","distribution","doesn","double","easiest","editing","editor","editors","elasticthreads","emails","enclosing","endnotes","everywhere","example","exploring","extension","extensions","extracted","first","fnref","folder","footnote","footnotes","format","fresh","github","hacking","hackish","haven","height","hellip","highlight","highlighter","https","ideal","identifier","image","inkling","kmditemcfbundleidentifier","keyboard","killall","labels","language","ldquo","little","loaded","loading","master","match","media","memory","noscript","noteref","options","original","overflowing","picture","pilotmoon","plaintext","plist","popclip","popclipext","popclipextz","popup","posted","quick","rdquo","reading","recently","recognize","refuse","rename","restrict","restricting","reversefootnote","right","rouge","rsquo","scenario","scripts","short","shortcut","shorter","sometimes","source","specific","srcset","streamlines","string","strings","takes","testing","through","title","titles","twitter","uploads","versions","width","window","worst","write"]
	},{
		"title": "Side note: Curio 8 is on sale",
		"url": "/2013/08/28/side-note-curio-8-is-on-sale/",
		"tags": ["brainstorming","curio","macos","productivity"],
		"date": "Aug 28<span>th</span>, 2013",
		"ts": "1377703800",
		"summary": "I haven&rsquo;t gotten my Curio brainstorming article together yet, but I did want to mention that there&rsquo;s a sale on it right now until August 31st. You can use the code BACKTOSCHOOL at their online store and get 20% off of Curio 8 (usually $99). Curio is a crazy powerful app for brainstorming and project management, as well as more creative endeavors. It&rsquo;s one of my favorite tools for putting together and tracking ideas and projects. Even considering that, I constantly feel I&rsquo;m underusing it. But you don&rsquo;t have to take a leap based on my opinions, there&rsquo;s a free trial you can run for 25 days. You can find that, along with a wealth of information, over at the Zengobi site",
		"keywords": ["brainstorming","business","curio","management","project","zengobi","backtoschool","curio","zengobi","article","based","brainstorming","considering","constantly","crazy","creative","endeavors","favorite","gotten","haven","ideas","information","management","mention","online","opinions","powerful","project","projects","putting","right","rsquo","store","together","tools","tracking","trial","underusing","usually","wealth"]
	},{
		"title": "Too many wrappers - a PopClip Extension",
		"url": "/2013/08/28/too-many-wrappers-a-popclip-extension/",
		"tags": ["popclip"],
		"date": "Aug 28<span>th</span>, 2013",
		"ts": "1377685200",
		"summary": "It started last night when I put together a little app that could generate PopClip extensions. I&rsquo;m embedding the video for it at the end of this post because it was really fun to make, but I&rsquo;ve decided not to distribute it for a while. I have future plans to make it useful, but for now its functionality can be replicated with the \"Options\" dictionary that I hadn&rsquo;t noticed before in PopClip extensions. It allows you to build a config panel right in PopClip. The extension I made to test this out is called \"Too Many Wrappers,\" or just \"Wrappers\" for short. It&rsquo;s similar to some of my other extensions in that it just surrounds your text with, well, other text. Bolding in Markdown, for example, takes two asterisks on both sides. But what if you want to use the equivalent two underscores? This extension lets you customize. You can add prefixes and suffixes for up to three different wrappers, triggered by clicking, clicking with the Command key down and clicking with the Option key down. You can put any text into either box. When installing the extension, the initial blank options will appear for setup. They can be accessed and edited again by going into edit mode (clicking the pencil at the bottom) in the plugin panel and clicking the gear icon next to \"Wrappers.\" Too Many Wrappers is included in BrettsPopClipExtensions, download below. Source is up on GitHub. If you&rsquo;re curious about adding options to an extension, see the Config.plist file for this one. Also, here&rsquo;s that amazing video for an app that really does nothing. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["extension","markdown","popclip","video","bolding","brett","brettspopclipextensions","changelog","command","config","donate","download","extensions","github","markdown","options","popclip","published","source","updated","wrappers","accessed","adding","again","allows","amazing","appear","asterisks","because","before","below","blank","bottom","build","called","clicking","config","curious","customize","decided","dictionary","different","distribute","download","edited","either","embedding","example","extension","extensions","functionality","going","hellip","included","initial","installing","little","night","nothing","noticed","options","panel","pencil","plans","plist","plugin","prefixes","replicated","right","rsquo","setup","short","sides","similar","started","suffixes","surrounds","takes","together","tools","triggered","underscores","useful","video","while","wrappers","writing"]
	},{
		"title": "Systematic 59 with Gil Hova",
		"url": "/2013/08/27/systematic-59-with-gil-hova/",
		"tags": ["podcast","systematic"],
		"date": "Aug 27<span>th</span>, 2013",
		"ts": "1377618480",
		"summary": "I got the chance to talk to Gil Hova, a programmer-cum-board game designer. We dive into the psychology of board games and board game design. It was enlightening for me, and brought up a lot of concepts I hadn&rsquo;t thought about before. Thanks to Gil for being a great guest. Check out the episode at 5by5",
		"keywords": ["boardgame","games","shopping","studios","video","check","thanks","before","board","brought","chance","concepts","design","designer","enlightening","episode","games","great","guest","programmer","psychology","rsquo","thought"]
	},{
		"title": "jTag: Auto-tagging for Jekyll",
		"url": "/2013/08/27/jtag-auto-tagging-for-jekyll/",
		"tags": ["autotag","blogging","jekyll","tagging"],
		"date": "Aug 27<span>th</span>, 2013",
		"ts": "1377612000",
		"summary": "I&rsquo;m building an AutoTag system for my Jekyll setup. Unlike the Zemanta system I use for additional keywords, this tool is designed to match your content to existing tags you already use on your blog, helping to keep a consistent taxonomy and better post relationships. It&rsquo;s more like the TextMate/WordPress version I created. Like that version, there are two parts to it: a tag plugin on the blog side and a local tool for pulling information from it and processing it. Note: this tool could technically be used on any static blogging system that uses YAML headers. Generating the JSON listing of your blog&rsquo;s tags would be the only part that would need customization. It&rsquo;s working great for me, but I haven&rsquo;t tested every possible scenario yet. Make sure you have a backup of your posts (or just test on copies of your _posts folder). I use git for versioning my Jekyll source files, so I can always undo a mistake. It&rsquo;s worth it",
		"keywords": ["formats","github","javascript","jekyll","templates","autotag","check","generating","jekyll","projects","textmate","unlike","wordpress","zemanta","backup","blogging","building","consistent","content","copies","created","customization","designed","files","folder","great","haven","headers","helping","information","keywords","listing","local","match","mistake","parts","plugin","possible","posts","processing","pulling","relationships","rsquo","scenario","section","setup","source","static","system","taxonomy","technically","tested","version","versioning","working","worth"]
	},{
		"title": "Sponsor: Smile",
		"url": "/2013/08/26/sponsor-smile/",
		"tags": ["smile","textexpander"],
		"date": "Aug 26<span>th</span>, 2013",
		"ts": "1377514800",
		"summary": "I have the honor of being directly sponsored by Smile this week. In addition to being great people, as the creators of TextExpander, TextExpander touch, PDFpen for OS X, and PDFpen for iPad and iPhone, Smile is one of my favorite groups of developers. My favorite and most-used tool from Smile is TextExpander, which I&rsquo;m sure you&rsquo;ve heard me mention before. It can rapidly replace short snippets of text with anything you want, from canned email replies to dynamic snippets of text, images, even shell or AppleScript output (for the nerdy among us). The new fill-in feature even lets you adjust dynamic parts of the text from a popup menu before inserting it. To demonstrate, my friend David Sparks has put together a great video on the Fill-in feature. TextExpander touch brings all of this fun to iOS (and syncs snippets with your Mac), and there are a ton of apps which support it. The list keeps growing1. I have a slew of my own snippets and experiments for TextExpander available in the te-snippets tool. My current favorite is the Make A Date snippet, which turns natural language text (thursday 3pm) into formatted dates. There are plenty of tricks to try out, though! PDFpen for iPad (and for iPhone!) is also an amazing productivity tool. If you receive contracts or forms via email, you can sign and return them directly from your iPad without having to print or fax anything. You don&rsquo;t have to remember an error you saw in a document until you get back to your computer, either; you can fix typos and correct documents on the go. Like its desktop companions, PDFpen for iPad has great annotation tools. Add notes, highlighting, and other markup right from your iPad. It syncs with your Mac via iCloud or Dropbox, and works with Evernote, Box and Google Drive. Check out all of Smile&rsquo;s great products, you won&rsquo;t regret it! Developers, you&rsquo;d be crazy not to include TextExpander support in any app you build. It&rsquo;s not just me saying that.&nbsp;↩",
		"keywords": ["applescript","drive","dropbox","evernote","google","icloud","iphone","pdfpen","applescript","check","david","developers","drive","dropbox","evernote","google","pdfpen","smile","sparks","textexpander","tools","adjust","amazing","among","annotation","available","backlink","before","brettterpstra","brings","build","canned","class","companions","computer","contracts","crazy","crcampaign","crcat","creators","crsource","dates","desktop","developers","directly","document","documents","dynamic","either","email","endnotes","error","experiments","favorite","feature","fnref","footnote","footnotes","formatted","forms","friend","great","group","groups","growing","having","heard","height","highlighting","honor","https","icloud","iphone","image","images","index","inserting","keeps","language","loading","macsparky","markup","media","mention","natural","nerdy","noscript","noteref","notes","original","output","parts","pdfpen","people","picture","plenty","popup","prefix","print","productivity","products","rapidly","receive","regret","remember","replace","replies","return","reversefootnote","right","rsquo","saying","share","shell","short","smile","smilesoftware","snippet","snippets","source","sponsored","srcset","support","syncs","tesupport","tetouch","textexpander","thursday","title","together","tools","topic","touch","tricks","turns","typos","uploads","video","vimeo","width","works"]
	},{
		"title": "Web Excursions for August 25, 2013",
		"url": "/2013/08/25/web-excursions-for-august-25-2013/",
		"tags": ["bookmarks","github"],
		"date": "Aug 25<span>th</span>, 2013",
		"ts": "1377462600",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. That&rsquo;s right, Web Excursions two days in a row. It&rsquo;s been a nice, quiet weekend and I&rsquo;ve had a little extra time to explore&hellip; qlImageSize I missed this when it was new, but I&rsquo;m glad I found it now. It&rsquo;s such a handy plugin, especially for web designers. It displays pixel dimensions and file size for any image you QuickLook (including from the command line). Test Internet Connection Speed from the Command Line A handy trick for testing your network speed from the command line. I&rsquo;ve already forgotten where I found this, so I apologize for the lack of attribution. FredrikNoren/ungit A slick web-based tool for local or cloud git repositories which simplifies managing a repo. It offers a drag-and-drop interface for working with branching, merging, commiting, etc. Node.js-based and very pretty. Tear-able Cloth - CodePen Holy S@#T, this demo is amazing. PRSM - The Sharing Network Via @viticci with a hat tip to Stephen Hackett, a humorous but sobering take on the social&hellip; everything",
		"keywords": ["command","github","interface","programming","cleanmymac","cloth","codepen","command","excursions","fredriknoren","hackett","internet","network","quicklook","sharing","speed","stephen","amazing","apologize","attribution","based","branching","brought","cloud","command","commiting","designers","dimensions","displays","especially","everything","excursions","explore","extra","forgotten","found","handy","hellip","humorous","image","including","interface","little","local","managing","merging","missed","network","offers","partnership","pixel","plugin","qlimagesize","quiet","repositories","right","rsquo","simplifies","slick","sobering","social","speed","testing","tools","trick","ungit","viticci","weekend","where","working"]
	},{
		"title": "Clickable wiki links in the nvALT preview",
		"url": "/2013/08/25/clickable-wiki-links-in-the-nvalt-preview/",
		"tags": ["editor","javascript","notes","nvalt","scripting"],
		"date": "Aug 25<span>th</span>, 2013",
		"ts": "1377454140",
		"summary": "I worked this very short script up last night to help a friend scratch an itch. It allows the HTML preview window in nvALT to show as clickable text that will jump to linked notes in the editor. You need to stick this script in the custom template for nvALT. This is located at . Well, it&rsquo;s supposed to be. If you&rsquo;re one of the many for whom nvALT failed to create the templates when you first ran it, you can download a clean one, or try out something like Lopash. The clean one already has this script embedded and ready to go (it just lacks any other features). If you&rsquo;re editing your own or using Lopash, here&rsquo;s the script that should be added right before the tag: Save the template to the above location and open nvALT with the preview window showing (Control-Command-P). Add a (press Command-Shift-L and start typing the name of a note) and you should immediately see the text become highlighted in the preview. Clicking it will open the related note. Hopefully that&rsquo;s helpful for some. I may build this into the default template, but I doubt I&rsquo;ll ever make it native functionality. This should work just fine for most intents and purposes. Let me know if you have any trouble",
		"keywords": ["editors","javascript","programming","clicking","command","control","hopefully","lopash","shift","above","added","allows","before","build","clean","clickable","create","custom","default","doubt","download","editing","editor","embedded","failed","features","first","friend","functionality","helpful","highlighted","lacks","linked","located","location","native","night","notes","nvalt","press","preview","ready","related","right","rsquo","scratch","script","short","showing","stick","supposed","template","templates","trouble","typing","using","window","worked"]
	},{
		"title": "Web Excursions for August 24, 2013",
		"url": "/2013/08/24/web-excursions-for-august-24-2013/",
		"tags": ["bookmarks","macos","openmeta","tagging"],
		"date": "Aug 24<span>th</span>, 2013",
		"ts": "1377376980",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. Convert OpenMeta to OS X Mavericks tags Zettt has written a script that converts OpenMeta to Mavericks tags. It requires the OpenMeta CLI binary, but seems to do the trick nicely! Global shortcut to add a marker in Logic Pro X For people recording in Logic Pro X while using other applications, this is a great trick to achieve a global hotkey for adding markers. Especially brilliant for podcasters. Leap Motion with Traktor, First Attempt Awesome. If my bad dance moves could productively make music&hellip; css-burrito A simple SASS/CSS framework to assist in implementing OOCSS, SSMACSS and MVCSS. That was a whole lot of acronyms. Dizzy? I really like the \"shame\" section in the file. A place to put quick hacks and fixes that you can clean up later, rather than leaving them strewn around the whole folder structure. Good thinking. Proudly Announcing My New Home - Digital Displacement I&rsquo;m happy to hear Tim Stevens (former Editor-in-Chief of Engadget) has found a good fit in a new environment. Tim is a good friend and I wish him the best in his new venture",
		"keywords": ["apple","logic","mavericks","motion","openmeta","traktor","announcing","awesome","check","chief","convert","digital","displacement","dizzy","editor","engadget","especially","first","global","logic","mvcss","mavericks","motion","oocss","openmeta","proudly","ssmacss","setapp","stevens","traktor","zettt","access","achieve","acronyms","adding","applications","assist","binary","brilliant","brought","burrito","clean","converts","dance","environment","excursions","fixes","folder","former","found","framework","friend","global","great","hacks","happy","hellip","hotkey","hundreds","implementing","later","leaving","marker","markers","monthly","moves","music","nicely","partnership","people","podcasters","productively","quick","rather","recording","requires","rsquo","script","section","seems","shame","shortcut","simple","strewn","structure","subscription","thinking","today","trick","using","venture","while","whole","written"]
	},{
		"title": "Scripting TaskPaper, mind maps, outliners and other fun",
		"url": "/2013/08/24/scripting-taskpaper-extra-info-plus/",
		"tags": ["applescript","hacks","macos","productivity","scripting","tagging","taskpaper"],
		"date": "Aug 24<span>th</span>, 2013",
		"ts": "1377370500",
		"summary": "I did some hacking on the excellent \"Extra Info\" script from Pedro Lobo. I wouldn&rsquo;t say I greatly improved it, but I did make a fine mess of the code. My goal was achieved, though: special tags create new files from templates with things like subject, source link, date, etc. all ready to go. Trigger it with FastScripts and you can add extended notes to any task using MindNode, Mindjet MindManager, OmniOutliner, iThoughtsX and nvALT. I won&rsquo;t go into a lot of details. Here&rsquo;s a somewhat hard-to-follow video I shot early this morning (Pedro has a much better one for the original script), and you can find more details on my modifications on GitHub. I&rsquo;m really putting it out there for others to hack on, but it&rsquo;s working surprisingly well for me",
		"keywords": ["fastscripts","github","mindjet","mindmanager","mindnode","omnioutliner","extra","extrainfo","fastscripts","github","mindmanager","mindnode","mindjet","omnioutliner","pedro","trigger","achieved","create","details","excellent","extended","files","greatly","hacking","ithoughtsx","improved","modifications","morning","notes","nvalt","original","others","putting","ready","rsquo","script","somewhat","source","special","surprisingly","templates","using","video","working","wouldn"]
	},{
		"title": "Brainstorming the brainstorm: workflows and ideas",
		"url": "/2013/08/23/brainstorming-the-brainstorm-workflows-and-ideas/",
		"tags": ["brainstorming","markdown","mindmapping","multimarkdown","notes","productivity","tools"],
		"date": "Aug 23<span>rd</span>, 2013",
		"ts": "1377266400",
		"summary": "This post expounds a bit on my various brainstorming workflows. None of them will be a perfect fit for anyone else, but the bits and pieces can be organized into a workflow that suits just about every need. I mention a few apps in this post for which there are a dozen alternatives. I&rsquo;m not going to list every possible application, but I&rsquo;ll offer a few to explore. Feel free to mention your favorite alternative in the comments! My ideas almost always start as \"scribbles,\" whether it&rsquo;s a single-line note to myself, a sketch, or a quick Markdown outline. Most of my scribbles are plain text, usually formatted as a Markdown list if it&rsquo;s more than just a single line. I use Drafts on my iPhone to append ideas to a Markdown file on the go, and nvALT on my desktop to brainstorm from scratch or further develop a note from Drafts. On occasions where an index card or napkin makes more sense for quick capture, I&rsquo;ll usually just snap a photo of the result using the iOS camera app or KitCam (no longer available on the app store). I save my photos to disk using Dropbox&rsquo;s camera import, and then manually rebuild notes as text or embed a sketch into a mind map. Once I have a quick outline, I convert this to a mind map for speedier brainstorming. I put together a script for making the conversion from Markdown to a mind map dead simple. Mind mapping allows me to quickly add ideas to any part of the idea and reorganize on the fly. If you&rsquo;ve never mind mapped before, it&rsquo;s easy to get started. You can do it with pencil (or markers) and paper, but I find it most effective when I use an application to do it. There are a variety available for both Mac and iOS (and Android). My preferred platform for mind mapping is OS X. Speed is of essence for me, and a desktop platform is best for quickly navigating and popping in ideas. While there are a slew of options available, my preferred apps are: MindNode A simple mind mapping application with great keyboard navigation. It can&rsquo;t handle notes, tags, file links, etc., but for rapid brainstorming it&rsquo;s an affordable and capable option. Mindjet MindManager A more expensive but very robust application that allows me to add notes to topics, link files and urls, create tasks and due dates, add metadata for associating tasks, drill down to filtered views and more. MindMeister A web-based mind mapping application that I use whenever I need to collaborate or&hellip;",
		"keywords": ["mindmeister","multimarkdown","omnifocus","omnioutliner","sublime","taskpaper","addendum","android","another","change","chewingpencils","collaboration","comments","composer","converting","criticmarkup","curio","delineato","depending","development","draft","drafts","dropbox","editorially","feature","finalizing","first","foldingtext","google","import","kitcam","lifehack","maptini","markdown","markdownediting","marked","mindmanager","mindmeister","mindnode","mindjet","mindmeister","multimarkdown","omnifocus","omnigraffle","omnioutliner","omnifocus","outlining","paper","primarily","scapple","scribbles","smartmarkdown","sometimes","speed","sublime","sublimetableeditor","taskpaper","taskpaper","twitter","watch","while","writing","ability","accept","achieve","added","affordable","again","allow","allows","almost","altering","alternatives","amazing","among","anyone","appears","append","apple","applications","article","associated","associating","available","backlink","based","because","before","begin","beginning","believe","between","boggling","brainstorm","brainstorming","brainstorms","brettterpstra","built","camera","capable","capture","carefully","catch","change","changes","check","choice","class","click","cohesive","collaborate","collaborating","collaboration","collaborators","collapse","collapsible","comfortable","coming","commenting","comments","completely","complexpoint","composer","consciousness","consider","conversations","conversion","convert","converted","converting","create","criticmarkup","curio","daringfireball","dates","deleted","delineato","demon","depending","describing","desktop","detailing","determined","develop","development","directly","document","documents","doesn","doing","downloaded","dozen","draftin","drafts","drawback","drill","easily","editing","editor","editorially","edits","effective","embed","endnotes","enough","entire","entirely","essence","excellent","expand","expensive","explanation","explanatory","explore","export","exported","exporting","expounds","extensive","extra","favorite","feature","features","files","filtered","finalization","finalizing","fleshed","fleshing","fnref","foldingtext","footnote","footnotes","forgot","format","formats","formatted","found","geared","github","going","google","great","group","handle","handles"]
	},{
		"title": "Sponsor: PDFpen for iPad from Smile",
		"url": "/2013/08/22/sponsor-pdfpen-for-ipad-from-smile/",
		"tags": [],
		"date": "Aug 22<span>nd</span>, 2013",
		"ts": "1377169200",
		"summary": "Another big thanks to Smile for sponsoring BrettTerpstra.com this week! Sign and return documents without printing or faxing, directly from your iPad. Fix typos and correct price lists immediately while an issue is foremost in your mind. Take PDF documents with you, and add notes, highlighting, and other markup during your mobile downtime. Sync with your Mac via iCloud or Dropbox. Retrieve and save documents via Evernote, Box, and Google Drive. Edit your PDFs anywhere you are with the complete, feature rich, mobile editing power of PDFpen for iPad. Get $5 off PDFpen for iPad, only $9.99 on the iTunes App Store, this week only",
		"keywords": ["document","drive","dropbox","format","google","icloud","pdfpen","portable","store","another","brettterpstra","drive","dropbox","evernote","google","pdfpen","retrieve","smile","sponsorship","store","syndicate","anywhere","directly","documents","downtime","editing","faxing","feature","foremost","highlighting","icloud","itunes","lists","markup","mobile","notes","price","printing","return","sponsoring","thanks","typos","while"]
	},{
		"title": "The Read & Trust Anthology",
		"url": "/2013/08/21/the-read-and-trust-anthology/",
		"tags": ["readandtrust","writing"],
		"date": "Aug 21<span>st</span>, 2013",
		"ts": "1377098700",
		"summary": "A complete anthology of the Read & Trust newsletter is now available. For $29 US you can read all of the great work published over the 10-month span of the newsletter by authors including Shawn Blanc, Matt Alexander, Patrick Rhone, Matt Gemmell, Federico Viticci, myself and many more. Over 160 pages of great articles by great authors. $29 gets you a PDF, ePub and MOBI versions of the collection. Check it out at the Read & Trust site",
		"keywords": ["alexander","federico","gemmell","mobipocket","patrick","rhone","viticci","alexander","blanc","check","federico","gemmell","patrick","rhone","shawn","viticci","anthology","articles","authors","available","collection","great","including","myself","newsletter","pages","published","versions"]
	},{
		"title": "Web Excursions for August 19, 2013",
		"url": "/2013/08/19/web-excursions-for-august-19-2013/",
		"tags": ["bookmarks"],
		"date": "Aug 19<span>th</span>, 2013",
		"ts": "1376939280",
		"summary": "Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there. iOS icon grabber for Pythonista Silouane Gerin converted my iOS icon search scripts for Pythonista on the iPad. I gotta catch up on my Python ports, but this is a great start. Editorial Workflow SearchLink SearchLink ported to Python and turned into an Editorial workflow. Thanks to Philip Lundrigan. Paperback A minimalist read-later service for Pinboard users. Very nice. Growl - AppleScript Rules Documentation for Growl One of the many things I hope to have time to play with&hellip; someday. Editorial for iPad: A Landmark in iOS Text Editors I linked Federico Viticci&rsquo;s post on Editorial, but equally worthy of mention is Macdrifter&rsquo;s post. Experience the awesome of Editorial from Gabe&rsquo;s perspective. Check out MindMeister and start brainstorming, collaborating, and boosting productivity",
		"keywords": ["applescript","federico","markdown","pinboard","python","pythonista","viticci","applescript","check","editorial","editors","experience","federico","gerin","growl","landmark","lundrigan","macdrifter","mindmeister","paperback","philip","pinboard","python","pythonista","rules","searchlink","silouane","thanks","viticci","workflow","awesome","boosting","brainstorming","brought","catch","collaborating","collaborative","converted","equally","excursions","gotta","grabber","great","hellip","later","linked","mapping","mention","minimalist","partnership","perspective","ported","ports","productivity","rsquo","scripts","search","service","software","someday","turned","users","workflow","worthy"]
	},{
		"title": "Converting Markdown to a mind map",
		"url": "/2013/08/18/markdown-to-mind-map/",
		"tags": ["markdown","mindmapping","popclip","service"],
		"date": "Aug 18<span>th</span>, 2013",
		"ts": "1376849160",
		"summary": "I&rsquo;m working on a \"Brainstorming workflow\" post right now, and in the process I realized I needed a better tool to turn quick Markdown/plain text scribblings into mind maps. I put together a script that will accept a variety of (logical) plain text outline formats and convert them into an indented list in your clipboard. The result is formatted so that pasting it into a mind mapping application will result in a perfect set of topics and nodes for expanding on the outline. I often start an idea in a text file, whether it&rsquo;s on my iPhone in Notesy, or in nvALT on my Mac. An outline can only go so far for me, though, so I usually end up taking it to a mind mapping application for further expansion. Most mind mapping applications (including MindNode, Mindjet MindManager, Curio, and MindMeister) accept indented text as an \"import\" option. In the cases of MindManager and MindNode, you can just hit V (paste) in a map to create the nodes from the clipboard. In Curio, just right click and choose \"Paste as&hellip; Mind Map.\" In MindMeister you have to save to a text file and import it, but it&rsquo;s still a very convenient way to start a map. I&rsquo;ve packaged the script as both a System Service and a PopClip extension. They both do the same thing; it&rsquo;s just two ways to access the script based on your preference. What the script does is take any \"logically\" formatted outline and turn it into a plain, tab-indented list in your clipboard. The input text can be any combination of Markdown lists, sequential headlines, paragraphs or indented text. Running the Service or PopClip extension on a basic list such as: You can also use sequential ATX-style headlines () to create topics, and you can mix in plain text and Markdown lists to create additional sub-nodes. The lowest level header becomes the top-level node. Another example with mixed formats: Basically, whatever format you outline in, the script should be smart enough to pick up on and convert for you. If you have a system that doesn&rsquo;t work, let me know! To use the script as a Service, download the zip file below, extract it and place it in ~/Library/Services (more info). Then, with outline text selected, right click and choose \"Markdown to Mind Map\" from the right-click menu. Markdown to MindMap v1.3 Download Markdown to MindMap v1.3 Convert plain text, Markdown headlines and Markdown lists to indented lists for pasting into mind mapping apps Published 08/18/13. Updated 01/09/&hellip;",
		"keywords": ["iphone","markdown","mindmeister","mindnode","omnioutliner","popclip","another","brainstorming","brett","changelog","convert","curio","donate","download","extensions","github","library","markdown","mindmanager","mindmap","mindmeister","mindnode","mindjet","notesy","paste","popclip","published","running","service","services","system","turns","updated","usage","accept","access","applications","available","based","basic","becomes","below","brainstorming","choose","click","clipboard","combination","convenient","convert","create","detailed","doesn","double","download","enough","example","expanding","expansion","extension","extensions","extract","format","formats","formatted","header","headlines","hellip","hopefully","iphone","import","including","indented","input","install","level","lists","logical","logically","lowest","mapping","mixed","needed","nicely","nodes","nvalt","often","others","outline","package","packaged","paragraphs","paste","pasting","preference","process","produces","quick","realized","repository","right","rsquo","scribblings","script","selected","sequential","showing","smart","solves","source","style","system","taking","together","tools","topics","useful","usually","variety","whatever","workflow","working","writing"]
	},{
		"title": "Nimblstand, a truly flexible iPad stand",
		"url": "/2013/08/17/nimblstand-a-truly-flexible-ipad-stand/",
		"tags": ["hardware"],
		"date": "Aug 17<span>th</span>, 2013",
		"ts": "1376760720",
		"summary": "The Nimblstand is a new iPad stand that offers some serious flexibility in a lightweight and portable format. It actually works with any tablet, and even works pretty well with most phones. I had the opportunity to try out a prototype of the Nimblstand for a while before it hit the market. I&rsquo;ve been impressed, and it&rsquo;s become my primary stand both at my desk and while I&rsquo;m working out and about. The feature I like the most is its integration with the Apple Bluetooth keyboard. You can slide the keyboard right into a slot on the stand and have a full-size keyboard to work with on your iPad, similar to the Origami. The Nimblstand is also designed to work fluidly with a Wacom Bamboo stylus, and has an internal storage slot and \"inkwell\" style holder for when it&rsquo;s in use. You can order a Bamboo right along with the Nimblstand for an extra $16. The primary feature of the Nimblstand, though, is its configurability. You can use it with any tablet in an upright position, with or without a keyboard attached. It has a wing on the back for support. The wing slides out and can be attached to the keyboard side to create a more compact form factor. In this configuration, the tablet slants back at a steeper angle, perfect for lap use or drawing. I&rsquo;ve come to prefer this angle on my desktop as well, positioned near my keyboard for a downward viewing angle and available at a glance without obstructing the rest of my desktop. I use the same angle for my iPhone. It&rsquo;s not the most aesthetically-refined piece of hardware you&rsquo;ll see. It&rsquo;s made of lightweight (but very sturdy) plastic and has some rough edges. In my opinion, its flexibility and portability make up for that. The Nimblstand sells for $49.95, and you can add the Bamboo Wacom stylus for a total of $66.95. Check it out at nimblstand.com",
		"keywords": ["apple","bamboo","bluetooth","iphone","nimblstand","wacom","apple","bamboo","bluetooth","check","nimblstand","origami","wacom","aesthetically","angle","attached","available","before","compact","configurability","configuration","create","designed","desktop","downward","drawing","edges","extra","feature","flexibility","fluidly","format","glance","hardware","holder","iphone","impressed","inkwell","integration","internal","keyboard","lightweight","market","nimblstand","obstructing","offers","phones","piece","plastic","portability","portable","position","positioned","prefer","primary","prototype","refined","right","rough","rsquo","sells","serious","similar","slants","slide","slides","stand","steeper","storage","sturdy","style","stylus","support","tablet","upright","viewing","while","working","works"]
	},{
		"title": "Editorial for iPad is here",
		"url": "/2013/08/15/editorial-for-ipad-is-here/",
		"tags": ["appstore","blogging","markdown","writing"],
		"date": "Aug 15<span>th</span>, 2013",
		"ts": "1376602920",
		"summary": "Editorial for iPad is out, and ready to change the face of iPad writing. I&rsquo;m not even going to tell you about it, since Federico Viticci has it more than covered ",
		"keywords": ["apple","federico","iphone","macstories","markdown","viticci","workflow","editorial","federico","viticci","change","covered","going","ready","rsquo","since","writing"]
	},{
		"title": "Systematic 57 with Dr. Drang",
		"url": "/2013/08/13/systematic-57-with-dr-drang/",
		"tags": ["podcast","systematic"],
		"date": "Aug 13<span>th</span>, 2013",
		"ts": "1376418780",
		"summary": "I had a truly great time getting to know \"Dr. Drang\" this week on Systematic. He may be a wee bit older than me, but I found a lot that we have in common. Kindred spirits, if you will. We discussed music and rock and roll history for a bit, then got into what it means to really dig deep on a subject, and how we choose what we&rsquo;re going to dig into. The top picks were a blast, and they may have run a bit long, but I had a lot to say&hellip; Thanks to Doc for joining me this week, and allowing the extra time to get it all in! Check out the episode at 5by5",
		"keywords": ["check","drang","kindred","systematic","thanks","allowing","blast","choose","common","discussed","episode","extra","found","getting","going","great","hellip","history","joining","music","older","picks","rsquo","spirits","truly"]
	},{
		"title": "Searchlink 1.6 update",
		"url": "/2013/08/09/searchlink-1-dot-6-update/",
		"tags": ["macos","searchlink","service"],
		"date": "Aug 9<span>th</span>, 2013",
		"ts": "1376077140",
		"summary": "Thanks to a catch and fix from Nathan Henrie, the SearchLink service has been updated to 1.6. It was snagging on matches where a preceded a Searchlink type of link and combining the url with the search command. This is remedied now, and thanks to Nathan for the fix! Download the update below, and see the source and Nathan&rsquo;s comments in the gist. SearchLink v2.3.92 Download SearchLink v2.3.92 Generate Markdown links from web searches without leaving your editor. Published 11/10/14. Updated 02/26/26. Changelog Donate &bull; More info&hellip",
		"keywords": ["searchlink","changelog","donate","download","henrie","markdown","nathan","published","searchlink","searchlink","thanks","updated","below","catch","combining","command","comments","editor","hellip","leaving","links","matches","preceded","remedied","rsquo","search","searches","service","snagging","source","thanks","updated","where"]
	},{
		"title": "Web Excursions for August 08, 2013",
		"url": "/2013/08/08/web-excursions-for-august-08-2013/",
		"tags": ["bookmarking","bookmarks","github","keyboard","markdown","pinboard","tools"],
		"date": "Aug 8<span>th</span>, 2013",
		"ts": "1375984800",
		"summary": "Web excursions brought to you in partnership with Backblaze. Back up everything. My Take on the Git Commit Logger A great take on my own git logger, this one runs every time you make a commit (using hooks). By removing the need for launchd jobs and dotfile lists, it becomes a simpler way to gather records of all your work in all your repos together for reference and remembering the good times. MOSX Tumblelog For Keyboard Maestro users, more Markdown macros! Even includes support for MultiMarkdown&rsquo;s new superscript and subscript features. A Pinboard Reading Library Great article on Macdrifter about Pinboard as a primary read-later and reference tool. Gitrep - Discover and Organize Github Repositories One of the nicest discovery tools for GitHub repositories I&rsquo;ve seen. There are a couple of cool features yet to be implemented (coming soon), but for finding related repos and exploring the magical jungle of GitHub, this is great. Leap motion controls hexapod with hand signals I feel like I might be under-using my Leap Motion. Backblaze securely backs up your entire computer to the cloud, affordably and reliably. I trust it with all my data. Check it out today",
		"keywords": ["github","markdown","motion","multimarkdown","backblaze","check","commit","discover","github","github","gitrep","great","keyboard","library","logger","macdrifter","maestro","markdown","motion","multimarkdown","organize","pinboard","reading","repositories","tumblelog","affordably","article","backs","becomes","brought","cloud","coming","commit","computer","controls","couple","discovery","dotfile","entire","everything","excursions","exploring","features","finding","gather","great","hexapod","hooks","implemented","includes","jungle","later","launchd","lists","logger","macros","magical","motion","nicest","partnership","primary","related","reliably","remembering","removing","repos","repositories","rsquo","securely","signals","simpler","subscript","superscript","support","times","today","together","tools","under","users","using"]
	},{
		"title": "Weather Geeklet, now in Russian",
		"url": "/2013/08/08/weather-geeklet-now-in-russian/",
		"tags": ["geeklet","geektool","nerdtool","weather"],
		"date": "Aug 8<span>th</span>, 2013",
		"ts": "1375970400",
		"summary": "Thanks to Alexandra Mumi, the GeekTool Weather geeklet now includes a Russian translation. That brings it up to 10 localizations, also including French, German, Dutch, Italian, Norwegian, Swedish, Polish, Spanish, and Japanese. For more information on the Geeklet, which brings desktop weather icon, summary and forecast to your desktop with GeekTool (see here for current version info) or NerdTool), see the original post. It&rsquo;s pretty easy to set up if you follow the instructions, and easy to localize for your own language. If you do create a new translation, let me know! Localized GeekTool Weather and Forecast v1.5 Download Localized GeekTool Weather and Forecast v1.5 Get the weather and forecast on your desktop in multiple languages. Includes French, German, Dutch, Italian, Norwegian, Swedish, Polish, Spanish, Russian, Catalan and Japanese with easy extensibility. Published 07/31/12. Updated 11/16/13. Changelog Donate &bull; More info&hellip",
		"keywords": ["dutch","french","geektool","german","language","spanish","translation","alexandra","catalan","changelog","donate","download","dutch","forecast","french","geektool","geeklet","german","includes","italian","japanese","localized","nerdtool","norwegian","polish","published","russian","spanish","swedish","thanks","updated","weather","brings","create","desktop","extensibility","forecast","geeklet","hellip","includes","including","information","instructions","language","languages","localizations","localize","multiple","original","rsquo","summary","translation","version","weather"]
	},{
		"title": "Sponsor: Igloo",
		"url": "/2013/08/08/sponsor-igloo/",
		"tags": [],
		"date": "Aug 8<span>th</span>, 2013",
		"ts": "1375959600",
		"summary": "A big thanks to Igloo for sponsoring BrettTerpstra.com this week! Igloo is now free to use with up to ten people, making it easier to work with your whole team, your customers or your partners. Your Igloo is built around apps you already know and love: blogs, calendars, file sharing, forums, microblog and wikis. Start building your Igloo instantly (no credit card required), or check out their awesome Sandwich Videos",
		"keywords": ["business","filesharing","igloo","syndicate","brettterpstra","igloo","sandwich","sponsorship","syndicate","videos","awesome","blogs","building","built","calendars","check","credit","customers","easier","forums","instantly","making","microblog","partners","people","required","sharing","sponsoring","thanks","whole","wikis"]
	},{
		"title": "The Chatology winners",
		"url": "/2013/08/07/the-chatology-winners/",
		"tags": ["giveaway","macos"],
		"date": "Aug 7<span>th</span>, 2013",
		"ts": "1375900320",
		"summary": "Thanks to everyone for entering, that was a record turnout. I&rsquo;ll be running some more giveaways in the near future, but the Giveaway Robot has requested a little vacation time. If you didn&rsquo;t win, you should still check out Chatology. It integrates so well with your system that it&rsquo;s as though the search features in Messages were just instantly improved",
		"keywords": ["apple","ichat","iphone","michael","simmons","store","chatology","giveaway","jacobs","kaizer","kopelchuk","messages","peter","robot","scott","thanks","today","wojciechowski","check","entering","everyone","features","giveaways","improved","instantly","integrates","little","lucky","record","rsquo","running","search","system","turnout","vacation","winners","woolane"]
	},{
		"title": "Twobiquity episode 14",
		"url": "/2013/08/07/twobiquity-episode-14/",
		"tags": ["interview","podcast"],
		"date": "Aug 7<span>th</span>, 2013",
		"ts": "1375882620",
		"summary": "I joined the guys at Twobiquity for episode 14. It was an interesting discussion about movies, TV, music and, my favorite, applications and Mac tools. Once I got used to the Aussie accents, I think we started making sense. It was fun either way, thanks to the Twobiquity crew for having me on. Check out the episode here",
		"keywords": ["episode","programs","television","aussie","check","twobiquity","accents","applications","discussion","either","episode","favorite","having","interesting","joined","making","movies","music","sense","started","thanks","think","tools"]
	},{
		"title": "Systematic 56 with Wesley Terpstra",
		"url": "/2013/08/06/systematic-56-with-wesley-terpstra/",
		"tags": ["podcast","systematic"],
		"date": "Aug 6<span>th</span>, 2013",
		"ts": "1375835640",
		"summary": "I had the pleasure of hosting another Terpstra on today&rsquo;s Systematic. My brother, Wesley, is an artist, teacher, student, husband and father, and he&rsquo;s pretty darn good at all of them. We talked about everything from perception to introversion, plus some discussion of heavy metal in its many varieties. Good times. Thanks to Wes for making the time in his schedule to join me. Check out the episode on 5by5",
		"keywords": ["studios","systematic","check","systematic","terpstra","thanks","wesley","another","artist","brother","discussion","episode","everything","father","heavy","hosting","husband","introversion","making","metal","perception","rsquo","schedule","student","talked","teacher","times","today","varieties"]
	},{
		"title": "VOX 1.0 is out, plus a treat",
		"url": "/2013/08/06/vox-one-point-oh-is-out/",
		"tags": ["macappstore","macos"],
		"date": "Aug 6<span>th</span>, 2013",
		"ts": "1375793400",
		"summary": "I wrote up my favorite new music player, VOX, this morning for TUAW. After working with the developers on the beta for a while, they&rsquo;ve offered my readers a special promotion. First, the premium radio upgrade is just $0.99 for a week. That&rsquo;s automatic on the App Store, no promo code needed. Next, they&rsquo;re giving anyone who uses the promo code here a free copy of their Wallpaper Wizard app ($9.99 US value). So click or tap on over to the promo page for the code! Sorry, this promo has ended",
		"keywords": ["apple","eastern","iphone","store","tutorials","first","sorry","store","wallpaper","wizard","anyone","automatic","click","developers","ended","favorite","giving","morning","music","needed","offered","player","premium","promo","promotion","radio","readers","rsquo","special","upgrade","value","while","working","wrote"]
	},{
		"title": "A Chatology giveway to make your day",
		"url": "/2013/08/05/a-chatology-giveway-to-make-your-day/",
		"tags": ["giveaway","macos","search","utility"],
		"date": "Aug 5<span>th</span>, 2013",
		"ts": "1375716960",
		"summary": "To top off the recent rash of software giveaways1, I have five copies of Chatology ($19.99 US value)! It&rsquo;s a Mac app that brings instant search to Messages, so you can quickly locate any chat you&rsquo;ve had. It can even (optionally) take over the Command-F key in Messages, so when you hit the find shortcut, it loads up, ready for instant search. Enter below for a chance to win. Five winners will be drawn randomly on Wednesday, August 7th, at Noon Central. The giveaway is open to everyone except residents of Quebec2. Sorry, this giveaway has ended. I know, it&rsquo;s been a lot of giveaways lately. Don&rsquo;t worry, I haven&rsquo;t become a clearing house. I just talk to a lot of developers and these all kind of landed together.&nbsp;↩ Wonder why?&nbsp;↩",
		"keywords": ["apple","canada","central","ichat","message","michael","quebec","simmons","central","chatology","command","enter","messages","quebec","sorry","voidinquebec","wednesday","wonder","backlink","below","brettterpstra","brings","chance","chatology","chatologyicon","class","clearing","contests","copies","developers","ended","endnotes","everyone","except","flexibits","fnref","footnote","footnotes","giveaway","giveaways","haven","height","house","https","image","instant","landed","loading","loads","media","noscript","noteref","optionally","original","picture","quebec","quickly","randomly","ready","recent","residents","reversefootnote","rsquo","search","shortcut","software","sorry","source","srcset","sweepstakes","title","together","uploads","value","width","winners","worry"]
	},{
		"title": "And the Fantastical winners are...",
		"url": "/2013/08/03/fantastical-winners/",
		"tags": ["giveaway","macappstore","macos"],
		"date": "Aug 3<span>rd</span>, 2013",
		"ts": "1375558920",
		"summary": "Pete and David only get the first half of the code and they have to guess the rest. That&rsquo;s what you get for only giving me the first half of your name. Just kidding. If you&rsquo;re on the list and didn&rsquo;t get an email, let me know. Thanks for playing, and be sure to check out Fantastical if you didn&rsquo;t win. Check back on Monday&hellip; Five copies of Chatology are on deck",
		"keywords": ["apple","fantastical","iphone","store","chatology","check","david","deville","fantastical","hogan","monday","oppenheimer","patrick","thanks","check","copies","email","first","giving","guess","hellip","kidding","playing","rsquo","winners"]
	},{
		"title": "Bullseye 0.3",
		"url": "/2013/08/01/bullseye-03/",
		"tags": ["bookmarklet","bullseye","javascript","markdown"],
		"date": "Aug 1<span>st</span>, 2013",
		"ts": "1375380000",
		"summary": "First, pressing escape after running the bookmarklet will now cancel it and you can resume browsing without refreshing the page. Next, if you want to skip the Marky preview frame with copy button, you can make a quick edit to the bookmarklet at the very beginning, adding after the and before the function: I also made a couple of tweaks to the path builder to help with getting the raw source when it&rsquo;s available. If you have the bookmarklet installed, it&rsquo;s already updated. If you want to switch to getting raw Markdown text back, just make the above edit. If you haven&rsquo;t installed it yet, just drag the link below to your bookmarks bar. If you run into issues on a particular page, I&rsquo;m happy to look at test cases. Just shoot me an email",
		"keywords": ["bookmark","bookmarklet","bullseye","javascript","markdown","marky","programming","bullseye","first","markdown","marky","above","adding","available","before","beginning","below","bookmarklet","bookmarks","browsing","builder","button","cancel","couple","email","escape","frame","function","getting","happy","haven","installed","issues","particular","pressing","preview","quick","refreshing","resume","rsquo","running","shoot","source","switch","tweaks","updated"]
	},{
		"title": "CopyPLUS for PopClip",
		"url": "/2013/08/01/copyplus-for-popclip/",
		"tags": ["extension","popclip"],
		"date": "Aug 1<span>st</span>, 2013",
		"ts": "1375359000",
		"summary": "Update: I somehow completely overlooked that this extension already exists (see Append on the main extensions page.) The differences are minor, though mine does account for some additional (rare) character encoding issues. Nothing you should swap out for if you&rsquo;re already using Append. I need to spend more time searching before I decide to solve problems. And sleeping. More sleeping. This is another quick extension for PopClip that I think is very useful. It appends the selection to the clipboard instead of overwriting it when you copy, letting you progressively build the contents of the clipboard. I use the C-C trick in LaunchBar all the time. You knew that was there, right? This just lets me do the same thing from PopClip. Note that it works for plain text only. It will convert the contents of your clipboard and the selected text to plain text when it runs, stripping any rich text styling, so don&rsquo;t be fancy1. Package updated with the new extension, and all source is available on GitHub. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip; If you wanted to, though, you could build something similar in AppleScript that maintained the RTF formatting, or play long enough with to make it work.&nbsp;↩",
		"keywords": ["clipboard","launchbar","plaintext","append","applescript","brett","brettspopclipextensions","changelog","donate","download","extensions","github","launchbar","markdown","nothing","package","popclip","popclipicon","prefer","published","tuvbv&#39;","updated","account","another","appends","available","background","backlink","before","blockquote","bretts","brettterpstra","build","changelog","character","class","clipboard","completely","contents","convert","cover","decide","description","differences","dlbox","donate","download","downloads","encoding","endnotes","enough","exists","extension","extensions","fancy","fathom","fnref","footnote","footnotes","formatting","github","gradient","height","hellip","highlighter","https","image","information","issues","language","launchbarclipboard","letting","linear","loading","maintained","media","minor","noscript","noteref","onclick","original","overlooked","overwriting","pbcopy","picture","pilotmoon","plaintext","popclip","popclipextensions","problems","progressively","projects","published","quick","repeat","reversefootnote","right","rouge","rsquo","searching","selected","selection","similar","sleeping","solve","somehow","source","spend","srcset","stripping","strong","style","styling","think","title","tools","trackgoal","trick","ttscoff","updated","uploads","useful","using","wanted","width","works","writing"]
	},{
		"title": "Sponsor: TextExpander touch 2.0",
		"url": "/2013/08/01/sponsor-textexpander-touch-2-0/",
		"tags": ["snippet","textexpander"],
		"date": "Aug 1<span>st</span>, 2013",
		"ts": "1375354800",
		"summary": "A huge thanks to Smile for sponsoring brettterpstra.com this week with TextExpander touch 2.0. TextExpander is one of my all-time favorite, absolute must-have applications, and the iOS version is awesome! Type faster on your iPhone or iPad using short abbreviations that expand into long snippets, such as email addresses, URLs, and standard replies. Tap in your abbreviation and it automatically expands to the full snippet. You can even insert today&rsquo;s date automatically with the default abbreviation \"ddate\"! Use Dropbox to sync your snippets to all your iOS and Mac devices! New in 2.0: Make customized, boilerplate replies fast and easy using fill-ins. Compose messages and expand snippets in formatted text. Insert macros for date, time, date math, etc. easily when editing your snippets on iOS. Please note that iOS does not allow TextExpander touch to work in the background (as it does in Mac OS X), but you can expand snippets directly in over 160 apps that have built-in TextExpander touch support including OmniFocus, Drafts, Things, iA Writer, DayOne, Byword, Notesy, Elements, and WriteRoom. See the complete list of supported apps",
		"keywords": ["iphone","omnifocus","textexpander","writeroom","byword","compose","dayone","drafts","dropbox","elements","notesy","omnifocus","smile","sponsorship","syndicate","textexpander","writeroom","writer","abbreviation","abbreviations","absolute","addresses","allow","applications","automatically","awesome","background","boilerplate","brettterpstra","built","customized","ddate","default","devices","directly","easily","editing","email","expand","expands","faster","favorite","formatted","iphone","including","macros","messages","replies","rsquo","short","snippet","snippets","sponsoring","standard","support","supported","thanks","today","touch","using","version"]
	},{
		"title": "A Fantastic(al) giveaway!",
		"url": "/2013/07/31/fantastical-mac-giveaway/",
		"tags": ["giveaway","macappstore","macos"],
		"date": "Jul 31<span>st</span>, 2013",
		"ts": "1375288080",
		"summary": "First off, welcome to the giveaways, most of Canada. I&rsquo;m still excluding Quebec for inane legal reasons, but everyone else is welcome to enter! I&rsquo;m excited to announce yet another giveaway. Hopefully you&rsquo;re not entirely bored with these yet, because I got you a great one: Fantastical for Mac from Flexibits! If you haven&rsquo;t seen Fantastical, it&rsquo;s a natural language calendar app which resides in your menu bar. Press a hotkey and type a sentence such as \"dinner with Aditi 5pm Sunday\" and the event is created in your calendar. It handles reminders, too. The interface for viewing upcoming events is slick and you can edit events and all their attributes without leaving the application. I use Fantastical daily, and can&rsquo;t remember the last time I launched Calendar. Sign up below for a chance at a copy of Fantastical ($20 US value). Five winners will be randomly drawn on Saturday, August 3rd, 2013 at Noon Central. One entry per person, and a valid email must be provided to receive your promo code. Then, watch on Monday for another insanely great giveaway from Flexibits! Sorry, this giveaway has ended",
		"keywords": ["apple","calendar","fantastical","keyboard","language","natural","shortcut","aditi","calendar","canada","central","fantastical","first","flexibits","hopefully","monday","press","quebec","saturday","sorry","sunday","announce","another","attributes","because","below","bored","calendar","chance","created","daily","dinner","email","ended","enter","entirely","entry","events","everyone","excited","giveaway","giveaways","great","handles","haven","hotkey","inane","insanely","interface","language","launched","leaving","legal","natural","person","promo","randomly","reasons","receive","remember","reminders","resides","rsquo","sentence","slick","upcoming","valid","value","viewing","watch","welcome","winners"]
	},{
		"title": "Systematic 55 with Erik Sagen",
		"url": "/2013/07/30/systematic-55-with-erik-sagen/",
		"tags": ["podcast","systematic"],
		"date": "Jul 30<span>th</span>, 2013",
		"ts": "1375219380",
		"summary": "My friend and co-worker Erik Sagen was this week&rsquo;s guest on Systematic. It was one of the most random and twisting conversation I&rsquo;ve ever recorded, but there were some gems that came out of it. Above all, I got to use a line from Saved. That was almost as much fun as slipping a line from Rushmore in when my wife was on. Erik is an expert web designer. If you&rsquo;ve ever visited TUAW, Joystiq, Massively or Engadget, you&rsquo;ve seen some of his work. He&rsquo;s also a father, a voice actor and a great guy who doesn&rsquo;t have a mean bone in his body. Seriously. When he thinks he&rsquo;s being cruel, he&rsquo;s acting like me when I think I&rsquo;m being sweet&hellip",
		"keywords": ["design","joystiq","rushmore","studios","twitter","above","check","engadget","joystiq","massively","rushmore","sagen","saved","seriously","systematic","acting","actor","almost","conversation","cruel","designer","doesn","episode","expert","father","friend","great","guest","hellip","random","recorded","rsquo","slipping","think","thinks","twisting","visited","voice","worker"]
	},{
		"title": "Comment extension for PopClip",
		"url": "/2013/07/30/comment-extension-for-popclip/",
		"tags": ["extension","markdown","popclip"],
		"date": "Jul 30<span>th</span>, 2013",
		"ts": "1375210800",
		"summary": "I added a new extension to my PopClip collection this morning. It creates comments of various syntax from selected text. It&rsquo;s called, creatively enough, the Comment Extension. By default it creates HTML comments (which work well in Markdown files, too). Holding down various keys creates other types: The bundle is updated with the new extension, you can download below. The source is all up on GitHub. Brett\\'s PopClip Extensions v1.45.6 Download Brett\\'s PopClip Extensions v1.45.6 A few PopClip extensions for Markdown writing and other useful tools Published 11/30/14. Updated 12/18/24. Changelog Donate &bull; More info&hellip",
		"keywords": ["github","markdown","brett","changelog","command","comment","donate","download","extension","extensions","github","holding","markdown","popclip","published","slash","updated","added","below","bundle","called","collection","comment","comments","creates","creatively","default","download","enough","extension","extensions","files","hellip","morning","rsquo","selected","source","syntax","tools","types","updated","useful","various","writing"]
	},{
		"title": "Precise web clipping to Markdown with Bullseye",
		"url": "/2013/07/30/precise-web-clipping-to-markdown-with-bullseye/",
		"tags": ["bookmarklet","bullseye","javascript","markdown"],
		"date": "Jul 30<span>th</span>, 2013",
		"ts": "1375191000",
		"summary": "GrabLinks went over pretty well, so I&rsquo;ve been motivated to finish up a similar project I had going. It&rsquo;s called Bullseye, and it lets you click a section of a webpage and \"Markdownify\" just that content. It&rsquo;s like Readability, but you get to just tell it which part is the good stuff. I improved the rollover highlighting so that it doesn&rsquo;t highlight every parent element, just the one it&rsquo;s actually going to grab. I added this fix to GrabLinks as well, so if you have that installed you should already be seeing the improvement. Like GrabLinks, Bullseye loads from a GitHub Gist and will \"auto-update\" when I make changes. No need to keep reinstalling it. I also improved the relative-url-to-absolute tricks, so images in the page that are locally linked will still work when you preview the Markdown elsewhere. It does some basic stripping of Twitter and App.net share links as well, but nothing terribly complete. Just drag the link below to your bookmarks bar. If that causes trouble, just right click it and copy the link, then create a new bookmark and paste it in as the link. Making use of it is simple. On a page containing content you&rsquo;d like to clip for later or archiving, just click the Bullseye bookmarklet in your menu bar and then hover over the page. Once it loads, you&rsquo;ll see red outlines follow your cursor around. Position your mouse so that the red outline surrounds the content you want (and nothing beyond it), then click. A second later you&rsquo;ll be looking at a Markdown version, ready to copy and paste. If you&rsquo;re using nvALT, just open it and type V to create a new note. It&rsquo;s kind of a cool trick. I was running into really messy situations just grabbing innerHTML from the clicked elements, mostly because of the dynamic nature of the web and the amount of crud stuck in the DOM. I needed the raw source code for that element. I ended up parsing up the tree and generating a selector for the target element using available ids, classes, tag names and indexes translated to or . Then I just pass that to jQuery.load and get the source fragment I need. On the off chance that that fails or the site&rsquo;s content is Ajax-loaded and not in the source, it falls back to innerHTML. I originally planned this to be Ajax and not leave the page (like GrabLinks), but the request URIs got too large in many cases and I had to switch to generating a temporary form, filling in the values and submitting it to&hellip;",
		"keywords": ["bullseye","grablinks","markdown","marky","bullseye","github","grablinks","installation","making","markdown","markdownify","marky","position","readability","technical","twitter","using","absolute","added","allow","amount","archiving","available","basic","because","below","beyond","bookmark","bookmarklet","bookmarks","called","causes","chance","changes","classes","click","clicked","containing","content","couple","create","cursor","details","doesn","dynamic","element","elements","elsewhere","ended","execute","extracts","fails","falls","filling","finish","fragment","generating","getting","going","grabbing","highlight","highlighting","hover","images","improved","improvement","indexes","innerhtml","installed","jquery","later","leave","linked","links","loaded","loads","locally","looking","manually","messy","mostly","motivated","mouse","names","nature","needed","notes","nothing","nvalt","optionally","originally","outline","outlines","parameters","parent","parsing","passing","paste","planned","point","preview","project","ready","reinstalling","relative","return","right","rollover","rsquo","running","second","section","seeing","selector","sending","share","similar","simple","situations","snippets","source","stick","straight","stripping","stuck","stuff","submitting","surrounds","switch","target","temporary","terribly","title","titles","translated","trick","tricks","trouble","useless","using","usually","values","version","webpage","works"]
	},{
		"title": "Mavericks and Tagging",
		"url": "/2013/07/28/mavericks-and-tagging/",
		"tags": ["apple","finder","macos","search","spotlight","tagging","tools"],
		"date": "Jul 28<span>th</span>, 2013",
		"ts": "1375023600",
		"summary": "The next version of OS X (Mavericks) is going to have file tagging capabilities built directly into Finder (as well as save dialogs and iCloud browsers). In fact, it works in the same way as OpenMeta &ndash; the system I&rsquo;ve espoused all these years &ndash; using metadata on the file itself to store the information and expose it to Spotlight. Apple is on the tagging train, and I&rsquo;m certain they&rsquo;ll be conducting it in short order. For the average Mac user, tagging is probably an idea that will take some getting used to, and it may seem like a novelty at this point. However, there lies at its heart a major shift in the way we think about the filesystems we&rsquo;ve worked with for decades. The core concept behind tagging on a computer is that your documents, photos and other files no longer need to have a specific location in the filesystem in order to create relationships (from the user&rsquo;s perspective, anyway). Apple has long desired to move away from the idea of deeply-nested folders and an obvious filesystem (an idea that, in reality, probably began at NeXT). Spotlight, Saved Searches and other file-locating tools have been in OS X for a long time. In my opinion they&rsquo;re still undervalued by most Mac users, but Apple is planning to change that. Consider iOS. Do you know exactly where you save documents created by each app? Probably not, because you&rsquo;re not supposed to have to think about it. Organization can get to be a pain in many iOS apps, though. Granted, you probably don&rsquo;t have as many files on your iOS device as you do on your Mac, but even with a fraction of the number it&rsquo;s not easy to search, especially across applications. Tagging is one of the missing pieces in this puzzle. Sandboxing and iCloud are bringing about the removal of folders from our daily lives, for better or worse. Our filesystem is getting more and more opaque as we save documents into iCloud containers we can&rsquo;t locate and are unable to see from other apps. It&rsquo;s still possible to work around (see: Cloud Mate), but it&rsquo;s only going to keep going in this direction as Apple exerts more control over the software ecosystem surrounding it. So, why does OS-native tagging matter in all of this? Isn&rsquo;t it just something nerds do? Apple&rsquo;s Mavericks preview reads: Tags are a powerful new way to organize and find your files, even documents stored in iCloud. While I scoff at the idea that tagging is \"new,\"&hellip;",
		"keywords": ["apple","finder","icloud","macintosh","maverick","operating","spotlight","system","apple","because","clair","cloud","consider","default","defaultfolderx","finder","folder","granted","hopefully","houdahspot","however","ironic","mavericks","offering","openmeta","organization","organized","rolling","sandboxing","saved","searches","simply","software","spotlight","tagging","while","across","aliases","allows","another","anyway","apart","apple","applications","associate","average","backlink","badder","based","beauty","because","before","began","behind","bigger","binder","blockquote","board","bound","brettterpstra","bring","bringing","browsers","built","capabilities","carpet","caseapps","certain","change","class","cloud","compartmentalized","computer","concept","conducting","containers","content","contexts","control","create","created","daily","decades","deeply","desired","developers","device","dialogs","direction","directly","disappearing","documents","drive","duplication","ecosystem","endnotes","entire","especially","espoused","everything","exerts","exist","expose","favorite","files","filesystem","filesystems","filetype","filing","filter","finder","findertags","flotilla","flying","fnref","folder","folders","footnote","footnotes","fraction","functionality","gesture","getting","giving","going","google","having","heart","height","hierarchies","hoping","houdah","houdahspot","https","hurdle","icloud","image","implications","improvement","information","integral","integrate","ironicsoftware","itself","killing","ldquo","lives","loading","locating","location","longer","major","makes","masses","maverick","media","metadata","mindset","missing","mostly","motivation","multiple","native","ndash","nerdery","nerds","nerves","nested","noscript","noteref","novelty","obvious","opaque","openmeta","opposed","organize","organized","original","others","party","perspective","photos","picture","pieces","pinched","planning","point","portable","possible","posted","powerful","practices","preferred","preview","productive","project","pulling","puzzle","rapidly","rdquo","reads","reality","related","relationships","relief","removal","retrieve","reversefootnote"]
	},{
		"title": "The 2x myPhoneDesktop winners!",
		"url": "/2013/07/27/2x-myphonedesktop-winners/",
		"tags": ["giveaway","iphone","macos"],
		"date": "Jul 27<span>th</span>, 2013",
		"ts": "1374946440",
		"summary": "In no particular order, here are the randomly-chosen winners of the 2x myPhoneDesktop giveaway. Each winner receives two promo codes: If you&rsquo;re listed and haven&rsquo;t heard from the Giveaway Robot yet, check your spam folder, then contact me and we&rsquo;ll straighten it out. Thanks for playing. Watch for a couple more great giveaways next week",
		"keywords": ["iphone","giveaway","hjalte","hoffman","lizzie","mstrup","night","poulsen","robot","steriotis","thanks","watch","yannis","check","chosen","codes","contact","couple","folder","giveaway","giveaways","great","haven","heard","listed","myphonedesktop","particular","playing","promo","randomly","receives","rsquo","straighten","winner","winners"]
	},{
		"title": "Sponsor: HostGator",
		"url": "/2013/07/25/sponsor-hostgator/",
		"tags": [],
		"date": "Jul 25<span>th</span>, 2013",
		"ts": "1374750000",
		"summary": "Web hosting is many things to many people. Grandma wants to start a knitting blog? WordPress. New tech start-up needs a server to present their minimum viable product? Ruby on Rails, PHP, and MySQL. HostGator has you covered, and with one-click installs via the proprietary QuickInstall application, free with every hosting plan. HostGator is with you every step of the way. The Texas-based, award-winning support staff is available via telephone, LiveChat, and email 24/7/365. From Shared plans, for just a few dollars per month, up to custom Dedicated servers and featuring both Linux and Windows hosting platforms, HostGator has a hosting solution for everyone. Have you ever considered a side business providing hosting services to your own clients? Perhaps you&rsquo;re a web designer and want to add hosting value for your clients; a HostGator Reseller plan is the answer",
		"keywords": ["dedicated","hostgator","hosting","linux","livechat","mysql","service","wordpress","dedicated","grandma","hostgator","linux","livechat","mysql","perhaps","quickinstall","rails","reseller","shared","sponsorship","syndicate","texas","windows","wordpress","answer","available","award","based","business","click","clients","considered","covered","custom","designer","dollars","email","everyone","featuring","hosting","installs","knitting","needs","people","plans","platforms","product","proprietary","providing","rsquo","server","servers","services","solution","staff","support","telephone","value","viable","wants","winning"]
	},{
		"title": "Web Excursions for July 24, 2013",
		"url": "/2013/07/24/web-excursions-for-july-24-2013/",
		"tags": ["bookmarks","canvas","github","themes"],
		"date": "Jul 24<span>th</span>, 2013",
		"ts": "1374692640",
		"summary": "Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app. 21 Pictures That Will Restore Your Faith In Humanity I&rsquo;m a sucker, yes, but this literally had tears running down my face. Two minutes of Fox News can fix it if you find yourself with too much faith in humanity, though. Why Companies Kill Products We Love A level-headed perspective from my friend Brad Hill on \"sunsetting,\" with a focus on Yahoo! and Google. Definitely worth a read if you&rsquo;re feeling spiteful about Reader. MOSX Tumblelog Some quick tips for making the most of the mind mapping app MindNode. Via Macdrifter. Replicating the Doom Screen Melt with JavaScript and Canvas Limited use cases, but a very cool retro effect using Canvas and a little scripting. Twilight theme, tweaked My tweaked version of Twilight for TextMate and Sublime Text. I&rsquo;ve looked long and hard for a theme I like better, but this suits my personal tastes for code editing perfectly. I still use MarkdownEditing for prose. I&rsquo;ll make a more official post on this (and try to get it into Package Control) after a few updates",
		"keywords": ["canvas","facebook","google","javascript","markdown","textmate","yahoo","canvas","cleanmymac","companies","control","definitely","faith","google","humanity","javascript","limited","macdrifter","markdownediting","mindnode","package","pictures","products","reader","replicating","restore","screen","sublime","textmate","tumblelog","twilight","yahoo","brought","editing","excursions","faith","feeling","focus","friend","headed","humanity","level","literally","little","looked","making","mapping","minutes","official","partnership","perfectly","personal","perspective","prose","quick","retro","rsquo","running","scripting","speed","spiteful","sucker","suits","sunsetting","tastes","tears","theme","tools","tweaked","updates","using","version","worth"]
	},{
		"title": "Bash image tools for web designers",
		"url": "/2013/07/24/bash-image-tools-for-web-designers/",
		"tags": ["function","scripting","shell","terminal"],
		"date": "Jul 24<span>th</span>, 2013",
		"ts": "1374671220",
		"summary": "Here are a couple of my Bash functions for people who work with images in CSS or HTML. Nothing elaborate, just things that supplement my typical workflow. First, a shell function for quickly getting the pixel dimensions of an image without leaving the shell. This trick can be incorporated into more complex functions in editors or other shell scripts. For example, when I add an image to my blog, a similar trick automatically includes the dimensions in the Jekyll (Liquid) image tag I use. You can, of course, take the $height and $width variables it creates and modify the output any way you like. You could output a full image tag using , too. I often use data-uri encoding to embed images in my CSS file, both for speed and convenience when distributing. The following function will take an image file as the only argument and place a full CSS background property with a Base64-encoded image in your clipboard, ready for pasting into a CSS file. You can also do the same with fonts. I use this to embed a woff file. With a little alteration you can make versions for other formats, but usually when I&rsquo;m embedding fonts it&rsquo;s because the stylesheet is being used in a particular context with a predictable browser",
		"keywords": ["formats","image","jekyll","first","image","jekyll","liquid","nothing","alteration","argument","automatically","background","because","browser","clipboard","complex","context","convenience","couple","creates","dimensions","distributing","editors","elaborate","embed","embedding","encoded","encoding","example","fonts","formats","function","functions","getting","height","image","images","includes","incorporated","leaving","little","modify","often","output","particular","pasting","people","pixel","predictable","property","quickly","ready","rsquo","scripts","shell","similar","speed","stylesheet","trick","typical","using","usually","variables","versions","width","workflow"]
	},{
		"title": "2x Giveaway - Win TWO copies of myPhoneDesktop",
		"url": "/2013/07/23/2x-giveaway-win-two-copies-of-myphonedesktop/",
		"tags": ["desktop","giveaway","iphone","macos"],
		"date": "Jul 23<span>rd</span>, 2013",
		"ts": "1374614640",
		"summary": "I&rsquo;m continuing a streak of giveaways for some great apps. myPhoneDesktop has been among my favorite programs for a while now. You run it on your iPhone and/or iPad and use a desktop application to quickly send a variety of items (urls, images, contacts, etc.) from your Mac to your iOS devices quickly and easily. It integrates with a lot of desktop applications you probably already use. Version 2.0 was recently released with great set of new features. Check out the release notes to see what&rsquo;s new. You can even drag and drop to your iOS devices now! The developer is offering brettterpstra.com readers a \"2x\" giveaway, meaning each winner gets two promo codes; one for you, one to give to a friend or family member of your choosing. Five winners will be randomly drawn by the Giveaway Robot on Saturday, July 27th at Noon Central. Enter below for a chance at two copies of myPhoneDesktop ($4.99/ea, $10 value). Please use a valid email address to enter (emails are stored securely and trashed after the giveaway ends). Residents of Canada excluded, but I&rsquo;m very close to figuring out how to fix that. Next time, hopefully. Sorry, this giveaway has ended",
		"keywords": ["apple","iphone","itunes","macintosh","store","canada","central","check","enter","giveaway","residents","robot","saturday","sorry","version","address","among","applications","below","brettterpstra","chance","choosing","close","codes","contacts","continuing","copies","desktop","developer","devices","easily","email","emails","ended","enter","excluded","family","favorite","features","figuring","friend","giveaway","giveaways","great","hopefully","iphone","images","integrates","items","meaning","member","myphonedesktop","notes","offering","programs","promo","quickly","randomly","readers","recently","release","released","rsquo","securely","stored","streak","trashed","valid","value","variety","while","winner","winners"]
	},{
		"title": "Systematic 54 with Victor Agreda Jr.",
		"url": "/2013/07/23/systematic-54-with-victor-agreda-jr/",
		"tags": ["podcast","systematic"],
		"date": "Jul 23<span>rd</span>, 2013",
		"ts": "1374612060",
		"summary": "Victor Agreda Jr., Editor in Chief of The Unofficial Apple Weblog and an old friend of mine, guests this week to talk about his pursuits in comedy and magic, as well as the daily grind of Apple reporting and a broad array of tangents which were, as usual, my own fault. For the most part, anyway. Thanks to Victor for joining me this week. It was a blast. Check out the episode on 5by5",
		"keywords": ["apple","conference","developers","francisco","podcast","studios","worldwide","agreda","apple","check","chief","editor","thanks","unofficial","victor","weblog","anyway","array","blast","broad","comedy","daily","episode","fault","friend","grind","guests","joining","magic","pursuits","reporting","tangents"]
	},{
		"title": "The winners of the Oyster Giveaway",
		"url": "/2013/07/19/the-winners-of-the-oyster-giveaway/",
		"tags": ["giveaway","macappstore","macos"],
		"date": "Jul 19<span>th</span>, 2013",
		"ts": "1374255660",
		"summary": "Winners are picked at random by the Giveaway Robot. If you didn&rsquo;t receive an email with a code/link, please let me know! If you missed out, Oyster is an awesome Regular Expression builder/tester for Mac, and you can pick up a copy for $4.99 US on the Mac App Store",
		"keywords": ["apple","expression","languages","macintosh","programming","regular","store","banks","congratulations","expression","giveaway","joshua","lippman","mcgrath","nicolas","oyster","regular","robot","stoeckel","store","winners","awesome","builder","email","giveaway","missed","picked","random","receive","rsquo","tester","winners"]
	},{
		"title": "Going #iPadOnly",
		"url": "/2013/07/18/going-number-ipadonly/",
		"tags": ["bookreview","books"],
		"date": "Jul 18<span>th</span>, 2013",
		"ts": "1374165000",
		"summary": "Over the years, Michael Sliwinski has constantly impressed me with the thoughtful genius he puts into the multi-platform GTD app, Nozbe. Now he&rsquo;s put out a book called #iPadOnly. It&rsquo;s about why and how to use the iPad as a primary computer for all kinds of tasks. It details the reasoning behind Michael and his co-author, Augusto Pinaud, deciding to make the iPad their go-to device for everything, as well as tips for doing it yourself. If you&rsquo;ve ever been curious about the why and how of iPad computing, this is a great book to pick up. \"#iPadOnly\" is available from the iBookstore, Amazon (Kindle and Paperback) and Barnes & Noble. Check out the website for links and more information",
		"keywords": ["amazon","augusto","barnes","ibooks","iphone","kindle","michael","noble","nozbe","pinaud","sliwinski","amazon","augusto","barnes","check","kindle","michael","noble","nozbe","paperback","pinaud","sliwinski","author","available","behind","called","computer","computing","constantly","curious","deciding","details","device","doing","everything","genius","great","ibookstore","ipadonly","impressed","information","kinds","links","multi","platform","primary","reasoning","rsquo","tasks","thoughtful","website","years"]
	},{
		"title": "Web Excursions for July 17, 2013",
		"url": "/2013/07/17/web-excursions-for-july-17-2013/",
		"tags": ["bookmarks"],
		"date": "Jul 17<span>th</span>, 2013",
		"ts": "1374084000",
		"summary": "Web excursions brought to you in partnership with Setapp. Get access to hundreds of Mac and iOS apps for one low monthly subscription fee. First Look at Editorial for iPad I have been beta testing this and it&rsquo;s going to be a game-changer in the iOS Markdown Editing field. In the text editing and blogging fields in general, actually. Computer monitor Ambilight clone shows remarkable performance C&rsquo;mon. Aside from being a potentially distracting feature and the whole My Little Pony thing, this is freaking awesome. Testing made easier in Internet Explorer Get your free VM images for Fusion, Parallels and more. Windows installs with various versions of IE ready for testing. Interfacing Leap Motion with Arduino thanks to Node.js Holy cow. Awesome. get-location A command-line utility for getting your machines current location using CoreLocation in OS X. I run a lot of scripts that are only useful when my laptop is in a certain location. I do pretty well using ControlPlane, but this utility has a lot of potential scripting applications",
		"keywords": ["ambilight","arduino","explorer","internet","leapmotion","philips","ambilight","arduino","aside","awesome","check","computer","controlplane","corelocation","editing","editorial","explorer","first","fusion","interfacing","internet","little","markdown","motion","parallels","setapp","testing","windows","access","applications","awesome","blogging","brought","certain","changer","clone","command","distracting","easier","editing","excursions","feature","field","fields","freaking","general","getting","going","hundreds","images","installs","laptop","location","machines","monitor","monthly","partnership","performance","potential","potentially","ready","remarkable","rsquo","scripting","scripts","shows","subscription","testing","thanks","today","useful","using","utility","various","versions","whole"]
	},{
		"title": "Oyster Giveaway",
		"url": "/2013/07/17/oyster-giveaway/",
		"tags": ["giveaway","macappstore","macos"],
		"date": "Jul 17<span>th</span>, 2013",
		"ts": "1374071280",
		"summary": "It seems like only yesterday I was giving away copies of Briefly. Next thing I know, I&rsquo;m sitting here with five codes for Oyster, the regular expression testing app I reviewed a little while ago. The giveaway is open to everyone except residents of Canada1. Enter below, and use a valid email address (and a unique name). Entries are collected in a protected database and discarded after the giveaway. No email address shenanigans. Winners are drawn at random from all collected entries. Five copies of Oyster ($4.99 US value) will be given out on Friday, July 19th at noon(ish), at which time no more entries will be accepted. Sorry, this giveaway has ended. If anyone is well-versed in the Canadian laws surrounding giveaways and would like to help me work around this or narrow it down, please contact me. I&rsquo;m a legalese idiot.&nbsp;↩",
		"keywords": ["address","email","expression","oyster","programming","regular","briefly","canada","canadian","enter","entries","friday","oyster","sorry","winners","accepted","address","anyone","apple","backlink","below","brettterpstra","briefly","canada","class","codes","collected","contact","copies","database","discarded","email","ended","endnotes","entries","everyone","except","expression","fnref","footnote","footnotes","giveaway","giveaways","giving","height","https","idiot","image","itunes","legalese","little","loading","media","narrow","noscript","noteref","original","oyster","partnerid","picture","protected","random","regex","regular","residents","reversefootnote","reviewed","rsquo","seems","shenanigans","siteid","sitting","sorry","source","srcset","surrounding","testing","title","unique","uploads","valid","value","versed","while","width","winners","yesterday"]
	},{
		"title": "Systematic 53 with Jim Trouten",
		"url": "/2013/07/16/systematic-53-with-jim-trouten/",
		"tags": ["podcast","systematic"],
		"date": "Jul 16<span>th</span>, 2013",
		"ts": "1374000600",
		"summary": "I invited a local musician named Jim Trouten onto Systematic this week. I&rsquo;ve known Jim for quite a while and it was great to chat about music, touring, \"townies\" and some fun top picks. Hope you enjoy the show! Check it out at 5by5",
		"keywords": ["itunes","podcast","studios","twitter","check","systematic","trouten","enjoy","great","invited","local","music","musician","named","picks","rsquo","touring","townies","while"]
	},{
		"title": "The Briefly giveaway winners",
		"url": "/2013/07/16/the-briefly-giveaway-winners/",
		"tags": ["giveaway"],
		"date": "Jul 16<span>th</span>, 2013",
		"ts": "1373998380",
		"summary": "The giveaway robot has handed down his decisions in the Briefly Giveaway! If your name is listed below and you haven&rsquo;t received an email, please give me a shout. If you didn&rsquo;t win, be sure to check out Briefly in the App Store",
		"keywords": ["apple","appstore","iphone","itunes","macintosh","brett","briefly","bukowski","chris","giveaway","isaac","murchie","store","torben","below","check","decisions","email","giveaway","handed","haven","listed","promo","received","robot","rsquo","shout","winners"]
	},{
		"title": "Walking Desk update, July 15, 2013",
		"url": "/2013/07/15/walking-desk-update-july-15-2013/",
		"tags": ["fitness","furniture"],
		"date": "Jul 15<span>th</span>, 2013",
		"ts": "1373897460",
		"summary": "Here&rsquo;s a quick update on my walking desk and how things are going after the first couple of weeks. I&rsquo;ve allowed myself to follow a natural pattern and have settled into a groove where &mdash; looking at an 8-hour day &mdash; I&rsquo;m walking for three hours, standing for two and sitting for two hours, plus a lunch break where I get up and move around a little more. I generally start my day sitting for an hour while I get my morning affairs in order and drink my coffee, then start walking. As an aside, I&rsquo;m drinking less coffee, and feeling like I need it less to get going in the morning. My average speed is up to about 2.5 mph when I&rsquo;m working, but I find whenever I zone out a little I can crank up to 3-3.5 for a while to get the juices flowing again. I&rsquo;ve been ending my day with a 15-30 minute jog at about 4 mph. Nothing crazy, but a lot more than I could handle two weeks ago. I bought some Merrell Barefoot Run Trail Gloves, which I&rsquo;m finding perfect for the treadmill and hope will also be useful for jogging the trails near my house. I want to take this fitness kick outdoors while the Minnesota summer lasts. I also bought myself some running shorts and tank tops (I started out walking in jeans because that&rsquo;s all I ever really wear). Now that I&rsquo;ve found I can stick with this, I&rsquo;m finding it easier to justify buying sporty stuff that I would have laughed at before. The pounds aren&rsquo;t flying off, but I&rsquo;m OK with slow, steady progress. My endurance is growing more rapidly than my waist is shrinking, and I sense that my goals of mountain biking and rock climbing again are achievable. That makes me feel better about myself and I&rsquo;m finding myself being slightly less of a jerk to everyone around me (I tend to be negative and sarcastic). Without a doubt this decision has been a good one, and I&rsquo;m still feeling like it&rsquo;s something that I can stick with for the long haul. The idea of going back to sitting at a desk all day is completely unappealing, which I think is a great thing. I&rsquo;ve been too busy to actually clean my cables up to a point where I&rsquo;m comfortable sharing pictures of the setup, but I hope to get a little gallery up soon",
		"keywords": ["minnesota","recreation","sports","treadmill","barefoot","gloves","merrell","minnesota","nothing","trail","achievable","affairs","again","allowed","aside","average","because","before"